也许是一个疯狂的问题,但是可以在GPU上运行线程吗?
我问的原因是我有一些非常复杂的计算要执行(主要是数学和数组),并希望看看我是否可以使用GPU获得任何速度提升。
哦,我想在C#或F#中执行此操作:)
由于
答案 0 :(得分:4)
这里有一个关于这个主题的摘要:
http://microsoft.cs.msu.su/Projects/Documents/ILShaders/ilshaders.pdf - [[死链接]]
但我还没有找到源代码链接。这是Google翻译的项目页面:
我之前看过这个主题,之前没有找到任何实际采用兼容语言并将其编译到GPU上的内容。
有很多库可以显示GPU部件,但您需要了解如何以并行数据结构的方式表达您的问题。然后可以在C#中引用这些库。
一些图书馆:
Microsoft Accelerator -- dead link
各种其他Q / A来源:
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个链接。)