← Cerebras 专题与八个进阶单元

CEREBRAS / LAB 08 OF 08

复现与答辩:说清每个结果在哪儿运行

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

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

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

先备与马上可用的例子

先完成:cerebras-07 →

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

PREDICT FIRST

具体问题与独立预期

输入与约定

复用已完成的单PE GEMV两组输入、三PE独立输入、两PE列分块以及三PE含空分区scan。新增scan变体[[1,-1],[2],[]];不添加新架构或第二个主项目。

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

对照参考结果与原因

GEMV回归[8,20]/[1,6];三PE独立[8,20,2,5,1,4];两PE合并[4,9];scan基线[2,1,4,8],新变体[1,0,2]。所有未执行的后端明确pending,不汇总成“全部设备通过”。

可信的训练成果是可重建、可追问、边界明确的一小段实现;文档来源、个人改动和实际执行不是同一层证据。

机制怎样连接起来

冻结时保留一个自己的主实现版本和独立oracle,列出实际修改的函数。复现README从输入合同开始,再写来源、环境、编译、运行、失败与限制。官方示例提供语言/API参考;自己通过哪些变体才支持哪一段独立实现,应逐项解释。

把CPU、CSL编译、官方simulator、硬件正确性、性能各写一行。某一行没有实际日志就保持pending;GUI中的路由配置可以来自编译前产物,不能因此声称存在运行轨迹。sdk_debug_shell visualize用本人产物,时间/指令pane能显示什么取决于版本与架构。

本轮不要求硬件计时。若已有合法设备结果才报告计时范围与样本;host运行整个simulator的墙钟时间不能当成WSE延迟。最后用一个输入变化追问自己:哪里更新参数、哪段布局改变、哪些测试必须重跑。

CHOOSE ONE EXECUTION PATH

按手头环境推进

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

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

条件:现有macOS或Linux与C++20编译器;不需要加速卡、VM或SDK。

本分支做什么:重建本人CPU模型与oracle,跑固定、新变体和拒绝路径。

保存什么证据:保存本人源码、输入、实际输出、退出码与修复记录;仅标CPU逻辑验证,不称官方simulator。

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

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

条件:已获官方SDK访问并具备匹配版本环境;Linux使用官方Apptainer/SingularityCE等前置,Apple Silicon按第01单元核对并自行准备Lima路径。没有环境时仍可先完成CPU分支。

本分支做什么:只列确有本次产物和版本记录的编译,源码变化后重新编译。

保存什么证据:保存实际build_id、编译命令、退出码、产物元数据与源码摘要;只编译不能标运行成功。

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

官方 simulator · 本单元尚未验收

条件:已经可用的对应官方fabric simulator和同版编译产物;standalone/legacy路径与appliance路径按官方入口区分。

本分支做什么:使用本人同版编译产物复跑,区分运行trace与仅有路由配置。

保存什么证据:实际host检查、输入、日志、完成状态与版本分开留在自己的记录;这里没有运行结果。

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

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

条件:用户已经有权使用的Cerebras系统及其管理员支持的版本/运行模式;本课程不要求花钱、租机器或提交集群作业。

本分支做什么:不将模拟墙钟时间当硬件时间;硬件/性能未做就保留pending。

保存什么证据:设备正确性与性能分别记录;simulator耗时不作为硬件时间,硬件未执行保持未通过。

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

READ → BUILD → BREAK → EXPLAIN

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

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

1. 冻结本人范围 · 30 分钟

  1. 选定源文件与输入,列本人实现、公开参考、仍为设计的部分。
  2. 为实际已有的源文件记录摘要;CPU-only不创建空CSL文件凑清单。尚未实现的设计部分单独列明,避免后续修改后沿用旧运行记录。

这一段的产出:范围与源码身份表

2. 重建README · 40 分钟

  1. 写按顺序执行的CPU路径;SDK/官方simulator路径仅列已满足条件的命令,未满足的条件单独说明。
  2. 在新练习目录从自己的源码重建,编译失败则停止,不执行遗留二进制。

这一段的产出:可复现说明

3. 跑固定与新变体 · 85 分钟

  1. 复跑所有本页固定数值、短payload/奇数N/超CAP拒绝、重复调用、缺消息模型反例。
  2. 计算新scan变体totals=[0,2,0]、offsets=[0,0,2],输出[1,0,2];0是有效输出不能过滤。SDK/硬件只复跑实际可用分支。

