我编写了一个CUDA程序,现在在Ubuntu虚拟机上进行测试。这么做的原因是我有Windows 7,不想将Ubuntu安装为次操作系统,并且需要使用Linux来进行测试。 我的问题是:虚拟机是否会限制GPU资源?所以,如果我在主操作系统下运行它,会比在虚拟机中运行更快吗?
我编写了一个CUDA程序,现在在Ubuntu虚拟机上进行测试。这么做的原因是我有Windows 7,不想将Ubuntu安装为次操作系统,并且需要使用Linux来进行测试。 我的问题是:虚拟机是否会限制GPU资源?所以,如果我在主操作系统下运行它,会比在虚拟机中运行更快吗?
很不幸,虚拟机模拟的是一个图形设备,因此您无法访问真正的GPU。这是由于虚拟化处理多个虚拟机访问同一设备的方式 - 它提供了一个介于它们之间共享真正设备的层。
如果您具有正确的软件和硬件组合,则可以获得对硬件的真正访问权限,请参见SLI Multi-OS网站了解详细信息。
因此,如果您确实无法在Windows中运行您的应用程序,那么您只能选择以下限制:
我在 NVIDIA 的 GPU 技术会议上听到了研究员崔晓晖(Oak Ridge 国家实验室)的演讲。除其他内容外,他描述了使用名为 gVirtuS 的东西从虚拟机中访问 GPU。他没有创建 gVirtuS,但将其描述为一个开源的“虚拟 CUDA”驱动程序。请参见以下链接:http://osl.uniparthenope.it/projects/gvirtus/
我没有尝试过 gVirtuS,但听起来似乎可以满足您的需求。
从CUDA 3.1开始,其虚拟化功能并不明显,因此唯一可用的方法是直接在目标硬件+软件上运行CUDA程序。