55

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

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

4

7 回答 7

25

这是一项非常新的技术,但您可能会研究CUDA。由于您的问题是用 C# 标记的,因此这里是一个.Net 包装器

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

于 2009-08-08T21:05:04.750 回答
16

在 C# 中用于 GPU 计算的另一个选项是Brahma

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

于 2009-08-08T22:43:27.753 回答
8

你可能想看看这个问题

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

于 2009-08-08T21:06:31.393 回答
4

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

于 2009-08-08T21:09:41.497 回答
4

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

请注意,托管 DirectX 和 XNA 仅限于 Direct3D 9 功能集,这对于 GPGPU 使用有些困难。

于 2009-08-08T21:39:06.447 回答
2

Nvidia 的 CUDA api 有一组 .Net 绑定,称为CUDA.net。您可以参考参考指南来查看一些示例 C# 代码。

访问您的协处理器 (GPU) 的首选方法是使用OpenCL,以便您的代码可以与 ATI 卡一起使用,但我相信可能需要额外的编码,而且我不确定 OpenCL 对 .网络平台。

如果你想使用 C++,这里有一个关于如何使用 Visual Studio 编译一些示例代码的快速概述。

于 2009-08-08T21:51:47.577 回答
0

仅供参考:加速器(http://research.microsoft.com/en-us/projects/Accelerator/)在几个测试中工作得很好。

于 2009-08-20T03:54:11.613 回答