simd vs simt

打印 上一主题 下一主题

主题 961|帖子 961|积分 2887

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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

东湖之滨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表