这一段的产出:逐后端结果与失败记录

4. 五分钟英文答辩 · 55 分钟

  1. 按问题→数学合同→布局→消息完成→测试→未验证范围录一次说明。
  2. 抽下方三题,再加入“改N=3”“中间PE为空”“同一RPC调用两次”的打断;先回答再看答案。
  3. 无法独立解释的部分留作复写任务,不用已读页数替代。

这一段的产出:录音/逐字稿与缺口

5. 选择下一次窄验证 · 30 分钟

  1. 只选一个下一问题,例如支持奇数列分块、不同合法PE数或真实simulator重复调用。
  2. 写新增输入、环境前置、预期证据;没有设备则继续CPU与公开API,不租用设备。

这一段的产出:单一后续实验定义

EXPLICIT ENVIRONMENT / EXPLICIT STATUS

命令与可保存的起点

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

1. 对实际已有的本人源码记录摘要;CPU起点如下,已实现SDK部分才把对应文件加入清单

环境:CPU · 现有机器 · 状态:not-executed。核对官方 API / 工具说明 ↗

bash · 按说明保存到自己的练习目录
shasum -a 256 gemv_oracle.cpp
2. 仅本人实际simulator产物齐备时查看调试界面

环境:官方 simulator · 状态:not-executed。核对官方 API / 工具说明 ↗

bash · 按说明保存到自己的练习目录
sdk_debug_shell visualize

一个必须能解释的错误

错误情境:复现包只有SUCCESS截图,未列输入、源码版本或到底在哪个环境运行。

为什么会错:别人无法重建结论,也无法区分CPU模型、SDK编译、官方simulator和真实设备。

怎样修复:把每条成功绑定输入、源码摘要、命令、输出、退出码和后端;同时保留未验证与失败路径。

EVIDENCE BEFORE ADVANCING

验收与面试追问

  • 所有本页数值可由自己的oracle重新得到;新变体保留有效0。
  • README在新目录可执行实际具备的路径;没有用旧二进制假通过。
  • 能解释输入/DSD重置、bias一次、消息完成和空分区;没有混写模拟与硬件结果。

最后留下这几项

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

1. 你具体独立完成了什么?

对照中文要点与英文回答

先指自己的函数与变体测试,再说明参考的公开API;没有独立复写或执行的部分明确保留设计/待验证。

I point to my changes and tests, distinguish the public API reference, and identify what remains a design rather than an executed implementation.

2. simulator运行用了10秒,可以说WSE延迟10秒吗?

对照中文要点与英文回答

不能。那是宿主运行模拟软件的墙钟范围,不等于目标设备执行延迟;性能结论需明确工具、单位和设备。

Simulator wall time is not hardware latency. I state the measured scope and backend before interpreting any number.

3. 下一步为什么只选一个变体?

对照中文要点与英文回答

窄变体能保留已验证基线并定位变化影响;同时更改分区、精度、协议和架构会让失败难以归因。

A bounded change preserves the baseline and makes failures attributable to a specific decision.

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

资料与版本核验

  • Compiling and Running Examples ↗

    Compile/run workflow and build outputs

    核验日期:2026-09-05。官方公开文档于2026-09-05核验;安装页所列下载包为SDK 2.10.0-{build_id}。这不是本机安装事实。执行时记录实际tarball/build_id、目标WSE架构和对应文档版本。

  • SDK GUI ↗

    Artifact directory, pre/post-execution views, WSE-3 instruction-trace version conditions

    核验日期:2026-09-05。官方公开文档于2026-09-05核验;安装页所列下载包为SDK 2.10.0-{build_id}。这不是本机安装事实。执行时记录实际tarball/build_id、目标WSE架构和对应文档版本。

  • Running SDK on a Wafer-Scale Cluster ↗

    Separate cluster/appliance workflow

    核验日期:2026-09-05。官方公开文档于2026-09-05核验;安装页所列下载包为SDK 2.10.0-{build_id}。这不是本机安装事实。执行时记录实际tarball/build_id、目标WSE架构和对应文档版本。

  • SdkRuntime API Reference ↗

    Runtime lifecycle and data movement

    核验日期:2026-09-05。官方公开文档于2026-09-05核验;安装页所列下载包为SDK 2.10.0-{build_id}。这不是本机安装事实。执行时记录实际tarball/build_id、目标WSE架构和对应文档版本。

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