opencl プログラムを実行すると、clBuildProgram で「Segmentation fault」というメッセージが表示されます。このプログラムのコンパイル中にエラー メッセージは表示されませんが、実行すると「セグメンテーション違反」が表示されます。Opencl API を次のようにまとめました。私のコードに間違いはありますか?
clGetPlatformIDs(1, &platform, &num_platforms);
status = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, &num_devices);
cl_context context = clCreateContext(NULL, 1, &device, NULL, NULL, NULL);
queue = clCreateCommandQueue( context, device, 0, NULL);
cl_program program = clCreateProgramWithSource( context,1,&str,NULL, NULL);
cl_int result = clBuildProgram(program, 1, &device, NULL, NULL, NULL);
私も次のように実行しようとしましたが、同じ問題が発生します。
cl_int result = clBuildProgram(program, 0, NULL, NULL, NULL, NULL);
ところで、Linux Ubuntu 10.04 64bit の環境で、GPGPU には NVIDIA GeForce GT 330 を使用しています。
※質問追加のため編集:clBuildProgramの第3引数の定義は「デバイスリスト」なので、「&device」でいいと思います。そうですか?私が間違っている場合、「デバイス リスト」の正確な意味は何ですか?