是否有可能将简单的并行计算推送到.Net中的GPU?

时间:2010-01-04 11:29:38

标签: .net clr parallel-processing gpu

随着.Net 4.0和新的并行扩展,我想知道CLR是否能够优化并将一些计算推送到GPU?或者,是否存在可以帮助完成任务的任何库?

我根本不是GPU编程专家,如果这是一个愚蠢的问题,请原谅我。也许CLR不支持与GPU指令集的接口?它们是太原始,还是仅仅超出范围?

提前致谢。

[编辑]只是为了澄清:我了解CUDA和类似的库,但我想知道是否有一个纯粹的.Net解决方案,如果是的话,它可以在幕后工作,或者你需要做什么显式编码?

4 个答案:

答案 0 :(得分:6)

.NET中没有任何与此相关的内容。

但我认为这是你正在寻找的(可以在.NET中使用);):

http://research.microsoft.com/en-us/projects/Accelerator/

也是FYI:http://brahma.ananthonline.net/

答案 1 :(得分:2)

CLR仅针对CPU(Microsoft的研究操作系统Helios的任务是通过异构执行支持CIL级别的GPU。)

所以现在唯一的选择是使用其中一个库:

Microsoft Research Accelerator项目:

它通过高级数据并行库提供GPU的简化编程(项目现在在v2.0中)。

这里有一篇好文章: http://tomasp.net/articles/accelerator-intro.aspx

梵:

Uses C#3.0的LINQ语法,用于指定数据的流式转换。

答案 2 :(得分:2)

XNA用于图形,但您可以渲染到屏幕外表面并使用顶点和像素着色器,这样就可以使用它来运行GPU代码来执行计算。但这将是相当困难的,并且需要大量低级数据打包和着色器代码的编写。

答案 3 :(得分:1)

我不知道Parallel Extensions库在GPU上做任何事情。

听到MS正在研究它,我不会感到惊讶,但我不认为这是.NET 4.0的一部分。注意,Parallel Extensions仍然非常酷。