【发布时间】:2011-12-11 00:39:42
【问题描述】:
也许是个疯狂的问题,但是否可以在 GPU 上运行线程?
我问的原因是我有一些相当复杂的计算要执行(主要是数学和数组),我想看看我是否可以使用 GPU 来提高速度。
哦,我想在 C# 或 F# 中执行此操作:)
谢谢
【问题讨论】:
-
尝试查看是否有任何可用于 .NET 的 OpenCL 绑定
标签: c# multithreading f# multicore gpu
也许是个疯狂的问题,但是否可以在 GPU 上运行线程?
我问的原因是我有一些相当复杂的计算要执行(主要是数学和数组),我想看看我是否可以使用 GPU 来提高速度。
哦,我想在 C# 或 F# 中执行此操作:)
谢谢
【问题讨论】:
标签: c# multithreading f# multicore gpu
这里有一个关于该主题的摘要:
http://microsoft.cs.msu.su/Projects/Documents/ILShaders/ilshaders.pdf -- [[死链接]]
但我还没有找到源链接。这是谷歌翻译的项目页面:
我之前看过这个主题,之前没有发现任何实际上采用兼容语言并将其编译到 GPU 上的东西。
有很多库会公开 GPU 部件,但您需要了解如何以并行数据结构的方式表达您的问题。然后可以在 C# 中引用这些库。
一些库:
Microsoft Accelerator -- dead link
其他各种问答来源:
http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/239fd75b-05c3-4e4b-9835-6807940dc492
更新: SK-logic 评论了tidepowerd,我已经链接了“它是如何工作的”部分:
http://www.tidepowerd.com/product/howitworks -- [[死链接]]
这对我来说是一个很好的起点。不确定它是否直接处理 MSIL,它最初看起来像是在后台生成自定义代码的后期构建步骤。
【讨论】:
如果您使用的是最新的 NVidia GPU,可以查看CUDAfy。
没用过,但在我为 Beale 猜想编写 .NET 程序之前,我仔细研究了它们。祝你好运。
【讨论】:
Alea GPU 在运行时将 MSIL 编译为 LLVM IR,然后编译为 CUBIN,以便它可以在 GPU 上执行。与 CUDAFy 不同,它是一个真正成熟的编译器,而不仅仅是一个 CUDA C 代码生成器,后者依赖于后端的 NVIDIA CUDA C++ 编译器。
他们的技术还允许在运行时将委托编译为 GPU 代码并在 GPU 上执行。
他们还使用 IL 代码检测实现了自动内存管理,因此程序员无需在 CPU 和 GPU 之间来回复制数据。有关这些功能的更多详细信息,请访问他们的product page。
【讨论】:
您最好的选择可能是使用 C++ AMP,然后以通常的方式从 .NET 调用该代码。您需要 Visual Studio 11 开发人员预览版(Ultimate 或 Express)才能访问 C++ AMP。 (从未听说过 C++ AMP?我有 a blog post 的链接。)
【讨论】: