2009-08-08 396 views
48

我最近读了很多关于软件(主要是科学/数学和加密相关的),他们将部分计算移动到GPU上导致100-1000 !)倍速增加支持的操作。C#:在GPU上执行操作,而不是CPU(计算Pi)

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

+1

我不认为你需要一个“简单的Pi计算”的GPU,除非你每秒做数千次...... – 2009-08-08 21:05:15

+18

这不是关于'需要'它。我只是建议它作为概念范例的证明。 – Alex 2009-08-08 21:06:02

+0

啊,我明白了。我的错。然后+1。 – 2009-08-08 21:06:40

回答

19

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

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

+1

你的包装的链接已经死了。 – 2015-02-25 23:46:14

+0

@Alizter - 谢谢。我做了搜索并插入了一个新的URL,如果人们正在寻找它。 – 2015-02-27 20:41:41

+0

使用www.quantalea.com提供的Alea GPU。它是CUDA编译器的完整.NET,跨平台,具有非常好的调试和分析开发支持。 – Daniel 2015-06-03 05:42:04

8

你可能想看看this question

你可能寻找Accelerator,但如果你是一般的兴趣在游戏开发中,我会建议你看一看新华社

+0

我没有听说过这个 - 有趣!我担心它仍然是一个研究项目。它是否准备好用于商业应用? – 2009-08-08 21:33:28

+0

说实话,我还没有尝试过,我不知道它有多稳定。我做了一些图形编程,并将它放在我的书签中供将来参考,并且这个问题似乎比CUDA更容易处理。 – Tchami 2009-08-08 21:47:41

+0

我有一个ATI卡,所以也许我会给加速器一个尝试。 – 2009-08-09 03:24:56

4

CUDA.NET应你正在寻找什么,它似乎支持你的特定图形卡。

3

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

请注意,Managed DirectX和XNA仅限于Direct3D 9功能集,这对于GPGPU而言有点难以使用。

2

Nvidia的CUDA API有一组.Net绑定,它被称为CUDA.net。您可以参考reference guide查看一些示例C#代码。

访问您的协处理器(GPU)的首选方法是使用OpenCL,这样您的代码就可以与ATI卡一起使用,但我相信可能需要额外的编码,我不确定OpenCL有多少支持已经为.Net平台。

如果您想使用C++,here's a quick overview了解如何使用Visual Studio编译示例代码。

15

从C#GPU计算中未提及的另一种选择是Brahma

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

相关问题