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/vendors
和 pyopencl
现在将 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 处没有
希望这不是重复的,我确实环顾四周但如果我错了请纠正我。
我最近通过 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/vendors
和 pyopencl
现在将 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。
这个问题有点陈旧,但我 运行 在尝试解决这个问题时,我在 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 处没有