在GPU上运行MSIL

时间:2011-10-19 15:05:43

标签: c# multithreading f# multicore gpu

也许是一个疯狂的问题,但是可以在GPU上运行线程吗?

我问的原因是我有一些非常复杂的计算要执行(主要是数学和数组),并希望看看我是否可以使用GPU获得任何速度提升。

哦,我想在C#或F#中执行此操作:)

由于

4 个答案:

答案 0 :(得分:4)

这里有一个关于这个主题的摘要:

http://microsoft.cs.msu.su/Projects/Documents/ILShaders/ilshaders.pdf - [[死链接]]

但我还没有找到源代码链接。这是Google翻译的项目页面:

http://translate.google.co.uk/translate?hl=en&sl=ru&u=http://microsoft.cs.msu.su/Projects/Pages/ILShaders.aspx&ei=QuieTu_tGsTD8QPk-tmmCQ&sa=X&oi=translate&ct=result&resnum=2&ved=0CCYQ7gEwAQ&prev=/search%3Fq%3DILShaders%26hl%3Den%26prmd%3Dimvns - [[deak link]]

我之前看过这个主题,之前没有找到任何实际采用兼容语言并将其编译到GPU上的内容。

有很多库可以显示GPU部件,但您需要了解如何以并行数据结构的方式表达您的问题。然后可以在C#中引用这些库。

一些图书馆:

CUDA.NET -- dead link

Microsoft Accelerator -- dead link

各种其他Q / A来源:

Utilizing the GPU with c#

http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/239fd75b-05c3-4e4b-9835-6807940dc492

更新: SK-logic对潮流发表评论,我已经将“如何运作”部分链接到了:

http://www.tidepowerd.com/product/howitworks - [[死链接]]

这对我来说似乎是一个很好的起点。不确定它是否直接处理MSIL,它最初看起来像一个后期构建步骤,以生成自定义代码。

答案 1 :(得分:2)

如果您使用的是最近的NVidia GPU,可以查看CUDAfy

没有使用它,但是在我为Beale的猜想编写.NET程序之前,我很久就看了它们。祝你好运。

答案 2 :(得分:2)

Alea GPU在运行时将MSIL编译为LLVM IR,然后编译为CUBIN,以便它可以在GPU上执行。与CUDAFy相反,它是一个真正完全成熟的编译器,而不仅仅是一个CUDA C代码生成器,后者依赖于后端的NVIDIA CUDA C ++编译器。

他们的技术还允许在运行时将代理编译为GPU代码并在GPU上执行它。

他们还使用IL代码检测实现了自动内存管理,因此程序员无需在CPU和GPU之间复制数据。有关这些功能的更多详细信息,请参见product page

答案 3 :(得分:1)

可能你最好的选择是使用C ++ AMP,然后以通常的方式从.NET调用该代码。您需要Visual Studio 11开发人员预览版(Ultimate或Express)才能访问C ++ AMP。 (从未听说过C ++ AMP?我有a blog post个链接。)