GPGPU虚拟机:任何将虚拟机移植到图形处理单元上的开源项目?

uautem 发布于 2018-05-15 architecture 最后更新 2018-05-15 19:16 144 浏览

nVidia发布了CUDA API,允许开发人员利用其图形卡,充分利用大规模并行架构和矢量化操作。像pyCUDA这样的库是为了让脚本语言的开发者将选定的代码发送给GPU而创建的。 随着Erlang等强类型并发友好型语言的兴起,越来越多的人设计出多语言虚拟机,例如Parrot。 所以我想知道,是否有任何开源项目可以编写虚拟机环境来量身定制以充分利用GPU? 我可以想象,拥有一个强类型,单一安全的并发环境来运行能够利用所有GPU所提供的主要脚本语言,将是一个非常有趣的领域。但到目前为止,我还没有在Google上找到任何东西。 有人正在为此工作? 编辑:我也许应该说,而不是共享一个GPU,这样的项目也可能使用专用GPU的目标。

已邀请:

overo

赞同来自:

不是的,因为显卡总是托管在一台能够处理细节的机器中,而不需要使用一些有限的资源来完成维护工作。 换句话说,GPU不是非常适合虚拟机工作,脚本处理等,并且这些任务会占用非常多的资源来运行良好。 -亚当

funde

赞同来自:

没有人试图将完全在线程序全部迁移到GPU上的原因是它不擅长这种事情 - 分支的,不可预测的代码与平均GPU的执行和内存模型非常不相容。即使Cell,SPE更像CPU,更能处理通用代码,但它仍然具有常规的CPU组件。 如果GPU适合这种事情,那么他们不会是GPU,他们会成为CPU。

mest

赞同来自:

像Java和.NET这样的现代虚拟机实际上支持比GPU更丰富的功能。尽管您可以从GPU获得令人难以置信的原始计算能力,但仍然存在一些基本功能,例如递归函数调用或函数指针。这些是实现功能或面向对象语言所需要的。 GPU最终可能会有这些,但他们现在不会。 也就是说,NVIDIA已经有一个名为PTX的公共ISA。应该可以编写一个翻译程序将简单的VM代码转换为该语言,因此它可以在任何NVIDIA GPU上运行,但我不知道有任何项目会这样做。

ysit

赞同来自:

目前NVIDIA执行CUDA的一个主要限制因素是每个设备只能从单个CPU线程访问。这使得不可能在同一物理机器上的程序之间共享设备,更不用说虚拟机了。

qenim

赞同来自:

虚拟机不能用于访问CUDA硬件,因为虚拟机会虚拟化设备,并且不会暴露PCIE和其他对于有效使用设备非常重要的总线。有一些VM可以使用,但它们都有一些安全/稳定性问题。 可以在OpenSolaris/BSD中使用监狱来提供这样的保证,但这些操作系统没有CUDA驱动程序。