2008-10-17 60 views
0

nVidia发布了他们的CUDA API,允许开发人员利用他们的图形卡,充分利用大规模并行架构和矢量化操作。像pyCUDA这样的库是为了让脚本语言的开发者将选定的代码发送给GPU而创建的。GPGPU VM:任何将虚拟机移植到图形处理单元上的开源项目?

而且出现了越来越多的精力来设计多语种的虚拟机,如鹦鹉,像二郎强类型的并发友好的语言上。

所以我想知道是否有任何开源项目的代码针对利用GPU的充分受益虚拟机环境?

我可以想象其运行主要脚本语言能够把所有的GPU的优势强类型,monadically保护的并发环境所提供的,将是一个非常有趣的领域。但到目前为止,我还没有在Google上找到任何东西。

有没有人在这方面工作?

编辑:我也许应该已经表示,而不是共享GPU,这样的项目也可能会指定使用专用的GPU。

回答

0

没有,因为显卡是能够照顾的细节而使卡的全部容量的处理在手,而不是使用一些资源有限的数额是多少,维护琐事机器始终托管。

换句话说,GPU的不是设计,而且也不是很合适的,VM的工作,脚本处理,等等,而这些任务会占用资源的数额特别巨大很好地工作。

- 亚当

6

之所以试图全上的进程迁移完全到GPU,没有人的是,它不擅长那种事 - 枝,不可预知的代码是非常多的,平均GPU的赔率执行和内存模型。即使Cell,SPE更像CPU,更能处理通用代码,但它仍然具有常规的CPU组件。

如果GPUs 适合这种东西,那么他们不会是GPU,他们会是CPU。

3

现代虚拟机,如Java和.NET,实际上支持比GPU更丰富的功能。尽管您可以从GPU获得令人难以置信的原始计算能力,但仍然有一些基本功能仍然存在,例如递归函数调用或函数指针。这些是实现功能或面向对象语言所需要的。 GPU最终可能会有这些,但他们现在不会。

也就是说,NVIDIA已经有一个名为PTX的公共ISA。应该可以编写一个翻译程序将简单的VM代码转换为该语言,因此它可以在任何NVIDIA GPU上运行,但我不知道有任何项目会这样做。

0

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

1

虚拟机不能用于访问CUDA硬件,因为虚拟机对设备进行虚拟化,并且不会暴露对有效使用设备非常重要的PCIE和其他总线。有一些VM可以使用,但它们都有一些安全/稳定性问题。

可以在OpenSolaris/BSD中使用jail来提供这样的保证,但这些操作系统没有CUDA驱动程序。