GPU编程

4
我想进行一些GPU编程。有什么建议吗?我想学习一些“开放”的、跨平台的和“高级”的语言。我不想被锁定在任何特定的GPU供应商、操作系统或平台上。
我的选择有哪些?CUDA、OpenCL、OpenMP还是其他?它们的优缺点是什么?
G/HLSL和PhysX呢?
我想进行“通用”编程,包括一些数学、数据处理、模拟等。也许输出一些漂亮的图形,但不是专门进行图形编程。

我花了大约一年的时间学习OpenCL。因此,我忘记了如何使用C++编程。结果发现,关于GPU性能的大部分说法都是错误的。对于双精度浮点数,你最好不要考虑它。对于单精度浮点数,与CPU相比有一个高达5倍的优势。这仍然是很显著的,但需要投入大量的资源。我不知道整数方面的情况。AMD GPU在比特币挖掘中很受欢迎,这是有原因的。现在我主要在CPU上使用OpenMP和SIMD。AVX-512将在未来几年内推出,我认为英特尔将缩小单精度浮点数方面的差距,并在双精度浮点数方面占据主导地位。 - Z boson
6个回答

9

标记为正确的答案现在已经过时和不正确。特别是OpenMP 4.0支持GPU加速。


4

OpenMP是仅限于CPU的,但易于实现;CUDA基本上仅限于GPU。ATI Stream支持两者,但仅适用于ATI / AMD GPU。 OpenCL是您唯一支持两者的“开放”选项。


2
OpenMP规范目前仅涵盖同构SMP系统。然而,当OpenMP V4.0规范发布(大约一年后),它很可能涵盖异构系统(应包括GPU)。据我所知,CUDA目前仅限于Nvidia。现在看来,OpenCL似乎是最好的选择。 - ejd
有人正在开发用于将C和Fortran + OpenMP转换为CUDA的代码翻译器。 - Nils
4
此回答已过时。OpenMP 4.0 支持 GPU 加速。 - Bob Anderson

1

1

0
如果您想涉足GPU编程,并且希望在比OpenCL更高的层次上进行,那么可以考虑使用Matlab。通过Matlab,您有机会编写GPU程序,而无需学习像OpenCL和CUDA这样的低级模型。 如果您要编写NVIDIA卡的程序,CUDA可能会更有效率。然而,openCL是GPGPU的标准,编码方式非常相似。尽管您可能会发现使用CUDA或openCL并不是很困难,但优化它们确实更加困难。 希望这能帮到您。

0

Open CL是开放的,但我听说它的缺点是缺乏文档。ATI可能比NVIDIA更好,因为据报道它在2009年时速度更快,但我不确定这些统计数据是否仍然正确。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接