【问题标题】:Incorrect act OpenCl/C++ script on CPU and GPUCPU 和 GPU 上的错误行为 OpenCl/C++ 脚本
【发布时间】:2015-07-08 12:37:30
【问题描述】:

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

我在 GPU 上成功运行它并得到了正确的结果(当我尝试在 CPU 上运行它时,它给了我不正确的结果 0),然后我想在 CPU 上运行它,所以我安装了 Intel 驱动程序(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_CPU 时它给出了正确的结果,而当我放入 CL_DEVICE_TYPE_GPU 时它给出了错误的结果(0 看起来不起作用)。

预期输出:

315360000   0.345   0.349   0.345   9

错误的输出:

315360000   0   0   0   9

任何想法!

【问题讨论】:

  • 请展示一些重现问题的示例代码(即MCVE)。
  • 感谢@jprice,事实上我没有放代码,因为在我安装英特尔驱动程序以在 CPU 上运行它之前它正在 GPU 上(在同一台机器上)运行。
  • 听起来好像是某种竞争条件或未定义的行为导致它有时会导致断言失败。发布代码或最小示例会有所帮助。
  • @sabreitweiser,jprice,我添加了代码。
  • @RamiAqqad 太好了!如果到时候没有其他人回答,我会尽力回答。

标签: c++ opencl gpu cpu


【解决方案1】:

解决了:) 我根据此链接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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 2012-04-12
    • 2015-04-16
    • 2013-05-02
    • 1970-01-01
    相关资源
    最近更新 更多