Answers:
通过IMO的NVidia查看CUDA,它是进行GPU编程的最简单平台。有很多很酷的材料可供阅读。
http://www.nvidia.com/object/cuda_home.html
Hello world将是使用GPU进行任何类型的计算。
希望有帮助。
我认为其他人已经回答了您的第二个问题。对于第一个CUDA的“ Hello World”,我认为没有固定的标准,但就个人而言,我建议使用并行加法器(即,一个将N个整数相加的程序)。
如果您看一下NVIDIA SDK中的“减少”示例,那么可以扩展表面上简单的任务以演示众多CUDA注意事项,例如合并读取,内存库冲突和循环展开。
有关更多信息,请参见此演示文稿:
http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
看一下ATI Stream Computing SDK。它基于斯坦福大学开发的BrookGPU。
将来,所有GPU工作都将使用OpenCL进行标准化。这是苹果公司发起的一项举措,将与显卡供应商无关。
OpenCL致力于使跨平台库能够编写适用于GPU的代码。它允许人们编写代码而无需知道它将在哪个GPU上运行,从而可以更轻松地使用某些GPU的功能,而无需专门针对几种GPU。我怀疑它的性能不如本机GPU代码(或不如GPU制造商所允许的本机代码),但是对于某些应用程序来说,这种折衷是值得的。
它仍处于相对较早的阶段(截至此答案为1.1),但在业界已获得一定的关注-例如,OS X 10.5及更高版本本身就支持它。
无需进入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;
}
编辑:不幸的是,对于NVIDIA GPU卡,只有PGI编译器现在才真正支持OpenACC。
如果使用MATLAB,则将GPU用于技术计算(矩阵计算和繁重的数学/数字运算)变得非常简单。我发现它可用于游戏之外的GPU卡。查看以下链接: