由于较新的驱动程序附带 CUDA 运行时(我可以在驱动程序下载页面中选择 9.1 或 9.2),我的问题是:我的库(内部使用 CUDA 内核)是否应该附带-lcudart_static
?
我在使用 9.1 CUDA 驱动程序的系统上启动使用 9.2 编译的内核时遇到问题。确保我的库在安装了最新 CUDA 驱动程序的任何地方运行的最“兼容”的方法是什么? (我已经在为虚拟架构进行编译)
由于较新的驱动程序附带 CUDA 运行时(我可以在驱动程序下载页面中选择 9.1 或 9.2)
不,那是不正确的。驱动程序下载页面中的该选择与每个 CUDA 版本都具有以下事实有关:与其关联的最低所需驱动程序版本 https://stackoverflow.com/questions/30820513/what-is-version-of-cuda-for-nvidia-304-125/30820690#30820690。这并不意味着该驱动程序附带了 CUDA 运行时(换句话说,该驱动程序不会在 Linux 上安装 libcudart.so,并且从未安装过 - 通过对全新安装进行一些仔细的实验,您可以向自己证明这一点。)
一些补充意见:
-lcudart_static
实际上是default对于当前/最新版本nvcc
。您可以通过阅读发现这一点NVCC 手册 https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#file-and-path-specifications。因此,默认情况下,您的可执行文件在编译/构建时使用nvcc
应该已经静态链接到对应版本的 CUDA 运行时库nvcc
您用于编译的。您可能需要指定此或类似内容的原因是,如果您正在使用例如构建应用程序gnu 工具链(在 Linux 上)而不是nvcc
.
正如您猜测的那样,静态链接到 CUDA 运行时库的目的是让应用程序能够以不需要安装 CUDA 工具包即可正常运行的方式构建。它只需要一台安装了正确 GPU 驱动程序的机器。
确保应用程序在安装了一系列 GPU 驱动程序的一系列计算机上运行的最兼容方法是使用oldest需要 CUDA 工具包来满足您想要涵盖的范围内最早的 GPU 驱动程序的需求。再次,你可以参考表格here https://stackoverflow.com/questions/30820513/what-is-version-of-cuda-for-nvidia-304-125/30820690#30820690.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)