【问题标题】:Running MSIL on GPU在 GPU 上运行 MSIL
【发布时间】:2011-12-11 00:39:42
【问题描述】:

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

我问的原因是我有一些相当复杂的计算要执行(主要是数学和数组),我想看看我是否可以使用 GPU 来提高速度。

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

谢谢

【问题讨论】:

标签: c# multithreading f# multicore gpu


【解决方案1】:

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

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

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

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

其他各种问答来源:

Utilizing the GPU with c#

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

更新: SK-logic 评论了tidepowerd,我已经链接了“它是如何工作的”部分:

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

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

【讨论】:

    【解决方案2】:

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

    没用过,但在我为 Beale 猜想编写 .NET 程序之前,我仔细研究了它们。祝你好运。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • +1,如果您正在做涉及大量数字的事情,并且如果您尝试在 GPU 上运行,性能显然至关重要,我建议您这样做。在运行这些大型性能密集型应用程序时,几乎在所有情况下,本机 C++ 总是比 MSIL 更快。
        • 在 GPU 上运行 MSIL?如果没有,因此实际上没有回答这个问题,为什么 AMP 比其他解决方案更可取? “阅读我的博客”当然不是答案,而是博客垃圾邮件。
        • @HansPassant 并认为我昨天对客户说了一些关于你的好话。我考虑删除括号,但它是“什么是 C++ AMP?”的一个很好的答案。将其排除在外只会触发 cmets 询问 C++ AMP 是什么。答案作为一个整体回答了“我如何从托管代码中利用 GPU”,我支持它。
        • @Kate 可以通过两种方式提出问题,即问题本身 (MSIL) 中的内容和内容中的内容(来自 C# 的库)。但是,我不同意人们会去询问 C++ AMP,这似乎是一个立即可用的 Google 搜索词,因此我在点击您的链接之前就是这样做的。即使它不是垃圾邮件,您提供链接的方式听起来也像推销一样大声笑
        • 大家放松一下,你们所有的答案都很棒!有时我会吓坏我,人们用如此有用的答案回复的速度有多快。 C++ AMP 看起来很酷,可以这样做并通过 .NET 调用或使用 CUDA.NET 进行权衡。感谢您的回答,停止争论:)
        猜你喜欢
        • 1970-01-01
        • 2017-12-03
        • 2019-12-11
        • 2016-02-04
        • 2021-11-12
        • 2018-04-12
        • 2011-05-06
        • 2021-04-06
        相关资源
        最近更新 更多