当前位置:  开发笔记 > 编程语言 > 正文

使用c#使用GPU

如何解决《使用c#使用GPU》经验,为你挑选了9个好方法。

我试图从我的网格中获得更多的处理能力.

我正在使用所有cpus/core,是否有可能在C#中使用GPU.

任何人都知道任何库或获得任何示例代码?



1> mcmillab..:

[ 编辑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 $ - 最后一次开发是在十多年前......

Microsoft Accelerator - 同样看起来不再像以前那样积极开发.

其他一些(C++ AMP,OpenTK - dead/Cloo) - 其中许多只是绑定 - 即允许你从C#调用GPU,但你的内核代码(实际在GPU上运行的代码)需要写入C或OpenCL,意味着您必须使用(和学习)另一种语言.

正如我所说,我会推荐Cudafy而不是其他所有人 - 如果它可以在OpenCL和Cuda上运行,那将是完美的.

编辑2013年9月 Cudafy现在允许您编译双方 CUDA和OpenCL,所以会在所有GPU上运行相同的C#代码.这听起来很棒,虽然我还没有测试过OpenCL编译.


+1用于在一种快速发展的主题中更新有用的问题.
Alea GPU http://www.quantalea.com/为所有.NET语言提供CUDA支持,是完全跨平台的,并为.NET GPU代码的调试和分析提供最佳开发人员体验.

2> Mark Cidade..:

Microsoft Research Accelerator是一个.NET GP GPU库.



3> Vyas Bhargha..:

我找到了Brahma ......它还有一个GPGPU提供程序,允许在GPU上运行方法...感谢您提出的问题......今天学到了新的知识.:)



4> Dave R...:

我可以推荐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/

祝你好运!



5> pointernil..:

如何http://www.tidepowerd.com/ GPU.NET?


我喜欢这个想法,但他们大约两年前就停止了对技术支持问题的回应,并且该网站已经或多或少地停工了大约一年,所以我认为这个项目已经死了.显然,作者[在SO](http://stackoverflow.com/users/1197411/jack-p).

6> BlueRaja - D..:

这是另一个: CUDAfy.听起来像GPU.Net,因为像method-attribute这样简单的东西可以导致整个方法在GPU上运行.但与GPU.Net不同,CUDAfy是免费的开源软件.

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


以下是使用CUDAfy构建应用程序的示例.



7> Rsh..:

嗯,这是一个非常古老的问题,因为有人问过,事情发生了很大的变化.
使用.Net编写GPU代码的另一种选择,在Alea GPU的答案中没有人提到过.它涵盖了C#,F#和VB.

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

在F#官方网站中,Alea是在GPGPU编程中使用F#的第一个选项.
为了了解这个框架,我建议看看它的全面的例子列表.



8> David Cuccia..:

除了Brahma之外,还可以看看C $(发音为"C Bucks").从他们的CodePlex 网站:

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

它基于C#,懒惰地评估,并针对多个加速器模型:

目前,预期架构列表包括GPU,多核CPU,多GPU(SLI,CrossFire)和多GPU +多CPU混合架构.



9> David Cuccia..:

城里有一个新的微软解决方案 - C++ AMP(这里是介绍).

使用C#将通过P/Invoke,如此处针对桌面应用进行演示,以及此处针对(不称之为)Metro应用程序.

编辑:我应该注意C++ AMP有一个开放的规范,这意味着它不一定只用于MS编译器,或仅用于Windows.

编辑:显然,该技术现在处于"维护模式",这意味着他们正在修复错误,但没有积极开发.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有