【问题标题】:Can I utilise cores in GPU from c# WITHOUT change to code?我可以在不更改代码的情况下从 c# 使用 GPU 中的内核吗?
【发布时间】:2012-02-17 22:32:17
【问题描述】:

我知道关于这个主题有几个问题,但我相信我的角度是独一无二的。

我有一个成熟的 C# 应用程序,用于处理科学数字。在代码中,我在我的 24 个超线程(即我有 2 个 CPU,每个 CPU 有 6 个内核/12 个线程)工作站上启动了 24 个 C# 线程。我运行的是 Windows 7,它处理得非常出色——我能够利用我的全部处理能力来完成我的工作。

我看到一些 GPU 宣传“448 核”。如果我购买了其中之一,我的 c# 应用程序可以使用它们吗?我的意思是不以任何主要方式重写我的代码。我开始的线程会不会像现在这样被 GPU 内核而不是 CPU 超线程占用?

继续提问

您好,我很感激我得到的答案 - 即使是否定的。

是否有任何其他我应该考虑的硬件(不太昂贵)可以给我大量的内核,但能够在不重写的情况下运行我的 c# 代码?

【问题讨论】:

  • Run C# code on GPU的可能重复
  • 顺便说一句,448 核是低端的。获得体面的高端卡,您就可以谈论数千个。 abnd 将这些 GPU 中的 8-10 个引导到具有正确电路板的机器中的可能性。每张卡 2 个,3-4 卡是可行的。
  • 所有答案都是令人失望的“不”,但也有好的一面。他们链接的内容非常有趣。

标签: c# gpu


【解决方案1】:

嘿...不。没办法没办法。那些“核心”是不一样的。要利用任何 GPU 计算,您需要以非常具体的方式编写计算。也许试试OpenCL。但你的问题的答案是否定的。


至于您的编辑,唯一可能的改动很少(取决于您当前的结构)是处理器。如果您不制作通用软件,您可能会运行 48 个非 HT 独立内核。不过,也许这不是瓶颈。您可以增加 RAM 以使一切通常更快到某个点。

【讨论】:

  • 为什么特别提到48核?这是 Windows 内核的一些限制吗?这不是通用软件 - 仅适用于我。此外,我可以添加尽可能多的 RAM。有什么方法可以按照您的建议获得更多的内核吗?我正在寻找一种真正获得数百个核心的方法
  • @ManInMoon:48 核,因为我听说有人做过一次。我不知道限制。您是否考虑过分布式计算? ...您到底在计算什么
【解决方案2】:

您需要真正重写代码才能使用 gpu。这些链接可能有用:-

CUDA .NET - 通过 .NET 应用程序实现 CUDA 功能。

CUDA Sharp - nVidia Toolkit 的 C# 包装器

这些基于 nVidia CUDA 系统,因此您当然需要 nVidia 卡。

【讨论】:

    【解决方案3】:

    没有。 .Net 线程不会自动利用 GPU 内核进行处理。它们与普通处理器内核非常不同。您需要更改程序以利用 GPU 处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      相关资源
      最近更新 更多