当我运行我的 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 64 位环境,以及用于 GPGPU 的 NVIDIA GeForce GT 330。
*添加问题的编辑:clBuildProgram 中第三个参数的定义是“设备列表”,所以我认为“&device”是正确的。这样对吗?如果我错了,“设备列表”的确切含义是什么?