在具有不同CUDA SDK版本的同一服务器上的虚拟机上使用NVIDIA K20卡

在具有不同CUDA SDK版本的同一服务器上的虚拟机上使用NVIDIA K20卡,cuda,server,gpu,virtualization,Cuda,Server,Gpu,Virtualization,我在双处理器Debian Wheezy服务器上使用4个Nvidia K20m卡。我实际上使用CUDA5和304.54驱动程序以及GCC4.6.3,但我想更新到DebianJessie(GCC4.9)和CUDA7.5。我已经对CUDA 7.5进行了评估,由于NVCC使用了指令,因此CUDA 7.5的结果与CUDA 5的结果不同(例如:FMA指令未在相同位置使用,请参阅) 主要目标是在该服务器上获得两个不同的CUDA版本,以保持与旧计算的兼容性,并为将来使用CUDA新功能做好准备 我认为有两种可能性

我在双处理器Debian Wheezy服务器上使用4个Nvidia K20m卡。我实际上使用CUDA5和304.54驱动程序以及GCC4.6.3,但我想更新到DebianJessie(GCC4.9)和CUDA7.5。我已经对CUDA 7.5进行了评估,由于NVCC使用了指令,因此CUDA 7.5的结果与CUDA 5的结果不同(例如:FMA指令未在相同位置使用,请参阅)

主要目标是在该服务器上获得两个不同的CUDA版本,以保持与旧计算的兼容性,并为将来使用CUDA新功能做好准备

我认为有两种可能性:

  • VMWare ESXI或Citrix XenServer虚拟机监控程序,允许创建两个以直通模式连接到K20卡的虚拟机(Wheezy/SDK 5和Jessie/SDK 7.5)。我无法在兼容硬件列表中查看这些视频卡,但一份NVidia驱动程序发行说明显示它们已通过(见第11页)。我必须在虚拟机监控程序级别安装哪个驱动程序
  • 安装最新的nvidia驱动程序,并使用两个不同的Cuda SDK和Debian版本。是否可以使用最新的驱动程序运行SDK 5
你怎么看待这些可能性?你知道吗


非常感谢。

我无法对虚拟化建议发表评论,但是,运行最新版本的驱动程序(撰写本文时为CUDA 7.5)并使用旧的工具包是没有问题的

每个CUDA toolkit版本及其组件都是完全版本化的,因此您不能将CUDA运行时与来自不同toolkit版本的其他库(cuFFT、CUBLAS等)或您自己用这些库构建的代码混合使用。但是,驱动程序及其公开的驱动程序API是向后兼容的。因此,您可以轻松地将CUDA 7.5驱动程序和驱动程序API与CUDA 5或CUDA 7.5运行时一起使用。但是,您不能在旧驱动程序上运行较新的运行时。这将生成一个运行时错误。我发现该实用程序对于在开发和测试的工具包/运行时版本之间进行选择非常有用。我当前的开发箱安装了4.2和7.5之间的所有版本,并带有7.5驱动程序


还要注意,旧的工具链需要旧的主机编译器和支持库。因此,如果您转向更现代的发行版,您仍然需要设计一种方法,为您想要使用的旧工具包安装一个受支持的gcc(有关更多详细信息,请参阅工具包的发行说明)。许多发行版都有内置系统来管理多个编译器版本,但我运行debian已经很多年了,所以我不确定debian替代编译器版本选择的具体细节。

试图补充talonmies在虚拟化方面的答案。同一卡上可能有两个具有两个不同驱动程序版本和/或CUDA版本的操作系统实例。然而,据我所知,这只可能与PCI通过,因此一次一个实例。通过这种配置,VM客户机完全控制PCI设备,并且管理程序不需要特定的驱动程序


同时从两个不同的实例使用同一设备需要一些管理程序级别的驱动程序组件(请参阅NVIDIA网格),我不知道CUDA当前的支持级别(如果有的话)。

感谢您澄清驱动程序/工具包版本的用法。在服务器上我安装了最新的驱动程序,我在Jessie上用SDK 7.5创建了一个Docker映像,它可以正常工作!现在,为了向后兼容,我正在对关于喘息的SDK 5做同样的事情。我尝试使用Docker,因为我希望在不使用GCC版本的情况下获得独立的环境。最后,如果它不起作用,我将使用modules实用程序。