随着 .Net 4.0 和新的并行扩展的出现,我想知道 CLR 是否能够优化并将一些计算推送到 GPU?或者是否存在任何可以帮助完成任务的库?
我根本不是 GPU 编程专家,所以如果这是一个愚蠢的问题,请原谅我。也许 CLR 不支持与 GPU 指令集的接口?它们是不是太原始了,或者只是超出了范围?
提前致谢。
[编辑] 澄清一下:我知道 CUDA 和类似库,但我想知道是否有纯 .Net 解决方案,如果有,它可以在幕后为您工作,还是您需要进行显式编码?
随着 .Net 4.0 和新的并行扩展的出现,我想知道 CLR 是否能够优化并将一些计算推送到 GPU?或者是否存在任何可以帮助完成任务的库?
我根本不是 GPU 编程专家,所以如果这是一个愚蠢的问题,请原谅我。也许 CLR 不支持与 GPU 指令集的接口?它们是不是太原始了,或者只是超出了范围?
提前致谢。
[编辑] 澄清一下:我知道 CUDA 和类似库,但我想知道是否有纯 .Net 解决方案,如果有,它可以在幕后为您工作,还是您需要进行显式编码?
.NET 中没有集成与此相关的任何内容。
但我认为这就是您正在寻找的(可以在 .NET 中使用);):
CLR 仅针对 CPU(Microsoft 的 Research OS Helios的任务是通过异构执行在 CIL 级别支持 GPU)。
因此,目前唯一的选择是使用其中一个库:
它通过高级数据并行库(项目现在在 v2.0 中)提供了简化的 GPU 编程。
这里有一篇好文章:http: //tomasp.net/articles/accelerator-intro.aspx
使用C# 3.0 的 LINQ 语法来指定数据的流式转换。
XNA 用于图形,但您可以渲染到屏幕外表面并使用顶点和像素着色器,因此您可以使用它来运行 GPU 代码来执行计算。不过这将是相当困难的,并且需要大量的低级数据打包和着色器代码的编写。
我不知道并行扩展库在 GPU 上做任何事情。
听说 MS 正在研究它,我不会感到惊讶,但我不相信 .NET 4.0 中有类似的东西。请注意,Parallel Extensions 仍然非常酷。