gpt4 book ai didi

c++ - OpenCL 找不到平台?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:55 25 4
gpt4 key购买 nike

我正在尝试将 C++ API 用于 OpenCL。我已经安装了我的 NVIDIA 驱动程序并测试了我可以运行提供的简单 vector 加法程序 here .我可以用下面的 gcc 调用编译这个程序,程序运行没有问题。

gcc main.c -o vectorAddition -l OpenCL -I/usr/local/cuda-6.5/include

但是,我更愿意使用 C++ API 而不是 C 所需的非常冗长的主机文件。

我从 here 下载了 Khronos 的 C++ 绑定(bind)并将 cl.hpp 文件放在与我的其他 cl.h 文件相同的位置。该代码使用了一些 C++11,因此我可以使用以下代码编译代码:

g++ main.cpp -o vectorAddition_cpp -std=c++11 -l OpenCL -I/usr/local/cuda-6.5/include

但是当我尝试运行该程序时出现错误:

clGetPlatformIDs(-1001)

我还尝试了提供的示例 here以及提供更有用的错误消息。

No platforms found. Check OpenCL installation!

提供此错误的特定代码是这样的:

std::vector<cl::Platform> all_platforms;
cl::Platform::get(&all_platforms);
if(all_platforms.size()==0){
std::cout<<" No platforms found. Check OpenCL installation!\n";
exit(1);
}

这看起来很奇怪,因为 C 实现可以毫无问题地运行。任何见解将不胜感激。

编辑

C 实现实际上没有正确运行。每次加法都打印为零。检查 ret_num_platforms 也会返回 0。出于某种原因,我的设置无法找到我的 GPU。我错过了什么?我的安装包括分别通过 apt-get.run 文件安装的 nvidia-340 驱动程序和 cuda-6.5。

最佳答案

非常感谢@pasternak 帮助我解决了这个问题。然而,为了解决它,我最终需要避免基本上所有 ubuntu apt-get 调用安装,而只使用 cuda 运行文件进行完整安装。这是解决问题的方法。

  1. 清除现有的 nvidia 和 cuda 实现(sudo apt-get purge cuda* nvidia-*)
  2. CUDA toolkit archive 下载 cuda-6.5 工具包
  3. 重启电脑
  4. 切换到 ttyl (Ctrl-Alt-F1)
  5. 停止 X 服务器(sudo stop lightdm)
  6. 运行cuda运行文件(sh cuda_6.5.14_linux_64.run)
  7. 选择"is"并接受所有默认值
  8. 需要重启
  9. 切换到 ttyl,停止 X 服务器并再次运行 cuda 运行文件并选择"is"并为所有内容选择默认值(再次包括驱动程序)
  10. 更新 PATH 以包含 /usr/local/cuda-6.5/binLD_LIBRARY_PATH包括 /usr/local/cuda-6.5/lib64
  11. 重新启动
  12. 编译main.c程序(gcc main.c -o vectorAddition -l OpenCL -I/usr/local/cuda-6.5/include)
  13. 验证与 ./vectorAddition 一起工作

C++ API

  1. 从 Khronos 下载 cl.hpp 文件 here注意到它是 1.1 版
  2. 将 cl.hpp 文件与其他 cl header 放在 /usr/local/cuda-6.5/include/CL 中。
  3. 编译main.cpp (g++ main.cpp -o vectorAddition_cpp -std=c++11 -l OpenCL -I/usr/local/cuda-6.5/include)
  4. 验证它是否有效(./vectorAddition_cpp)

两个程序的所有输出都显示了 vector 之间相加的正确输出。

我个人觉得有趣的是,Ubuntu 的 nvidia 驱动程序似乎不能很好地与 cuda 工具包配合使用。可能只适用于旧版本,但仍然非常出乎意料。

关于c++ - OpenCL 找不到平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29171558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com