如何将 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 中的第二个处理器?的主要内容,如果未能解决你的问题,请参考以下文章