3

これは私が使用しているコンピューターであるため、AMD、NVIDEA、および Intel プラットフォームが搭載されています。ユーザーのコンピューターで使用するのに適したプラットフォームを知るにはどうすればよいですか? 私が今持っているのは、すべてのプラットフォームのプラットフォーム、デバイス、コンテキスト、およびキューを作成しようとするループです。いずれかの時点で失敗すると、次のプラットフォームが試行されます。

    readKernel();

    numPlatforms = getNumPlatforms(); TEST
    platforms = getPlatforms(); TEST
    for(int i = 0; i < numPlatforms; i++)
    {
        numDevices = getNumDevices(platforms[i]); TEST_AND_CONTINUE
        devices = getDevices(platforms[i], numDevices); TEST_AND_CONTINUE
        context = createContext(platforms[i], devices); TEST_AND_CONTINUE
        queue = getCommandQueue(context, devices[0]); TEST_AND_CONTINUE

        // all setup. can post info here ->  getDeviceInfo(devices[0]);
        break; 
    }
    program = createProgram(context, source); TEST
    buildProgram(program); TEST
    kernel = buildKernel(program, appName); TEST

それはそれを行う良い方法ですか、それともより良い方法はありますか?

4

2 に答える 2