介绍到GPU编程

每个人都有一个巨大的并行超级计算机在他们的桌面上的graphics卡GPU的forms。

  • 什么是GPU社区的“hello world”相当于什么?
  • 我该怎么做,去哪里开始为主要的GPU供应商编程GPU?

-亚当

通过NVidia查看CUDA,IMO是进行GPU编程的最简单的平台。 有很多很酷的材料可供阅读。 http://www.nvidia.com/object/cuda_home.html

你好世界将是使用GPU做任何计算。

希望有所帮助。

  1. 您可以获得可编程的顶点和像素着色器,这些着色器允许直接在GPU上执行代码来操纵要绘制的缓冲区。 这些语言(即OpenGL的GL Shader Lang和高级着色器Lang和DirectX的等价物)都是C风格的语法,并且非常易于使用。 HLSL的一些例子可以在这里findXNA游戏工作室和Direct X.我没有任何像样的GLSL引用,但我相信有很多。 这些着色器语言提供了巨大的能量来操纵在每个顶点或每个像素级上直接在graphics卡上绘制的内容,使得诸如阴影,光照和绽放之类的事情很容易实现。
  2. 第二个想到的就是使用openCL来编写通用GPU的新行。 我不知道如何使用这个,但我的理解是,openCL让你能够访问显卡和普通CPU上的处理器的开始。 这还不是主stream技术,似乎是由苹果推动的。
  3. CUDA似乎是一个热门话题。 CUDA是nVidia访问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进行标准化。 这是一个苹果赞助的倡议,将是显卡供应商中立。

CUDA是一个很好的框架。 它可以让你用C编写GPGPU内核。编译器将从你的代码中产生GPU微代码,并将在CPU上运行的所有东西发送到你的常规编译器。 只有NVIDIA才能使用8系列或更好的显卡。 您可以查看CUDA区域 ,看看可以做些什么。 CUDA SDK中有一些很棒的演示。 SDK附带的文档是实际编写代码的一个很好的起点。 它会引导你写一个matrix乘法内核,这是一个很好的开始。

OpenCL努力使跨平台库能够编程适用于GPU等的代码。 它允许人们在不知道将运行哪个GPU的情况下编写代码,从而更容易使用某些GPU的function,而无需专门针对多种types的GPU。 我怀疑它不像原生GPU代码(或者像GPU制造商所允许的那样原生),但是对于一些应用来说,这种折衷是值得的。

它还处于相对较早的阶段(这个答案为1.1),但在行业中已经获得了一些牵引力 – 例如,它在OS X 10.5及更高版本上得到本地支持。

尝试GPU ++和libSh

LibSh链接很好地描述了它们如何将编程语言与graphics原语(显然,原语本身)绑定在一起,而GPU ++则用代码示例描述了它的全部内容。

进入GPU编程的另一个简单方法就是通过OpenACC来完成,而无需进入CUDA或OpenCL。

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卡。

也许你会喜欢这个GPGPU IDE ,这为一般的GPU实验隐藏了不必要的复杂性。 目前内核可以被编程为OpenCL和/或GLSL着色器。

如果使用MATLAB,使用GPU进行技术计算变得非常简单(matrix计算和繁重的math运算/数字运算)。 我发现它对游戏之外的GPU卡的使用很有用。 看看下面的链接:

http://www.mathworks.com/discovery/matlab-gpu.html

我也对这个话题和并行编程感兴趣。 我find了以下链接 ,请看Udacity.com!