C#:在GPU上执行操作,而不是CPU(计算Pi)

时间:2009-08-08 21:02:43

标签: c# .net api gpu

我最近阅读了很多关于软件(主要是科学/数学和加密相关)的文章,这些软件将部分计算移到GPU上,这使得支持操作的速度提高了100-1000倍。

是否有库,API或其他方式通过C#在GPU上运行某些东西?我正在考虑简单的Pi计算。我有一个GeForce 8800 GTX,如果这是相关的(虽然更喜欢卡独立解决方案)。

7 个答案:

答案 0 :(得分:20)

这是一项非常新的技术,但您可以调查CUDA。由于您的问题是使用C#标记的,因此这里是.Net wrapper

作为奖励,您的8800 GTX似乎支持CUDA。

答案 1 :(得分:16)

C#的GPU计算未提及的另一个选项是Brahma

Brahma为GPU计算提供了基于LINQ的抽象 - 它基本上是LINQ到GPU。它适用于没有额外库的OpenGL和DirectX(但需要SM3)。一些样本相当惊人。

答案 2 :(得分:8)

您可能需要查看this question

你可能正在寻找Accelerator,但如果你对游戏开发感兴趣,我建议你去看看XNA

答案 3 :(得分:4)

CUDA.NET应该是您正在寻找的,它似乎支持您的特定显卡。

答案 4 :(得分:3)

您可以使用Windows API Code Pack从.NET访问最新的Direct3D API。 Direct3D 11附带Compute Shaders。这些与CUDA大致相当,但也适用于非NVIDIA GPU。

请注意,Managed DirectX和XNA仅限于Direct3D 9功能集,这对GPGPU来说有点难度。

答案 5 :(得分:2)

Nvidia的CUDA api有一套.Net绑定,叫做CUDA.net。您可以参考reference guide查看一些示例C#代码。

访问您的协同处理器(GPU)的首选方法是使用OpenCL,以便您的代码可以使用ATI卡进行移植,但我相信可能需要额外的编码,我不知道如何OpenCL对.Net平台的支持很多。

如果你想使用C ++,here's a quick overview关于如何使用Visual Studio编译一些示例代码。

答案 6 :(得分:0)

仅供参考:加速器(http://research.microsoft.com/en-us/projects/Accelerator/)非常适合进行几项测试。