由于我有一个 Intel HD 5000 并且希望 Blender 工作得更快一点,我试图让 Intel 的 OpenCL 支持在我的 Ubuntu 14.04 上工作。我安装了clinfo,ocl-icd-libopencl1以及来自英特尔的最新 OpenCL SDK(尽管它们似乎不再提供 deb 包,因此“正在安装”)。
现在“安装”了 OpenCL SDK,我得到以下内容/etc/OpenCL/vendors/:
intel64.icd -> /etc/alternatives/opencl-intel-runtime-icd
Run Code Online (Sandbox Code Playgroud)
并在/etc/alternatives/:
opencl-intel-runtime-icd -> /opt/intel/intel-opencl-1.2-4.6.0.92/opencl-1.2-4.6.0.92/etc/intel64.icd
opencl-libOpenCL.so -> /opt/intel/intel-opencl-1.2-4.6.0.92/opencl-1.2-4.6.0.92/lib64/libOpenCL.so
Run Code Online (Sandbox Code Playgroud)
所有符号链接似乎都设置正确。
然后的内容intel64.icd是:
/opt/intel/intel-opencl-1.2-4.6.0.92/opencl-1.2-4.6.0.92/lib64/libintelocl.so
Run Code Online (Sandbox Code Playgroud)
这也存在。
现在,当我打电话时,clinfo我得到:
E: -1
Run Code Online (Sandbox Code Playgroud)
并且 Blender 似乎也无法识别 OpenCL。
我现在没有想法,还有什么要测试的还是我错过了设置步骤?
编辑:
现在我执行了这个并得到以下内容:
clDeviceQuery Starting...
2 OpenCL Platforms found
CL_PLATFORM_NAME: Experiment Intel Gen OCL Driver
CL_PLATFORM_VERSION: OpenCL 1.1 beignet 0.3
OpenCL Device Info:
No …Run Code Online (Sandbox Code Playgroud) 我目前正在一台配备 AMD A8-5600K APU 和 Radeon R9 270X 的机器上运行 Ubuntu 16.04。amdgpu 驱动程序尚不支持我的卡,因此我无法在 GPU 上使用 OpenCL。但是,我看不出为什么 OpenCL 应用程序不能使用我的 CPU。
我已经安装了我能想到的所有软件包 - ocl-icd-libopencl1, ocl-icd-opencl-dev
, 等等。
我编写了一个简单的应用程序,它枚举了可用的 OpenCL 平台,但在clGetPlatformIDs()调用时失败了。我错过了什么?
编辑:我按照 SE6 的回答中的建议安装了 AMD APP SDK,但还没有出现任何平台。运行strace显示 OpenCL ICD 加载程序找不到libamdocl64.so.
进一步编辑:成功!我能够使用以下命令使其工作:
sudo ln -s '/opt/AMDAPPSDK-3.0/lib/x86_64/sdk/libamdocl64.so' \
/usr/lib/x86_64-linux-gnu/libamdocl64.so
Run Code Online (Sandbox Code Playgroud)
(替换/opt为您安装 AMD APP SDK 的路径。)
我已经安装了 CUDA Toolkit 5.0 和 nvidia-experimental-310 驱动程序。CUDA 示例可以正常工作,optirun但每个 OpenCL 应用程序都无法运行并显示错误调用clGetPlatformIDs函数。我已经尝试过来自 NVIDIA OpenCL SDK 的示例以及来自 PyOpenCL 的示例,我从源代码编译并使用了pip,但没有任何效果。为什么它不起作用?
我已在运行于 Ubuntu 12.10 的 ATI 混合图形系统上成功安装了 ATI Catalyst 驱动程序。我已经验证 OpenCL 和 OpenGL 独立工作;但是 OpenCL-OpenGL 互操作无法正常运行。我已经做了一些调试,但不知道从哪里开始。任何人都可以帮忙吗?
细节:
我的系统是运行 Ubuntu 12.10(应用所有更新)的 HP Envy 6,带有由 Radeon 7600m 和 Intel HD3000 组成的 ATI 混合图形系统。我按照以下说明安装了最新的 ATI Beta 驱动程序 (v. 12.11):
这样做我能够使 OpenGL 和 OpenCL 运行。 glxgears以 ~1200 fps 运行,并且 AMD APP SDK 功能中的所有 OpenCL-only 示例都按预期运行。但是,任何 OpenCL-OpenGL 互操作应用程序都无法启动X Error of failed request: BadMatch (invalid parameter attributes)错误。所有示例代码以前都在 Ubuntu 12.04 下使用包管理器 ATI 驱动程序运行。
为了获得更多调试信息,我运行了LIBGL_DEBUG=verbose /opt/AMDAPP/samples/opencl/bin/x86_64/SimpleGL. 这会检测到我的独立 GPU,似乎选择了正确的驱动程序,并检测到 OpenCL-OpenGL 互操作已启用:
$ …Run Code Online (Sandbox Code Playgroud) 我只是一个没有 OpenCL 的人,还是一个常见问题?
更新:似乎删除了一些东西/etc/OpenCL/vendors/nvidia.icd,它应该与nvidia-opencl-icd-331 一起安装,但它没有。
它始于 BOINC。它拒绝计算专门为我的 GPU 获取的Milkyway数据:
Starting BOINC client version 7.2.42 for i686-pc-linux-gnu
...
CUDA: NVIDIA GPU 0: GeForce GT 520 (driver version unknown, CUDA version 6.0,
compute capability 2.1, 1023MB, 999MB available, 156 GFLOPS peak)
...
Requesting new tasks for CPU and NVIDIA
App version needs OpenCL but GPU doesn't support it
Scheduler request completed: got 2 new tasks
[error] App version uses non-existent NVIDIA GPU
[error] Missing coprocessor …Run Code Online (Sandbox Code Playgroud) 在 16.04 上,OpenCL 与我的 Nvidia 840M 一起在 Ubuntu 存储库中运行最新的 Nvidia 驱动程序。
我已经为 18.04 进行了全新安装,但是使用了来自 Ubuntu 存储库(不是来自任何 PPA)的 390 Nvidia 驱动程序。现在我的 OpenCL 兼容应用程序都无法使用它。
一旦安装了 Nvidia 驱动程序,OpenCL 就应该可以工作,我错了吗?
我有一台带有 Ubuntu 10.10 和 Nvidia GTX 480 显卡的双 Xeon 机器,我想在 CPU 和 GPU 上使用 OpenCL。
我使用 apt-get 安装了最新的 Nvidia 驱动程序 (nvidia-current),并从 Nvidia 页面下载并安装了最新的 CUDA Toolkit (3.2)。
但这让我只能在 Nvidia GPU 上运行 OpenCL 代码,而不能在 CPU 上运行。
然后我在网上看了一些文章,说ATI SDK 能够在CPU 上运行OpenCL 代码。
我安装了最新版本的 ATI 驱动程序,然后尝试编译 SDK。
然后我就可以在 CPU 上运行代码,但不能再在 GPU 上运行了。
有没有办法在 Nvidia GPU 和 Xeon CPU 上运行 OpenCL 代码?
我在运行 Ubuntu 13.10 的机器上的 2x AMD Radeon HD 7870 上运行了一些 opencl 应用程序。
我打开机器电源,lightdm 有登录提示。因为每次我重新启动它时,我都无法亲自登录到机器。我想解决为什么 Opencl 在机器上重启后没有检测到 GPU。
如果我 ssh 进入机器并启动 opencl 作业,则无需登录 lightdm 。Opencl 不会“看到”GPU。
只有当我通过实际存在并登录到 lightdm 的方式登录到机器时,远程外壳才会“看到”GPU。
我不太了解 openCL 以提供更多信息,但这似乎是关于 ubuntu 如何初始化的。登录到 lightdm 控制台对图形驱动程序的状态有什么影响。
有什么方法可以“加载”驱动程序让 OpenCL 看到它。
奇怪的是,当 Opencl 无法“看到”GPU 时,lsmod 显示“fglrx”已加载并正在使用中。
#未登录 lightdm 和 ssh 会话报告的状态
# hari@hjubuntu:~$ ~/oepncl-program
Available device list:
Type: CPU, 'Intel(R) Core(TM)2 Quad CPU Q9450 @ 2.66GHz'
hari@hjubuntu:~$ lsmod
Module Size Used by
pci_stub 12622 1
vboxpci 23194 0
vboxnetadp 25670 0
vboxnetflt …Run Code Online (Sandbox Code Playgroud) 无论我如何尝试让 OpenCL 工作(sgminer、cgminer、c 编程示例,clinfo)
当我以 root 身份运行时,我只会得到一个结果。
当我clinfo不是以 root 身份运行时,我得到:
terminate called after throwing an instance of 'cl::Error'
what(): clGetPlatformIDs
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
我正在使用 AMD opencl 实现,并且 /etc/OpenCL/vendors 下确实存在正确的 ICD 文件。我更改了各种文件的权限但没有成功。
如何在没有 root 访问权限的情况下使其工作
我有一个全新的 Ubuntu 16.10 安装。我想针对 NVIDIA 版本的 OpenCL 进行测试(我需要跨设备的可移植性)。所以,我通过以下方式安装了 CUDA 工具包
sudo apt-get install nvidia-cuda-toolkit clinfo
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时,clinfo我得到的是:
Number of platforms: 0
Run Code Online (Sandbox Code Playgroud)
我也试图找到libOpenCL.so共享对象,但我无法在任何地方找到它。任何见解?
编辑
的输出 sudo lshw -C display
*-display
description: VGA compatible controller
product: VirtualBox Graphics Adapter
vendor: InnoTek Systemberatung GmbH
physical id: 2
bus info: pci@0000:00:02.0
version: 00
width: 32 bits
clock: 33MHz
capabilities: vga_controller bus_master rom
configuration: driver=vboxvideo latency=0
resources: irq:18 memory:e0000000-e0ffffff memory:c0000-dffff
Run Code Online (Sandbox Code Playgroud)
您会注意到这是一个虚拟机。这是我在旧操作系统(例如 14.04)上对所有内容进行原型设计并且之前使用 CUDA 完成的工作的地方。