我可以在c#中使用GPU中的核心而无需更改代码吗?

时间:2012-01-24 17:02:09

标签: c# gpu

我意识到这个问题有几个问题,但我相信我的观点是独一无二的。

我有一个成熟的C#应用​​程序,我用它来进行科学数字运算。在代码中,我在24个HyperThread上启动了24个C#线程(即我有2个CPU,每个CPU有6个核心/ 12个线程)工作站。我运行Windows 7并且它处理得非常出色 - 我可以使用我的全部处理能力来完成我的工作。

我看到一些GPU宣传“448核心”。如果我买了其中一个,我的c#app能够使用它们吗?我的意思是不以任何主要方式重写我的代码。我开始的线程是否会被GPU核心而不是现在的CPU HyperThreads占用?

关注问题

嗨,我很欣赏我得到的答案 - 即使是否定的。

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

3 个答案:

答案 0 :(得分:3)

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

CUDA .NET - 通过.NET应用程序提供CUDA功能。

CUDA Sharp - nVidia Toolkit的C#包装器

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

答案 1 :(得分:2)

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


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

答案 2 :(得分:1)

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