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