ここでの構成に関する質問は、将来他の人に役立つことを願っています。
Khronos サイトから必要なすべてのファイルを含む "C:\openCLcode\include\" フォルダーを作成しました: http://www.khronos.org/registry/cl/
ここで、openCL を実行する Code::Blocks プロジェクトを作成したいと考えています。そこで、いくつかのサンプル コードを貼り付けて、インクルード パスを変更します。
私の.cファイルでは:
#include <C:\openCLcode\include\cl.h>
そして、そのcl.h
ファイル内で不平を言ったcl_platform.h
ので、そのパスも修正しました:
#include <C:\openCLcode\include\cl_platform.h>
今私が得る問題は次undefined reference to 'clGetPlatformIDs@12'
のとおりです。問題のある関数と行は次のとおりです。
cl_device_id create_device() {
cl_platform_id platform;
cl_device_id dev;
int err;
/* Identify a platform */
//////////////THIS IS THE LINE WITH ERROR:////////////
err = clGetPlatformIDs(1, &platform, NULL);
//////////////////////////////////////////////////////
if(err < 0) {
perror("Couldn't identify a platform");
exit(1);
}
/* Access a device */
err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &dev, NULL);
if(err == CL_DEVICE_NOT_FOUND) {
err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_CPU, 1, &dev, NULL);
}
if(err < 0) {
perror("Couldn't access any devices");
exit(1);
}
return dev;
}
インクルードスキームを本当に台無しにしたような気がします....誰かがこれについてもっと良い方法を勧めてもらえますか?
とても有難い