これは私が使用しているコンピューターであるため、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
それはそれを行う良い方法ですか、それともより良い方法はありますか?