Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用c语言实现GPU#_C#_Gpu_Gpgpu - Fatal编程技术网

C# 用c语言实现GPU#

C# 用c语言实现GPU#,c#,gpu,gpgpu,C#,Gpu,Gpgpu,我正试图从我的电网中获得更多的处理能力 我正在使用所有的CPU/内核,是否可以使用带有C#的GPU 有人知道任何库或获得任何示例代码吗?托管DirectX可能会起作用我可以推荐XNA Game Studio作为一种可能的探索途径吗?显然,它已经为编写游戏做好了准备,但与以前的托管DirectX相比,它提供了对图形卡的托管访问,以及对功能枚举函数和着色器开发的更好访问。还有一些方法可以将WinForms和XNA组合到混合应用程序中: 您必须在学习着色器编程(XNA支持HLSL)方面付出一些努力,

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

我正在使用所有的CPU/内核,是否可以使用带有C#的GPU


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

托管DirectX可能会起作用

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

您必须在学习着色器编程(XNA支持HLSL)方面付出一些努力,但这可能比学习特定于供应商的解决方案(如nVidia的CUDA)更简单。优点是您可以在100%受管理的环境中编程。以下是一些HLSL链接:

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


祝你好运

微软研究院是一个.NET GP GPU库。

我发现。。。它还有一个GPGPU提供程序,允许方法在GPU上运行。。。谢谢你的问题。。。今天学到了一些新东西

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

  • (Greg Schechter的博客)

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

除了梵天之外,请看一下(发音为“C Bucks”)。从他们的CodePlex:

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

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

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

GPU.NET怎么样?

这里还有一个:。它听起来像GPU.Net,因为像method属性这样简单的东西可以导致整个方法在GPU上运行。但与GPU.Net不同,CUDAfy是免费的、开源的

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



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

现在有一个新的Microsoft解决方案——(简介)

从C#使用将通过p/Invoke,如桌面应用程序和(不要调用)Metro应用程序的演示

<> > >编辑:我应该注意C++的AMP有一个AN,这意味着它不一定只是MS编译器,或者只是Windows。p> 编辑:显然,这项技术意味着他们正在修复bug,但没有积极开发。

[2017年10月编辑,因为即使这个答案也变得非常陈旧]

这些答案大部分都很旧,所以我想我应该给出一个更新的总结,说明我认为每个项目的位置:

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

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

  • 。将C#编译为CUDA的商业解决方案。提供上的免费社区版和上的示例

  • 为消费者GPU提供免费社区版的商业解决方案。详见丹尼尔的评论

  • -通过OpenCL运行LINQ表达式(因此也支持AMD)。没有太多的文档/示例。上次更新于2011年

  • -上一次开发是在10年前

  • -类似地,它看起来不再积极开发

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

正如我所说的,我会推荐Cudafy而不是其他的——如果它能在OpenCL和Cuda上运行的话,那就太完美了

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

这是一个非常老的问题,自从被问到这个问题后,情况发生了很大变化。
使用.Net编写GPU代码的另一个选项,在中的答案中没有人提到过。它包括C#、F#和VB

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

在F#官方网站上,Alea是在GPGPU编程中使用F#的最佳选择。

要了解这个框架,我建议您看看它的全面列表。

CenterSpace软件的库中有GPU支持的计算功能,您可以将其添加到C#project中。这是一种商业产品

我喜欢这个想法,但是他们大约在两年前就停止了对技术支持问题的回复,而且这个网站差不多已经关闭了一年,所以我认为这个项目已经死了。不过,显然是作者。蒂德·鲍尔德·斯托