使用 c # 的 GPU

我正试图从我的电网中获得更多的处理能力。

我正在使用所有的 CPU/核心,是否可能利用的图形处理器与 C # 。

有人知道库或者样本代码吗?

103215 次浏览

管理 DirectX 的某种方式,可能工作

我可以推荐 XNA Game Studio 作为一种可能的探索途径吗?它显然已经为编写游戏做好了准备,但是它提供了对显卡的管理访问,并且比以前的 Managed DirectX 更好地访问了功能枚举函数和着色器开发。还有一些将 WinForms 和 XNA 结合到混合应用程序中的方法:

Http://www.ziggyware.com/news.php?readmore=866

您将不得不花一些精力学习着色器编程(XNA 支持 HLSL) ,但这可能是一种比学习特定于供应商的解决方案(如 nVidia 的 CUDA)更简单的方法。优点是您可以在100% 可管理的环境中进行编程。以下是一些 HLSL 链接:

Http://www.ziggyware.com/weblinks.php?cat_id=9

GPGPU 站点也是通用 GPU 编程的推荐目的地:

Http://gpgpu.org/

祝你好运!

Microsoft Research 加速器是一个.NET GP 图形处理器库。

我发现 布拉马... 它还有一个 GPGPU 提供商,允许方法运行在 GPU... 谢谢你的问题... 今天学到了一些新的东西。:)

WPF 也使用 GPU,您可以使用 HLSL 添加自定义着色器。

如果你的 GPU 都是同一个品牌,你可以通过 Nvidia 的 CUDA 或者 ATI 的 Stream 从供应商那里获得 GPGPU 的支持。AFAIK,它们提供 DLL,您可以通过 P/Invoke 使用它们。

除了梵,还可以看看 C $(读作“ C 雄鹿”):

[ C $]的目标是为现代 GPU 和 CPU 的无缝并行编程创建一个统一的语言和系统。

它基于 C # ,以懒惰的方式进行计算,并针对多个加速器模型:

目前 预期的架构包括图形处理器、, 多核 CPU,多图形处理器(SLI, 和多 GPU + 多 CPU 混合结构。

这里还有一个: 卡达菲。它听起来像 GPU.Net,因为像 method-Attribute 这样简单的东西可能会导致整个方法在 GPU 上运行。但与 GPU.Net 不同的是,CUDAfy 是免费和开源的。

GPU.Net 似乎不需要样板代码,尽管 (根据他们的文档,它是“由构建工具自动注入的”)需要,而 CUDAfy 需要。


这里 是使用 CUDAfy 构建应用程序的一个示例。

有一个新的微软解决方案-C + + AMP(简介 给你)。

C # 可以通过 P/Invoke 使用,桌面应用程序可以使用 给你,Metro 应用程序可以使用 给你(不要称之为 Metro 应用程序)。

编辑: 我应该注意到 C + + AMP 有一个 开源标准,这意味着它不一定只适用于 MS 编译器,或者只适用于 Windows。

编辑: 显然,技术 现在处于“维护模式”意味着他们正在修复 bug,但是没有积极地开发。

[ 编辑 OCT 2017,因为即使这个答案变得相当老]

这些答案大部分都很老了,所以我想我应该给出一个我认为每个项目的最新总结:

  • GPU.Net (TidePowerd)-我大约6个月前试过这个方法,虽然花了一点功夫,但还是成功了。在编译时将 C # 内核代码转换为 cuda。不幸的是,他们的网站已经关闭,他们的 github 已经有几年没有更新了,这可能意味着该项目已经死亡... ..。

  • Cudafy -开源且易于使用。在运行时将 C # 内核代码转换为 cuda (具有序列化和缓存的能力)。可以轻松地在 CPU 上运行相同的内核代码(主要用于调试)。支持多个 GPU。这里提供的例子比其他的更多。其他答案引用的样板代码非常少,在我的例子中至少有助于我理解代码是如何工作的。只有库达和 Nvidia。不幸的是,他们似乎也有好几年没有更新他们的解决方案了(最近一次是在2015年——支持 Cuda 7.0)。

  • 将 C # 编译成 CUDA 的商业解决方案。在 视觉工作室市场上提供免费的社区版本,在 Github上提供样品。

  • AleGPU 针对消费者 GPUS 的免费社区版商业解决方案。详情请参阅 Daniel 的评论。

  • Brahma -通过 OpenCL 运行 LINQ 表达式(因此也支持 AMD)。

  • 上一次开发是在10年前... ..。

  • 微软加速器 -类似地,它看起来不像是正在积极开发的任何更长时间。

  • 其他一些(C + + AMPOpenTK 死了/克鲁)——其中许多只是绑定——即允许你从 C # 调用 GPU,但是你的内核代码(实际上是在 GPU 上运行的代码)需要用 C 或 OpenCL 编写,这意味着你必须使用(并学习)另一种语言。

正如我所说,我会推荐 Cudafy 超过所有其他-如果它可以运行在 OpenCL 以及 Cuda 将是完美的。

2013年9月编辑 Cudafy 现在允许您编译 都有 CUDA 和 OpenCL,因此将在所有 GPU 上运行相同的 C # 代码。这听起来很棒,尽管我还没有测试 OpenCL 编译。

这是一个相当古老的问题,自从有人提出这个问题以来,情况已经发生了很大的变化。
使用。Net 来编写 GPU 代码,这在 Alea 图形处理器的答案中没有人提到。它涵盖了 C # 、 F # 和 VB。

适用于.NET 和 Mono 的专业 GPU 软件开发环境。 真正的跨平台

在 F # 官方站点中,Alea 是在 GPGPU 编程中使用 F # 的 第一选择
为了了解这个框架,我建议看看它的 例子综合列表。

中央空间软件公司在他们的 NMath库中有 GPU 驱动的计算,你可以添加到 C # 项目中,这是一个商业产品。