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强调的是线程级别,使用一条指令,运行在不同线程上,来处理不同的数据集。个人理解两者并不是非此即彼的关系,关注的重点不太一样。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |