如何将 GPU 用作 .Net 中的第二个处理器?

Posted

技术标签:

【中文标题】如何将 GPU 用作 .Net 中的第二个处理器?【英文标题】:How can I use the GPU as a second processor in .Net? 【发布时间】:2010-10-03 00:05:10 【问题描述】:

这个问题真的说明了一切。我希望我不必在 c++ .dll 中编写代码,然后从托管代码中调用它。

【问题讨论】:

请检查一下。从 linux 支持的角度来看,这听起来很有希望。 boinc.berkeley.edu/wiki/GPU_computing 【参考方案1】:

CUDAfy

允许您使用 C# 编写代码,并为您静态或动态地转换为 CUDA C++。它在大多数情况下运行良好,但如果不直接更改库,更复杂的事情可能会很困难。自从我使用它以来,它可能已经有所改善。我也觉得 OpenCL 会在某个时候得到支持。

【讨论】:

【参考方案2】:

您只能使用着色语言为 GPU 编写代码。所有着色语言本身都是正确的语言(不是 C++、.NET 语言或其他任何语言),但它们与 C++ 非常相似。

最常见的着色语言有:

GLSL(用于 OpenGL)

Cg(nVidia 着色 与directX兼容的语言 和 OpenGL)

HLSL(微软着色 DirectX 的语言)。

您需要使用着色语言编写要在 GPU 上运行的代码,然后动态编译并下载到 GPU。您用于动态编译和下载的代码通常是任何支持 directX/OpenGL 东西的代码(据我所知,有 Java、.NET 和 C++ API - 尽管大多数人使用 C++,所以您会找到的大多数示例将是用 C++ 编写)。

【讨论】:

【参考方案3】:

通过快速谷歌搜索,我发现了这个called Accelerator. 这是一个微软研究项目found here。

【讨论】:

【参考方案4】:

我可以肯定地告诉您一件事:截至 2008 年 12 月,Nvidia 和 ATI 没有为他们的 GPU 提供托管类。我不知道他们是否有这个计划。

【讨论】:

我认为他们担心托管代码是没有意义的。如果您使用 GPU 进行计算,那么您显然正在寻找 非常 快的代码。我认为围绕 API 编写一个包装器可能是最好的希望。

以上是关于如何将 GPU 用作 .Net 中的第二个处理器?的主要内容,如果未能解决你的问题,请参考以下文章

关于webgl中glBufferData的第二个参数的问题

如何找到 MIPS 中的第二个最小值?

访问数据视图中的第二个表

如何使用标题中的两个参数和正文中的第二个参数从另一个 MVC 项目调用 Web API

如何将上下文传递给提供者的第二个小部件树

如何将mysqli :: bind_param与数组一起用作第二个参数