以没有 GPU 的非 root 用户身份安装 CUDA
Installing CUDA as a non-root user with no GPU
我有一个没有GPU的桌面,我想在上面开发代码;和一些集群上的一台机器,它有一个 GPU,安装了 CUDA,但我真的不能 "touch" 任何东西,我不会 运行 和 IDE 等。我不在任何一台机器上都没有 root 权限,我真倒霉。
所以,从本质上讲,我希望能够在我自己的无 GPU 台式机上编译和构建我的 CUDA 代码,然后只需复制它并在另一台机器上测试它。
尽管有两个阻碍因素,但能否做到这一点:我似乎记得 CUDA 安装程序需要有 GPU;玩弄内核;并做其他 root-y 的事情。
备注:
- 我将使用独立安装程序,而不是软件包。
- 我在 Fedora 22 上 x86_64 CPU.
假设您要开发使用 CUDA 运行时间 API 的代码,您可以将 cuda 工具包安装在没有 GPU 的系统。使用runfile installer method,在提示安装驱动程序时简单回答否。
如果您想(成功)编译使用 CUDA 驱动程序 API 的代码,该过程将需要 libcuda.so在你的机器上。该文件由驱动程序安装程序安装。有多种方法可以在没有 GPU 的机器上 "force" 将驱动程序安装程序 运行 。您可以通过提取驱动程序 运行 文件安装程序(或单独下载)并将 --help
命令行开关传递给安装程序以了解一些选项来开始。
当然,这些方法不允许您在没有 GPU 的机器上 运行 这些代码。此外,在我看来,将已编译的二进制文件从一台机器移动到另一台机器并期望它正确 运行 的过程很麻烦。因此我的建议是在目标机器上重新编译代码。否则,从一台机器到另一台机器将已编译的二进制文件 运行 是一个不是 CUDA 独有的问题,并且超出了我的回答范围。
如果你无意运行在非GPU机器上编译代码,并愿意在目标机器上重新编译,那么你可以开发驱动程序API 代码,即使没有 libcuda.so(或者有一个 libcuda.so 存根,您可以尝试 linking 仅用于编译测试目的,它由 CUDA 安装程序安装,如果您搜索为此:/usr/local/cuda/lib64/stubs)。如果您不 link 您的驱动程序 API 代码反对 -lcuda
,那么您当然会得到一个 link 错误,但考虑到前面所述,这应该无关紧要注意事项。
Fedora 22 是 not officially supported CUDA 7.5 或更早版本。 YMMV.
如果您没有 运行 驱动程序安装程序,则无需成为根用户即可执行任何操作。当然,您传递给安装程序的安装位置必须是您的用户权限允许访问的位置。
我有一个没有GPU的桌面,我想在上面开发代码;和一些集群上的一台机器,它有一个 GPU,安装了 CUDA,但我真的不能 "touch" 任何东西,我不会 运行 和 IDE 等。我不在任何一台机器上都没有 root 权限,我真倒霉。
所以,从本质上讲,我希望能够在我自己的无 GPU 台式机上编译和构建我的 CUDA 代码,然后只需复制它并在另一台机器上测试它。
尽管有两个阻碍因素,但能否做到这一点:我似乎记得 CUDA 安装程序需要有 GPU;玩弄内核;并做其他 root-y 的事情。
备注:
- 我将使用独立安装程序,而不是软件包。
- 我在 Fedora 22 上 x86_64 CPU.
假设您要开发使用 CUDA 运行时间 API 的代码,您可以将 cuda 工具包安装在没有 GPU 的系统。使用runfile installer method,在提示安装驱动程序时简单回答否。
如果您想(成功)编译使用 CUDA 驱动程序 API 的代码,该过程将需要 libcuda.so在你的机器上。该文件由驱动程序安装程序安装。有多种方法可以在没有 GPU 的机器上 "force" 将驱动程序安装程序 运行 。您可以通过提取驱动程序 运行 文件安装程序(或单独下载)并将
--help
命令行开关传递给安装程序以了解一些选项来开始。当然,这些方法不允许您在没有 GPU 的机器上 运行 这些代码。此外,在我看来,将已编译的二进制文件从一台机器移动到另一台机器并期望它正确 运行 的过程很麻烦。因此我的建议是在目标机器上重新编译代码。否则,从一台机器到另一台机器将已编译的二进制文件 运行 是一个不是 CUDA 独有的问题,并且超出了我的回答范围。
如果你无意运行在非GPU机器上编译代码,并愿意在目标机器上重新编译,那么你可以开发驱动程序API 代码,即使没有 libcuda.so(或者有一个 libcuda.so 存根,您可以尝试 linking 仅用于编译测试目的,它由 CUDA 安装程序安装,如果您搜索为此:/usr/local/cuda/lib64/stubs)。如果您不 link 您的驱动程序 API 代码反对
-lcuda
,那么您当然会得到一个 link 错误,但考虑到前面所述,这应该无关紧要注意事项。Fedora 22 是 not officially supported CUDA 7.5 或更早版本。 YMMV.
如果您没有 运行 驱动程序安装程序,则无需成为根用户即可执行任何操作。当然,您传递给安装程序的安装位置必须是您的用户权限允许访问的位置。