← Tenstorrent 专题与八个进阶单元

TENSTORRENT / LAB 08 OF 08

同一矩阵,两层实现:完成可追问的答辩

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

本单元 4 小时。本公司八个单元共 32h,三家公司共额外 96h 核心实践;这笔时间在共同路线之外,未压入厂商入门的44h。

本页是实践讲义。打开、阅读或复制命令不代表完成。新单元的 SDK、simulator 与硬件命令均未在教材建设中执行;自己的结果应按实际后端保存。

先备与马上可用的例子

先完成:tenstorrent-07 →

直接打开机制图,边看边手推

PREDICT FIRST

具体问题与独立预期

输入与约定

复用小矩阵、物理两Ktile、2×3输出tile/4owner测试。

先根据输入写下自己的结果与理由,再展开参考推演;随后运行或检查实现。

对照参考结果与原因

小结果[[4,5],[10,11]]保持;多核全1为64。每项报告独立backend和来源。

最终产出是能逐层解释的数学、布局、协议与运行证据,不是一个没有版本和输入的大吞吐数字。

机制怎样连接起来

用一张对应表连接TTNN张量、Metalium DRAM buffer、CB页、计算累加器和输出tile。高层调用和低层程序可能使用不同内部配置;对比前先确认dtype、输入、padding和输出解释一致。

公开教程是来源,自己的改动是贡献,实机日志是验证,三者单独写。没有设备时仍可提交完整CPU数学/布局/协议实现与API阅读定位;不能把已阅读的DPRINT或profile文档写成实际使用经历。

四小时用于整合和复验已经完成的工作,不从零实现生产级多核GEMM。最后只挑一个窄后续实验,例如减少A tile重复读取,用明确计数或真实trace检验,而不是同时开启大量架构优化。

CHOOSE ONE EXECUTION PATH

按手头环境推进

CPU 路径可以先完成。额外的 SDK 或设备验证要有自己的运行记录;本单元的四小时不同时要求完成四个分支。安装等待超过本页预算时,留下阻塞条件,继续可做的数学、代码与协议工作。

CPU · 现有机器 · 本单元尚未验收

条件:现有 macOS 或 Linux;C++20 编译器或 Python 3 标准库。无需加速卡。

本分支做什么:复验完整CPU数学、布局、CB和分配模型。

保存什么证据:保存自己的源码、输入、实际 stdout/stderr 和退出码;只证明 CPU 逻辑。

教材初始执行状态:not-executed。这不是对你个人学习进度的判断。

SDK · 编译与环境 · 本单元尚未验收

条件:已有匹配发行版的 TT-Metalium/TTNN Linux 开发环境。

本分支做什么:报告读过/编译过的API与版本,保持教学代码来源。

保存什么证据:保存实际工具版本与编译命令;仅编译成功不能记成运行通过。

教材初始执行状态:not-executed。这不是对你个人学习进度的判断。

官方 simulator · 本单元尚未验收

条件:只有明确提供并且版本匹配的官方 simulator 才属于此分支。

本分支做什么:不使用通用CPU模型充当TT simulator证明。

保存什么证据:记录 simulator 名称、版本、输入、日志、退出状态;网页或 CPU 模型不算 simulator。

教材初始执行状态:not-executed。这不是对你个人学习进度的判断。

真实设备 · 本单元尚未验收

条件:用户已有并可使用的兼容设备或实验室环境;本单元不要求购买、租用或提交集群作业。

本分支做什么:仅使用实际TTNN/Metalium日志,未跑profiling不称优化已测。

保存什么证据:真实设备输出、同步点、设备型号和复现日志单独保存;未执行保持未通过。

教材初始执行状态:not-executed。这不是对你个人学习进度的判断。

READ → BUILD → BREAK → EXPLAIN

四小时,留下一个完整产出

可拆成多个时段。每次停下时保存代码、输入、实际结果和下一步,不用重新读整篇。没有通过当前检查时继续修正,不靠翻页推进。

1. 选定可讲版本 · 30 分钟

  1. 列TTNN起点、CPU模型和Metalium修改的来源与改动。
  2. 把未执行项移到限制表,不从最终说明中悄悄删去。

这一段的产出:贡献与后端表

2. 建立同一合同 · 40 分钟

  1. 核对两种实现逻辑shape、物理shape、dtype、padding和容差。
  2. 选择一个小用例可跨后端比较;不同配置只做独立报告。

