我的代码可以根据 GPU 的可用性,运行 GPU 内核或在 CPU 上运行相同的代码。它在运行时执行此操作,并且程序始终链接到 CUDA。
但是,我可能想在没有任何GPU。我们尝试在计算机上安装 CUDA 工具包,但libcudart
缺少该工具包。我该如何获取它?
台式机(配备 GPU)和网格机(没有 GPU)都运行 RHEL 6.7,我们对两者使用了 [实际上] 相同的 CUDA 安装程序,但没有选择网格上的驱动程序(因为没有 GPU,它可能会向我们发出警报)。
答案1
如果 nvidia 驱动程序无法访问 nvidia 设备,或者没有 nvidia 驱动程序,则 CUDA司机安装程序将失败。CUDA 驱动程序的一部分似乎是库的集合(如libcudart
和libcuda
),因此无法安装。
但是,如果你在另一台计算机上安装了 CUDA 驱动程序,并且
cp -r /usr/local/cuda/lib64/ /somewhere/else/cuda_libs
cp /usr/lib64/libcuda.so.1 /somewhere/else/cuda_libs/libcuda.so.1
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/somewhere/else/cuda_libs"
然后另一台计算机就可以使用 cuda 库了。显然,这不会神奇地创建一个设备,您也不需要尝试使用不存在的设备,但至少您链接到 cuda 的代码可以正常工作。
我已经在 RHEL 6.7 系统之间成功测试了这一点,但我不知道这个解决方案的普遍性如何。