每个人都拥有一台庞大的并行超级计算机,形式为显卡 GPU,放置于他们的桌面上。
- GPU 社区中的 "hello world" 相当于是什么?
- 我该去哪里,做些什么,才能开始为主要 GPU 供应商编程?
-Adam
每个人都拥有一台庞大的并行超级计算机,形式为显卡 GPU,放置于他们的桌面上。
-Adam
推荐使用NVidia的CUDA平台进行GPU编程,这是最容易上手的平台之一,有大量优秀的学习资料可供阅读。
Hello world级别的实例可以通过GPU进行各种计算。
OpenCL 是一项旨在创建跨平台库的努力,能够编写适用于GPU的代码。它允许编写代码而无需知道它将在哪个GPU上运行,从而使得在不针对多种类型的GPU的情况下使用一些GPU的功率更加容易。我怀疑它的性能不如本地GPU代码(或者不如GPU制造商允许的本地代码),但是在某些应用程序中,这种权衡是值得的。
它仍处于相对早期的阶段(截至本答案为1.1),但已在行业中得到了一些关注-例如,它在OS X 10.5及以上版本中得到了本地支持。
未来所有GPU工作都将使用OpenCL进行标准化。这是一个由苹果赞助的倡议,将成为图形卡供应商中立的技术。
另一种不需要涉及CUDA或OpenCL的GPU编程简便方式是通过OpenACC来实现。
OpenACC类似于OpenMP,使用编译器指令(例如#pragma acc kernels
)将工作发送到GPU。例如,如果您有一个大循环(只有较大的循环才会真正受益):
int i;
float a = 2.0;
float b[10000];
#pragma acc kernels
for (i = 0; i < 10000; ++i) b[i] = 1.0f;
#pragma acc kernels
for (i = 0; i < 10000; ++i) {
b[i] = b[i] * a;
}
编辑:不幸的是,目前只有 PGI 编译器真正支持 OpenACC,适用于 NVIDIA GPU 卡。