●SPMDGPU的特征及程序模型
GPU的构造与普通CPU有很大不同。不过GPU指令的实行与结构和连接是关联的。GPU使用的是普通的“Single Program, Multiple Data(SPMD)”程序模型。当。程序员写出一个数据程序的话,就可以在GPU的程序里自动运行。如果是写的single thread程序的话则会自动实现multi-thread操作。
SPMD的概要
CUDA的概要
在CUDA编码中并列运行程序部分的“内核(Kernel)”是通过GPU指令集进行转换然后传输到GPU,因此可以在GPU上同时处理多个数据。而在实际图形处理的时候,Vertex/Geometry/Pixel是各自不同的内核程序,同时如果不是“Single Program”的话,GPU运行也是需要“Single Sentence”的(如果是通用应用软件则只需要1个内核)。
至于GPU在硬件方面的SIMD(Single Instruction, Multiple Data)的构成,多数量处理器对各自的数据实行的是相同的内核以及线程程序中相同的指令。总之就如同多核心GPU一样,各个处理器实行的是不同的指令。而全处理器在原则上则是同时实行相同的指令 这种结构在简化指令控制机制和数据移劝机制上有较大的效果。因此GPU与CPU相比将可以配备更多的运算单元。
实际上现在的GPU在某种程度上由叫做处理器簇(NVIDIASM)的单位控制着。作为SIMD控制的各个单元中的处理器也可使其在执行相同线程程序时执行相同的指令。
CUDA的程序编制模型