我试图从我的网格中获得更多的处理能力。
我正在使用所有的CPU/核心,是否可能使用C#来利用GPU。
有人知道任何库或有任何示例代码吗?
[本回答更新于2017年10月]
这些回答大部分已经过时,所以我想给出一个更新的总结:
GPU.Net(TidePowerd)- 我大约在6个月前尝试过,并成功运行,但需要花费一些功夫。可以将C#内核代码转换为cuda。不幸的是,他们的网站已经关闭了,他们的github也没有更新几年了,这可能表明该项目已经停滞了....
Cudafy - 开源且非常易于使用。可以将C#内核代码转换为cuda(具有序列化和缓存的功能)。可以轻松地在CPU上运行相同的内核代码(主要用于调试)。支持多个GPU。比其他人多提供了更多的示例。其他答案提到的样板代码很少,并且至少在我的情况下有助于我理解代码如何工作。只支持Cuda / Nvidia。不幸的是,他们似乎也没有更新解决方案(最新提交于2015年 - 支持cuda 7.0)。
Hybridizer。将C#编译为CUDA的商业解决方案。在visual studio marketplace上提供免费的社区版和在github上提供示例。
AleaGPU。面向消费者GPUS的免费社区版的商业解决方案。详情请参见Daniel的评论。
Brahma - 通过OpenCL运行LINQ表达式(因此也支持AMD)。文档/示例不多。上次更新于2011年。
C$ - 最近的开发已经超过10年了...
Microsoft Accelerator - 看起来也不像正在积极开发。
其他一些库(C++ AMP, OpenTK -- 已死/Cloo) - 这些库中的许多只是绑定 - 使您能够从C#调用GPU,但是您的内核代码(实际在GPU上运行的代码)需要用C或OpenCL编写,这意味着您必须使用(并学习)另一种语言。
正如我所说,相比其他所有库,我推荐Cudafy - 如果它能在OpenCL上运行,就像在Cuda上一样完美。
2013年9月编辑 现在,Cudafy允许您编译为 CUDA和OpenCL,因此可以在所有GPU上运行相同的C#代码。这听起来很棒,但我还没有测试过OpenCL编译。
你对http://www.tidepowerd.com/ GPU.NET 有何看法?