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

我最近读了很多关于软件(主要是科学/math和encryption相关的)的部分计算到GPU上,导致支持的操作速度增加100-1000(!)倍的速度。

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

这是一项非常新的技术,但是您可以调查CUDA 。 由于你的问题是用C#标记的,这里是一个.Net包装器 。

作为奖励,看来您的8800 GTX支持CUDA。

从C#中GPU计算中没有提到的另一个select是Brahma 。

Brahma提供了基于LINQ的GPU计算抽象 – 基本上是LINQ到GPU。 它可以在OpenGL和DirectX上运行,不需要额外的库(但需要SM3)。 一些样本相当惊人。

你可能想看看这个问题

您可能正在寻找Accelerator ,但是如果您对游戏开发一般感兴趣,我会build议您看看XNA

CUDA.NET应该是你正在寻找的,而且它似乎支持你的特定的graphics卡。

您可以使用Windows API代码包从.NET访问最新的Direct3D API。 Direct3D 11带有计算着色器。 这些与CUDA大致相当,但也适用于非NVIDIA的GPU。

请注意,Managed DirectX和XNA仅限于Direct3D 9function集,这对于GPGPU来说有些困难。

Nvidia的CUDA api有一组.Net绑定,叫做CUDA.net 。 你可以参考参考指南看看一些示例C#代码。

访问您的协处理器(GPU)的首选方法是使用OpenCL,这样您的代码就可以随ATI卡一起移植,但是我相信可能需要额外的编码,而且我不确定OpenCL对此有多less支持。networking平台。

如果您想使用C ++,下面简要介绍如何使用Visual Studio编译示例代码。

仅供参考:加速器( http://research.microsoft.com/en-us/projects/Accelerator/ )正在进行一些testing。