OpenCl代码在CPU中运行,但在GPU中运行时效果良好

OpenCl代码在CPU中运行,但在GPU中运行时效果良好,opencl,gpu,nvidia,multicore,Opencl,Gpu,Nvidia,Multicore,我是OpenCL新手,我曾尝试使用cuda 5.5在Nvidia GeForce GTX 680中运行我的代码,但令人惊讶的是,在运行时成功编译我的代码后,它在cpu中提供了一个错误CLGetDeviceID-1。;但当我尝试在GPU上运行时,它工作得很好。我正在使用的compile命令: alias occ='g++ -I/home/software/local/opencl/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc -L/home/software

我是OpenCL新手,我曾尝试使用cuda 5.5在Nvidia GeForce GTX 680中运行我的代码,但令人惊讶的是,在运行时成功编译我的代码后,它在cpu中提供了一个错误CLGetDeviceID-1。;但当我尝试在GPU上运行时,它工作得很好。我正在使用的compile命令:

alias occ='g++ -I/home/software/local/opencl/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc -L/home/software/local/opencl/NVIDIA_GPU_Computing_SDK/OpenCL/common/lib/x64 -lOpenCL 

我正在从CPU改为GPU的部分代码是

clGetDeviceIDs( platform_id, CL_DEVICE_TYPE_CPU, 1, &device_id, &ret_num_devices );

要在多核CPU中运行opencl代码,我必须做哪些更改?

您必须更改平台:NVIDIAs opencl实现仅适用于NVIDIA GPU。如果你想在CPU上运行OpenCL,你需要AMD或Intel的OpenCL实现,他们支持CPU。并行安装两个OpenCL实现可能有点麻烦,clGetPlatformID获得的平台顺序可能会改变,但这是可能的。@Macro13:谢谢你的建议。我尝试过很多事情,但失败了,现在我知道了解决办法。
clGetDeviceIDs( platform_id, CL_DEVICE_TYPE_CPU, 1, &device_id, &ret_num_devices );