Linux(Ubuntu)中新创建的用户对 GPU 的访问

Linux(Ubuntu)中新创建的用户对 GPU 的访问

我有一台装有 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

我确实应该在阅读库文档时多加注意。感谢那些试图提供帮助的人!

相关内容