SAME QUESTIONS / DIFFERENT MACHINES

把共同问题,放到三种架构里。

先问数据在哪里、谁在计算、什么时候可见,再学习厂商 API。每家公司保留四章基础讲解,再用八个进阶实践单元补环境、数据流、调试与答辩。先选一家做深,再迁移共同方法。

基础比较与深入实践,分别预算

路线中的44h用于共同模型与入门比较。下方 24 个进阶单元每个 4h,单家公司 32h,全部为额外 96h 核心;与基础比较分别安排。每个单元分别列 CPU、SDK、simulator 与设备路径。

共同问题AMDTenstorrentCerebras
如何划分计算kernel / grid / blockcore / tile / pipelinePE / layout / local work
如何移动数据host/device memory、load/storeNoC、reader/writer、buffersfabric 路由、PE 间消息
如何证明完成streams/events、错误检查缓冲区协议、kernel 完成通信依赖、task/host 协调
如何判断优化正确性 + 对应硬件 profiler端到端时间 + 通信/利用率模型边界 + 对应执行证据

amd

一个 kernel 怎样被提交、执行并回传结果?

HIP 表达线程与内存,ROCm 工具链和 runtime 组织编译、加载、队列与同步;驱动继续负责设备和内存管理。

贯穿练习:以 reduction 为主,解释 launch、线程索引、数据移动、错误检查和 profiler 证据。

真实 HIP/GPU 验证需要对应受支持设备与软件栈。Mac 上的例子仅验证 CPU 逻辑。

四章基础讲解

  1. 37
    HIP:从 CPU 数据到一次 kernel 调用

    五个数怎样经历分配、搬运、执行与验证?

    进入章节 →
  2. 38
    Streams 与 events:用依赖组织异步工作

    两个 stream 怎样安全共享中间结果?

    进入章节 →
  3. 39
    ROCm 各层:一次请求由谁负责

    HIP、ROCr、KFD、amdgpu 和硬件分别处理什么?

    进入章节 →
  4. 40
    HIP Reduction:从正确性到 profiling 问题

    算出21以后,怎样判断还值得优化哪一步?

    进入章节 →

八个进阶实践单元 · 额外 32h

  1. 01
    先确认机器能做什么:环境清单与求和基线

    建立版本记录、支持条件和一个永远可复算的 CPU oracle。

    4h →
  2. 02
    一次完整 HIP 调用:让 8 从设备回到 host

    从一个线程的正确 kernel 开始,跟踪分配、拷贝、提交、完成和释放。

    4h →
  3. 03
    分段 reduction:尾部元素也必须进入答案

    将固定串行实现改成有明确边界的两阶段求和。

    4h →
  4. 04
    数据移动与所有权:一次传输能省掉什么

    为同一批数据做两次求和,区别容量、有效长度和最后一次使用。

    4h →
  5. 05
    双缓冲的依赖图:重叠必须服从数据完成

    把三批求和组织成两个槽位,证明复用时没有覆盖正在读的数据。

    4h →
  6. 06
    正确性不是一个等号:数值、随机输入与重复调用

    给 reduction 建立独立 oracle 和失败定位信息。

    4h →
  7. 07
    rocprofv3:提出一个可由 trace 回答的问题

    测量调用范围,分清 API 提交、kernel 和拷贝。

    4h →
  8. 08
    把 reduction 讲成一个可复现的系统项目

    收束源码、测试、数据流和证据边界,完成英文答辩。

    4h →

tenstorrent

谁负责把下一块数据送到计算核心?

以 tile 和显式数据流思考,reader、compute、writer 通过缓冲区和同步形成流水线;不能直接套用 GPU 的所有隐含假设。

贯穿练习:从小张量布局到 reader/compute/writer 推演,再检查缓冲区容量、通信量与端到端输出。

实际 Metalium/TTNN 运行需要匹配的环境。可用 simulator 也要标明版本与覆盖范围。

四章基础讲解

  1. 41
    Tensix 与 tiles:先安排数据,再安排计算

    一张小矩阵怎样变成可分配的 tile 工作?

    进入章节 →
  2. 42
    TTNN 与 Metalium:不同抽象保留同一份数学合同

    高层一次 add 与底层三个kernel,怎样验证做的是同一件事?

    进入章节 →
  3. 43
    Reader、compute、writer:缓冲区里的生产与消费

    一块tile何时能读,何时才能复用?

    进入章节 →
  4. 44
    Tenstorrent 端到端例子:让每一层对同一结果负责

    怎样从两张tensor一直检查到host回读?

    进入章节 →