这一段的产出:跨层合同

3. 复验与封装 · 90 分钟

  1. 从新目录按README复建实际完成的CPU路径,运行形状不符、padding污染、K覆盖、tile编号、CB协议测试。
  2. 可用设备才重跑对应TTNN/Metalium版本,并保存所有真实输出与工具版本。
  3. 为源码算摘要,保证日志来自当前版本;不拿旧日志配新源码。

这一段的产出:可复现项目包

4. 五分钟答辩 · 50 分钟

  1. 按问题→坐标→数据移动→同步→正确性→限制录一段英文回答。
  2. 临时把Nt从3改为2,指出分配和tile编号需要重算的地方。
  3. 回答下方追问,明确哪些是实际运行、哪些是推导。

这一段的产出:答辩与变体记录

5. 选择下一项优化 · 30 分钟

  1. 只选减少一次明确的tile读取或缩小一个buffer需求,先算预期变化。
  2. 写真实验证所需条件;没有硬件时以逻辑计数作为有限目标。

这一段的产出:下一次窄实验

EXPLICIT ENVIRONMENT / EXPLICIT STATUS

命令与可保存的起点

以下代码按各自环境使用,运行前完成对应步骤并核对版本。编译失败后停止,不运行目录中的旧二进制;每次采集日志使用新的运行目录。设备程序仅运行在你已有且可使用的环境中。

这个单元复用前一单元的项目文件,并按上面的具体任务修改。对应章节例子的源码、编译命令和预期输出在本页先备链接里;不要把例子自己的固定成功判定遗留到已改输入的版本中。

一个必须能解释的错误

错误情境:TTNN与Metalium得到同样四个小值,就宣称性能可直接比较。

为什么会错:两者可能dtype、padding、内部配置和计时范围不同;正确性相同只是比较的前置之一。

怎样修复:先统一输入与输出合同,再记录同机器同范围测量;无法统一就不报加速比。

EVIDENCE BEFORE ADVANCING

验收与面试追问

  • 每条claim可对应源码、真实输出或明确的推导。
  • 能解释tile坐标、两K贡献、CB发布、owner覆盖。
  • README在可用后端能顺序执行,SDK/hardware pending不伪造。

最后留下这几项

输入和预期、自己的源码或明确标为推演的状态表、实际命令/输出/退出码、一个失败与修复、后端与版本、尚未执行的部分。运行已有教学例子与独立完成修改分别记录。

1. 你的低层理解具体到哪一步?

对照中文要点与英文回答

指向自己改的tile编号、输入模式、CB检查或工作分配,再说明哪些未实机验证。

I point to the tile mapping, input patterns, buffer checks and work distribution I implemented, then state what remains unverified on hardware.

2. 为什么shape相同仍可能算错?

对照中文要点与英文回答

布局、stride、tile编号或dtype解释都可能不一致。

Matching shapes do not guarantee matching layouts, strides, tile indices or data types.

3. 下一次优化如何避免盲调?

对照中文要点与英文回答

选一项可计数的数据移动或有trace依据的瓶颈,先给预期变化,再实测。

I choose one measurable change and predict its effect before collecting data.

这些是依照本单元机制设计的追问,不是公司真题。个人验收仍依据实际代码、测试、测量与口述。

资料与版本核验

  • Matmul Single Core ↗

    Tile indexing; reader/compute/writer; enqueue and verification

    核验日期:2026-09-05。latest;记录 build_metal.sh 选项及源码 commit;页面代码片段不能替代完整匹配版本源码。

  • Matmul Multi Core ↗

    Work distribution; per-core runtime arguments

    核验日期:2026-09-05。latest;使用完整源码的单次 tilize/untilize 链路,不拼接重复展示的文档片段。

  • ttnn.matmul API ↗

    Tiled inputs; dtype; program-dependent memory support

    核验日期:2026-09-05。latest;未把文档列出的不同 dtype/config 当成所有设备都支持。

  • Device Program Profiler ↗

    Device-side instrumentation and timing

    核验日期:2026-09-05。latest;设备 profiler 数据与 host Python 时间分开,版本以 source build 为准。

正文、问题和实践设计依据公开资料独立撰写。官方页面的示例输出是资料中的结果,不是本机运行证据。latest 链接可能变化,请在自己的复现说明中保留实际版本。