已关闭
文档反馈-内容错误(正确性)-有一段对 SIMT 的全写错了,是Mutiple Threads。 SIMT核函数(Kernel)编程基本步骤(遵循SPMD模型) SIMT的SPMD模型(Single Program, Multiple Data):每个线程运行同一份程序,但每个线程处理不同的数据元素。 Tiling(分块):建立线程索引与数据索引的一一对应关系。 数据搬入:通过指针直 #1643
Minla创建于  27 天前关闭于  19 天前
Minla
Minla
27 天前 创建
  1. 【文档链接】

https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/latest/programug/Ascendcopdevg/docs/zh/guide/getting_started/quick_start/heterogeneous_system_and_programming_model.md

  1. 【页面标记】

无

  1. 【问题类型】

内容错误(正确性)

  1. 【问题描述】

有一段对 SIMT 的全写错了,是Mutiple Threads。

SIMT核函数(Kernel)编程基本步骤(遵循SPMD模型)
SIMT的SPMD模型(Single Program, Multiple Data):每个线程运行同一份程序,但每个线程处理不同的数据元素。

Tiling(分块):建立线程索引与数据索引的一一对应关系。
数据搬入:通过指针直接访问Device Memory,硬件自动加载到寄存器,无需显式调用数据搬运API。
数据计算:编写标量代码(支持分支、循环);多线程协作时需插入同步指令。
数据搬出:可通过指针将结果直接写回Device Memory,无需显式调用数据搬运API。

  1. 【预期结果】
  • 请填写预期结果
likedislike
shaonaiteshaonaite成员
27 天前 将 qixingkai 设为负责人
qixingkai
qixingkai成员
27 天前 评论:

您好,该资料对 SPMD、SIMD、SIMT 的说明本身并无问题。您之前提到的“SIMT 全写错了”,应理解为不同资料在表述上可能不够清晰。

SPMD 是程序级并行模型:多个计算单元执行同一份代码,各自处理不同数据分片。

SIMD/SIMT 属指令驱动并行范式:SIMD 单指令驱动多运算单元,效率高但分支受限;SIMT 单指令驱动多线程,线程可独立分支,灵活性更强。

Ascend C 中三种组合:SPMD+SIMD(以 Block 为视角,内部调 SIMD 指令)、SPMD+SIMT(以 Thread 为视角)、SPMD+SIMD/SIMT 混合(核函数遵循 SPMD+SIMD,内部以 VF 为粒度切换 SIMD/SIMT)。

为简化表述,以 SIMD 和 SIMT 分别指代对应的编程模型。

相关 issue 已在 #1573 中跟踪,正在讨论资料优化。

likedislike
shaonaiteshaonaite成员
25 天前 移除了负责人 qixingkai
shaonaiteshaonaite成员
25 天前 将 ascendhjh 设为负责人
Aascendhjh成员
24 天前 关联了pull request:更新 SPMD+SIMD/SIMT编程模型描述
ascendhjh成员
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 分别指代对应的编程模型。

已提交PR更新描述:https://gitcode.com/cann/asc-devkit/pull/5938

likedislike
Aascendhjh成员
19 天前 issue状态由 进行中 改变为 已完成
Aascendhjh成员
19 天前 关闭了 issue
CANN-robotCANN-robot成员
19 天前 添加了label:resolved
Lliuliu876成员
18 天前 issue类型由 任务 改变为 文档