【发布时间】:2012-09-28 19:54:39
【问题描述】:
我有一个大约需要 24 小时才能运行的程序。这一切都是用 VB.net 编写的,大约有 2000 行。它已经是多线程的,而且效果很好(经过一些汗水和眼泪)。我通常使用 10 个线程运行进程,但我想增加它以减少处理时间,这就是使用 GPU 的地方。我已经在谷歌上搜索了所有我能想到的相关信息,但没有运气。
我希望的是一个 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++ 和其他语言阅读了很多关于它的文章,但我在理解其他语言方面很垃圾!
谢谢大家!
弗雷泽
【问题讨论】:
-
等等,你有一台 10 核的计算机?我不信。只有当你有足够的处理器时,更多的线程才有意义。
-
Konrad:您的 10 个线程不是最佳数量。我猜对我来说大约是 7 或 8 个。但从组织的角度来看,分批 10 个让我的生活更轻松。关于使用 GPU 的任何想法?
-
这可能会让你的生活更轻松,但也会让代码变得更慢(!!!)。关于使用 GPU:我怀疑 VB 是否有解决方案。 Mono 在其核心库中有一些 SIMD 模块,但没有用于通用 GPU 编程,因为加载实现 GPU 逻辑的 C++ 库通常更容易。在 VB 中进行原生 GPU 编程并不能为您带来任何好处,而且 GPU 的抽象与 .NET 框架设计不能很好地融合。
-
其他“支持”使用 GPU 的语言需要特殊的编译器。例如,C++ 实际上并不支持 GPGPU 编程。如果你想使用 CUDA 在 C++ 中进行 GPGPU 编程,你实际上是在使用不同的编译器 (nvcc) 来编译你的 GPU 代码。
-
嗯,nvcc 编译器显然需要知道如何解析源语言,并且它期望(有限的)C++ 子集作为源语言。