已关闭
[Documentation|文档反馈]-“SPMD(Single Program, Multiple Data):每个线程运行同一份程序,但每个线程处理不同的数据元素。”这里应该是 SIMT,不是 SPMD #1573
magicbowen创建于 8月22日关闭于 20 天前
8月24日 将 shaonaite 设为负责人
shaonaite
8月24日 评论:
8月24日 评论:
你好。经确认,原文“SPMD(Single Program, Multiple Data)”表述正确。SPMD 描述的是程序组织方式,即多个执行实例运行同一份程序并处理不同数据。SIMT Kernel 采用的是 SPMD 编程方式。


8月27日 将 ascendhjh 设为负责人
8月27日 移除了负责人 shaonaite
ascendhjh
24 天前 评论:
24 天前 评论:
SPMD(Single Program, Multiple Data,单程序多数据)是一种程序级并行模型:多个独立计算单元同时执行同一份程序代码,但各自处理不同的数据分片。
SIMD(Single Instruction, Multiple Data,单指令多数据)与SIMT(Single Instruction, Multiple Threads,单指令多线程)同属指令驱动的并行执行范式:SIMD由单条指令同时驱动多个运算单元处理不同数据,硬件效率高但分支能力受限;SIMT以单条指令驱动多个线程并行执行,线程可独立分支,灵活性更强。
在Ascend C编程中,SPMD与SIMD/SIMT形成三种典型组合:
SPMD+SIMD:将AI Core抽象为逻辑核(Block),所有Block运行相同代码,以Block为视角编程,Block内部调用SIMD指令;
SPMD+SIMT:将硬件抽象为Grid→Thread Block→Thread架构,以Thread为视角编程,关注每个Thread需处理的数据;
SPMD+SIMD/SIMT混合:核函数本质遵循SPMD+SIMD,内部以向量函数(Vector Function, VF)为粒度进行SIMD与SIMT切换——SIMT VF抽象为一个SIMT Thread Block,内部基于Thread编程;SIMD VF内部直接调用SIMD指令。
为简化表述,以 SIMD 和 SIMT 分别指代对应的编程模型。


19 天前 添加了label:resolved
18 天前 changed title from **文档反馈-内容错误(正确性)-“SPMD(Single Program, Multiple Data):每个线程运行同一份程序,但每个线程处理不同的数据元素。”
这里应该是 SIMT,不是 SPMD** to **[Documentation|文档反馈]-“SPMD(Single Program, Multiple Data):每个线程运行同一份程序,但每个线程处理不同的数据元素。”这里应该是 SIMT,不是 SPMD**
这里应该是 SIMT,不是 SPMD