vb.net中的GPU处理

问题描述 投票:1回答:2

我有一个程序大约需要24小时才能运行。这些都是用VB.net编写的,大约有2000行。它已经是多线程的,并且可以正常工作(经过一些汗水和眼泪)。我通常使用10个线程来运行进程,但是我想增加它以减少处理时间,这就是使用GPU的原因。我已经在Google上搜索了可以想到的所有相关信息,但没有运气。

我希望的是vb.net项目的基本示例,该示例执行一些常规操作,然后将一些线程发送到GPU进行处理。理想情况下,我不想为此付费。所以像:

'Do some initial processing eg.
dim x as integer
dim y as integer
dim z as integer
x=int(textbox1.text)
y=int(textbox2.text)
z=x*y
'Do some multi-threaded operations on the gpu eg.
'show some output to the user once this has finished.

任何帮助或链接将不胜感激。我已经阅读了很多有关C ++和其他语言的文章,但是我对理解其他语言很不满意!

谢谢!

Fraser

vb.net gpgpu gpu-programming
2个回答
2
投票

VB.NET编译器不会在GPU上编译,它会编译为中间语言(IL),然后在运行时针对目标体系结构进行即时编译(JITed)。当前仅支持x86,x64和ARM目标。 CUDAfy(请参见下文)获取IL,并将其转换为CUDA C代码。依次使用NVCC进行编译以生成GPU可以执行的代码。请注意,这意味着您只能使用NVidia GPU,因为AMD不支持CUDA。

[还有其他采用相同方法的项目,例如Copperhead中的Python到CUDA转换器。

CUDAfy-CUDA API之上的包装,带有用于FFT等的附加库。还有一个commercial version。实际上是

CUDAfy翻译器转换器使用SharpDevelop的反编译器ILSpy作为基础,将.NET代码转换为CUDA C。

[还有其他项目可让您使用.NET语言的GPU。例如:

[NMath-一组可从.NET使用并且已启用GPU的数学库。

[可能还有其他,但这些似乎是主要的。如果您决定使用CUDAfy,则仍然需要花费一些时间来了解足够的CUDA以及GPU如何工作以移植算法以适合GPU数据并行模型。除非可以使用其中一个数学库直接进行操作。

重要的是要意识到,从.NET语言访问GPU仍然会降低性能。您必须支付将数据从.NET托管运行时移动(编组)到本机运行时的费用。这里的开销在很大程度上不仅取决于数据的大小,还取决于数据的类型以及是否可以在不进行转换的情况下将其封送。这还不包括将数据从CPU移动到GPU等的开销。


0
投票

[您认为,在下一个网络中,可能的解决方案

https://software.intel.com/es-es/search/documentation/book/830339?query=gpu

© www.soinside.com 2019 - 2024. All rights reserved.