cudart_static-何时需要?

时间:2018-07-02 13:47:41

标签: cuda nvcc

由于CUDA运行时附带了较新的驱动程序(我可以在驱动程序下载页面中选择9.1或9.2),所以我的问题是:我的库(内部使用CUDA内核)应该与-lcudart_static一起提供吗?

我在使用9.1 CUDA驱动程序的系统上启动用9.2编译的内核时遇到问题。确保我的库在安装了最新CUDA驱动程序的任何地方运行的最“兼容”方式是什么? (我已经在为虚拟架构进行编译了)

1 个答案:

答案 0 :(得分:0)

  

由于CUDA运行时附带了较新的驱动程序(我可以在驱动程序下载页面中选择9.1或9.2)

不,那是不正确的。驱动程序下载页面中的选择与每个CUDA版本都具有a minimum required driver version associated with it的事实有关。这并不意味着该驱动程序随CUDA运行时一起提供(换句话说,该驱动程序未在Linux上安装libcudart.so且从未安装过-经过全新安装的仔细试验,您可以自己证明一下。)

一些其他评论:

-lcudart_static实际上是nvcc当前/最新版本的默认值。您可以通过阅读the nvcc manual来发现这一点。因此,默认情况下,在使用nvcc进行编译/构建时,您的可执行文件应已静态链接到与您用于编译的nvcc版本相对应的CUDA运行时库。您可能需要指定此内容或类似内容的原因是,例如,如果要使用gnu工具链(在Linux上)而不是nvcc

正如您所推测的那样,静态链接到CUDA运行时库的目的是使应用程序的构建无需安装CUDA工具箱即可正常运行。只需安装正确的GPU驱动程序的机器即可。

确保应用程序将在安装了一系列GPU驱动程序的多种计算机上运行的最兼容方法是使用满足以下条件的最旧 CUDA工具包来编译应用程序:您打算涵盖的范围内最早的GPU驱动程序。同样,您可以参考表here