我有一台装有 Nvidia GPU 的台式计算机,上面安装了 Python 机器学习库 Theano。Theano 使用 GPU 执行某些计算。
当我启动 IPython 并导入 Theano 时,我会收到一条通知,告知我 GPU 正在使用。同样,当我运行测试脚本时,我也会收到一条确认信息。不过,我最近在我的计算机上添加了一个新用户,如下所示:
sudo useradd -m -g fbar -G plugdev -s /bin/bash -c "Foo Bar" fbar
在刚才描述的两种情况下,该用户无法访问 GPU,但这两种情况对我来说都是可行的。
我还会将此发布到 Theano 用户组中,因为我不确定这是操作系统级别、Python 级别还是模块级别的访问问题。如果您需要任何其他信息,请告诉我。
谢谢!
编辑:
根据 Rich 的建议,我尝试对两个用户使用 id。最初,第二个用户(无法访问 GPU)不在第一个用户所在的某些组中。我让他们都成为同一组的成员。因此,现在 id 为两个用户返回以下内容:
uid=1000(myusername) gid=1000(myusername) groups=1000(myusername),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
唯一的区别是第二个用户的 uid 和 gid 是 1001。他仍然无法访问 GPU。
输出
$ ls -l /dev/nvidia*
看起来像这样:
crw-rw-rw- 1 root root 195, 0 May 30 17:42 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 May 30 17:42 /dev/nvidiactl
还有其他建议吗?我会去看看这些列的含义。谢谢!
答案1
好吧,原来我搞错了。组权限等都没问题。我只需要在第二个用户的主文件夹中创建一个 .theanorc 文件,代码如下
[global]
device=gpu
我确实应该在阅读库文档时多加注意。感谢那些试图提供帮助的人!