GPU架构及运行机制学习笔记_gpu结构-CSDN博客
SIMD (Single Instruction, Multiple Data) 和 SIMT (Single Instruction, Multiple Threads)
SIMD 架构是指在同一时间内对多个数据执行相同的操作,适用于向量化运算。例如,对于一个包含多个元素的数组,SIMD 架构可以同时对所有元素执行相同的操作,从而提高计算效率。
常见的 SIMD 架构包括 SSE (Streaming SIMD Extensions) 和 AVX (Advanced Vector Extensions)。
SIMT 架构是指在同一时间内执行多个线程,每个线程可以执行不同的指令,但是这些线程通常会执行相同的程序。这种架构通常用于 GPU (Graphics Processing Unit) 中的并行计算。
CUDA (Compute Unified Device Architecture) 和 OpenCL 都是支持 SIMT 架构的 编程模型。
SIMD 适用于数据并行计算,而 SIMT 适用于任务并行计算。在实际应用中,根据具体的计算需求和硬件环境选择合适的架构可以提高计算性能。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:GPU架构及运行机制学习笔记_gpu结构-CSDN博客
2.3 SIMT
现在回头看下前面的hello world程序段。如果把核函数的入口改成GPUFunction<<<10, 10>>>();
,那么就会打印100次GPU的输出。只编写一行代码,但这100个线程全部运行一段相同的程序段,这种就是CUDA的编程模型:SIMT(Single Instruction Multiple Thread)
SIMT和SIMD的概念有些容易混淆。SIMD(multiple data)指的是单指令多数据,把一个运算指令交由多个运算部件,强调使用运算部件和向量操作,来批量的对数据做处理和提升数据层面的并行性。
比如上图的第三列。一条加法指令同时分配给4个ALU(或者是FPU, whatever)。
而SIMT强调的是线程级别,使用一条指令,运行在不同线程上,来处理不同的数据集。个人理解两者并不是非此即彼的关系,关注的重点不太一样。