OpenCL 不显示 Nvidia GPU

OpenCL doesn't display Nvidia GPU

希望这不是重复的,我确实环顾四周但如果我错了请纠正我。

我最近通过 Anaconda 安装了 pyopencl,它在我的 Intel CPU 上运行没有问题。但是,当我打电话时:

for platform in get_platforms():
    print(platform.name)

ctx = create_some_context()

for dev in ctx.devices:
    print(dev.name)

我得到的只有:

Portable Computing Language
Choose platform:
[0] <pyopencl.Platform 'Portable Computing Language' at 0x7f0ff2205020>
>> 0
Choice [0]:0
Set the environment variable PYOPENCL_CTX='0' to avoid being asked again.
pthread-Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz

我有 Nvidia GeForce GTX 1050 Ti,驱动版本是 390.87,CUDA 9.1,根据 Nvidia 发行说明应该是兼容的。我也是 运行 Linux Mint 19.1(如果相关的话),并且在涉及这些东西时我也有点菜鸟,因为我的背景是物理学,而不是计算机科学。

我在某处(我不记得在哪里)读到我应该有一个 nvidia.icd 文件,但目前只有 /home//anaconda3/etc/OpenCL/vendors 中的一个 pocl.icd 文件,我我不确定 how/where 获取 nvidia.icd 文件。

在此先感谢您的帮助,如果您需要更多信息,请告诉我!

编辑:添加了 get_platforms()

的结果

编辑 2:我能够在我的 /etc/OpenCL/vendors 目录中找到一个 nvidia.icd 文件。我将其复制到 Anaconda 目录,/home/<user>/anaconda3/etc/OpenCL/vendorspyopencl 现在将 Nvidia CUDA 识别为平台,将我的 GPU 识别为设备。

不幸的是,它仍在将任务加载到 CPU,但这很可能是因为我的代码,我还没有正确地弄清楚如何在 GPU 上创建上下文。

您的系统有多个OpenCL平台和设备,create_some_context只会选择一个。如果要使用特定设备,则需要使用 get_platforms()Platform.get_devices().

枚举可用的平台和设备

也许我的建议仅适用于笔记本电脑 (Intel CPU+Nvidia GPU+Linux) 而不是你的情况。前段时间用tensoflow的时候遇到这个问题

当 Nvidia 卡未出现在可用设备中时(@apemanzilla 回答),让我们检查一下您是否在 nvidia-settings [=] 中启用了 性能模式 18=]素数概况。 相反地​​省电模式只启用集成的Intel GPU。

中有关“Prime 东西”的更多详细信息:-)

这个问题有点陈旧,但我 运行 在尝试解决这个问题时,我在 Ubuntu [=22] 的 Conda 环境中有一个新安装的 PyOpenCL 包=],它没有在平台及其关联设备列表中列出我的 GPU。

OP 的第二次编辑,他从 /etc/OpenCL/vendors 复制了 nvidia.icd 文件对我有用,但感觉不对,所以我更深入地研究了 PyOpenCL documentation,建议除了 PyOpenCL 包外,还要做 conda install ocl-icd-system。 (请参阅该页面上有关 "Using vendor-supplied drivers" 的部分。)

这行得通,并为您提供了所有系统功能 -- 我认为这是一种比到处复制 .icd 文件更简洁的方法。

尝试:

sudo apt 安装 nvidia-opencl-icd

如果在 0x559e3a192fb0 处没有