八个进阶实践单元 · 额外 32h

  1. 01
    确认 TT 开发环境:版本栈与矩阵 oracle

    在现有机器上建立 CPU 起点,并为已有 TT 设备选择匹配安装路线。

    4h →
  2. 02
    从 host 到 TTNN:逻辑形状与物理 tile

    将同一小矩阵嵌入32×32,验证转换和完整输出。

    4h →
  3. 03
    DRAM→L1→DRAM:不计算,先证明搬对了

    给每个tile编号,定位数据移动、打包和回读错误。

    4h →
  4. 04
    CB 发布协议:数据到齐才能 push

    用有限状态模型解释 reserve、NoC完成、push、wait、pop。

    4h →
  5. 05
    单核matmul:沿 K 轴累加,而不是覆盖

    把小矩阵变为有两个K块的reader/compute/writer流程。

    4h →
  6. 06
    多核分配:每个输出tile恰好一个拥有者

    按输出tile划分工作,验证覆盖、负载和tile编号。

    4h →
  7. 07
    DPRINT、Watcher与profiling:先找到停在哪一页

    为单核pipeline设置少量可解释观测点。

    4h →
  8. 08
    同一矩阵,两层实现:完成可追问的答辩

    比较TTNN与自己理解/修改的Metalium路径,不把模型夸成设备经验。

    4h →

cerebras

算法拆到多个 PE 后,局部结果怎样合起来?

计算和局部存储分布在 PE 上,布局、fabric 通信与 host/device 协调成为算法的一部分。

贯穿练习:用明确输入推演局部和、前缀传播与输出;区分数学模型、功能模拟和真实设备行为。

本书依据公开资料独立编写,不包含私有 SDK 项目文件或运行结果。CPU 模型不是 WSE simulator。

四章基础讲解

  1. 45
    WSE 与 PE:把数据放在拥有它的计算节点旁边

    三个PE各有两项数据,怎样得到一个全局结果?

    进入章节 →
  2. 46
    CSL 与 host:装载、启动、回读是一份共同合同

    为什么一个局部函数还不构成可运行的设备程序?

    进入章节 →
  3. 47
    多PE scan:消息里到底应该传什么

    局部前缀和怎样变成保持原顺序的全局前缀和?

    进入章节 →
  4. 48
    功能模型、simulator 与硬件:分别证明什么

    测试全绿之后,哪些结论仍然不能写?

    进入章节 →

八个进阶实践单元 · 额外 32h

  1. 01
    Cerebras环境分层:先写CPU合同,再核对SDK路径

    把Apple Silicon、Linux容器、官方simulator与硬件分别记录;用2×3 GEMV建立第一份oracle。

    4h →
  2. 02
    单PE闭环:导出符号、启动与回读

    写清layout、PE代码和Python host的责任,以一个小GEMV连通整个生命周期。

    4h →
  3. 03
    Host输入与布局:两次调用不能串结果

    把输入移到host,明确传输元素数、符号可写性与每次调用的初始化。

    4h →
  4. 04
    Memory DSD:把地址序列写出来

    从标量GEMV过渡到列访问DSD;用重复调用检查offset和累加器复位。

    4h →
  5. 05
    多个PE先各算一份:打包顺序必须可见

    从同任务复制过渡到不同输入,验证PE矩形、每PE元素数和回读顺序。

    4h →
  6. 06
    两PE列分块:从局部贡献到fabric完成

    把一个2×4 GEMV拆到左右两PE,连接路由、队列和异步完成任务。

    4h →
  7. 07
    把消息传下去:三PE scan与空分区

    从两PE发送/接收扩展成一条链;用空分区与缺失消息验证协议进度。

    4h →
  8. 08
    复现与答辩:说清每个结果在哪儿运行

    冻结一份窄范围的GEMV与scan训练包,用反例、来源与运行身份完成英文答辩。

    4h →

三个共同的追问

  1. 输入规模不能整除工作单元时,边界元素由谁处理?
  2. 生产者写完后,消费者凭什么知道数据已经可见?
  3. 你测的是计算、传输、排队,还是完整请求时间?
继续练习解释和追问 →