CPU和GPU上的OpenCl / C ++脚本不正确

时间:2015-04-29 09:49:56

标签: c++ opencl gpu cpu

我已将OpenCl / C ++脚本转移到新机器(Intel(R)Core(TM)i5-4570 CPU @ 3.20GHz,NVIDIA TESLA C2070)。

我在GPU上成功运行它并且我得到了正确的结果(这时当我尝试在CPU上运行时它给我的结果不正确0),然后我想在CPU上运行它,所以我安装了英特尔驱动程序(http://wiki.tiker.net/OpenCLHowTo )。

当我编译它时,我遇到了这个问题:

Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions: Assertion `needed != ((void *)0)' failed!

我通过将-lglut -lGLU -lGL -lm -lpthread作为g ++的参数来解决这个问题。

现在的问题是,当我把CL_DEVICE_TYPE_GPU放入CL_DEVICE_TYPE_GPU时,它给我正确的结果,并且错误的结果(0看起来不起作用)。

预期产出:

315360000   0.345   0.349   0.345   9

输出错误:

315360000   0   0   0   9

任何想法!!

1 个答案:

答案 0 :(得分:0)

解决了:) 我根据此链接https://devtalk.nvidia.com/default/topic/498968/printing-all-opencl-devices-not-detecting-all-opencl-devices-under-windows/

中的代码进行了一些修改
    cl_int ret = clGetPlatformIDs(2, platforms, &ret_num_platforms);
cout << ret;
    //ret = clGetDeviceIDs( platforms[0], CL_DEVICE_TYPE_CPU, 1, &device_id, &ret_num_devices);  // Execute me on CPU
    ret = clGetDeviceIDs( platforms[1], CL_DEVICE_TYPE_GPU, 1, &device_id, &ret_num_devices); // Execute me on GPU