oro*_*hen 11 nvidia cuda nvidia-optimus nvidia-prime
我在网上找到了六篇关于这个的帖子,但没有一个真正回答这个问题。
我想将我的 nvidia GPU 设置为仅进行计算,而不是驱动显示器。但是当我在 nvidia-prime 配置中切换到使用 Intel GPU 时,我无法再加载 nvidia 模块。
modprobe: ERROR: could not insert 'nvidia_352': No such device
Run Code Online (Sandbox Code Playgroud)
没有该模块,CUDA 显然无法工作。
那么 nvidia-prime 究竟是做什么导致无法加载模块的呢?它没有被列入黑名单。没有 xorg.conf 文件,那么系统如何知道使用英特尔 GPU 而不是离散 GPU?
我使用的是出厂安装了 Ubuntu 14.04 的 Dell 5510 Precision,我的 GPU 是 Quadro M1000M。
有些人建议使用 bumblebee,但这对于纯计算负载来说不是必需的。
此外,显然大黄蜂能够加载模块。那么它究竟在做什么呢?
更新:那么,为什么在经过数小时的尝试后,当我终于发布问题时,我似乎总是能找到答案。这实际上只是部分答案,但我正在做一些事情。
到目前为止,我已经确定 prime 至少做了两件事:
通过使用bbswitch重新打开 GPU,我现在可以加载 NVIDIA 模块。
但问题仍然存在:将系统配置为仅将 NVIDIA 卡用于计算的最佳方法是什么?
我应该将 nvidia-prime 设置为使用 Intel GPU,并尝试手动解开使 CUDA 工作的功能吗?
如何确保系统仍然使用 Intel GPU 进行显示?
我将如何简单地禁用 NVIDIA prime,并手动配置它?
或者我应该放弃并使用 Bumblebee 和 optirun?如果有的话,这有什么缺点?
有什么建议吗?
小智 5
就我而言,我发现 NVidia 卡实际上并未关闭,而我实际需要做的唯一一件事就是运行 CUDA 代码:
export LD_LIBRARY_PATH=/usr/lib/nvidia-352
Run Code Online (Sandbox Code Playgroud)
在我想运行它的 shell 中(我假设全局更改替代设置会破坏 compiz 等...)
为了达到这一点(在戴尔 Optiplex 7010 上,使用 Ubuntu 14.04、CUDA 7.5 和 GTX 980)我相信步骤是:
到目前为止,一切似乎都运行良好(nvidia-smi 看到卡,运行 cuda 样本,theano 使用卡,等等...)
我相信我至少找到了一个粗略的解决方案,如我原始帖子的更新中所述。我确实找到了两种解决方案,但我确信还有其他解决方案。
1 - 在 Intel 模式下使用 Prime,通过bbswitch重新启用 NVIDIA 卡,然后运行modprobe nvidia以加载模块并创建设备节点。
2 - 使用 Bumblebee optirun 启动 bash 会话,您可以在其中执行所有 CUDA 操作。
这两种解决方案都允许您使用板载显卡进行显示,同时使用 NVIDIA 卡进行计算负载。optirun 解决方案似乎更通用,但我更喜欢第一个,因为它的极简主义。
我希望有更多理解的人能够改进这个答案。
| 归档时间: |
|
| 查看次数: |
5529 次 |
| 最近记录: |