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

6
随着 .Net 4.0 的到来和新的并行扩展,我想知道 CLR 是否能够优化并将一些计算推送到 GPU 上?或者是否存在可帮助完成此任务的任何库?
我并不是 GPU 编程专家,所以如果这是一个愚蠢的问题,请原谅我。也许 CLR 不支持与 GPU 指令集交互?它们是否太原始或简单地超出了范围?
提前感谢您。
[编辑] 仅为澄清:我知道 CUDA 和类似的库,但我想知道是否有纯 .Net 解决方案,如果有,它能否在后台为您工作,或者您需要进行显式编码?
4个回答

6

两个看起来都很有趣。谢谢 :) - cwap
希望这能对你有所帮助。 - Lukas Šalkauskas

2

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

因此,目前唯一的选择是使用这些库之一:

Microsoft Research Accelerator项目:

它通过高级数据并行库简化了对GPU的编程(该项目现在处于v2.0阶段)。

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

Brahma:

使用 C# 3.0的LINQ语法指定数据的流转换。


2

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


1

我不知道Parallel Extensions库在GPU上有什么作用。

如果微软正在研究这个领域,我也不会感到惊讶,但我不认为.NET 4.0中有类似的东西。不过,Parallel Extensions仍然非常酷。


呵呵,英语不是我的母语,出于某种原因,我在用正确措辞时脑子一片空白。更新了问题,感谢您的回答 :) - cwap
已对我的答案进行了适当的编辑 :) - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接