mare_mark
mare_mark 是一个面向 MoonBit 的基准测试框架。它在计时之前用判定器验证每个实现,以校准过的批次和平衡区组进行测量,把每个原始观测保存在只追加的 JSONL 记录中,用稳健的成对统计和带种子的自助法比较实现,支持带实际持平和 Pareto 前沿的自动调优,并渲染自包含的 HTML 报告。本手册描述版本 0.3.0;每个包的 pkg.generated.mbti 文件是其公开名称和签名的权威来源。
包
| 包 | 作用 | 页面 |
|---|---|---|
model | 共享词汇:版本、协议、环境、结果、事件、决策 | API · 教程 · 设计 |
generator | 种子派生与输入指纹 | API · 教程 · 设计 |
fixture | 输入生命周期与准备计时 | API · 教程 · 设计 |
experiment | 判定器、缩减、交叉点分析 | API · 教程 · 设计 |
runner | 测量循环:验证、预热、校准、平衡区组 | API · 教程 · 设计 |
event | 接收器与 JSONL 记录 | API · 教程 · 设计 |
ir_sink | 常用接收器的简短构造函数 | API · 教程 · 设计 |
stats | 摘要、成对比较、自助法区间、离群值视图 | API · 教程 · 设计 |
ir_model | Plot IR:图表与差分证据 | API · 教程 · 设计 |
report | 从 JSONL 到 Plot IR,再到 JSON、SVG 和 HTML | API · 教程 · 设计 |
tune | 调优策略:分数、选择、Pareto 前沿、带种子的子集 | API · 教程 · 设计 |
tune_gemm | 完整的调优领域示例:分块矩阵乘法 | API · 教程 · 设计 |
cli | mare-mark 可执行程序:report 和受保护的 replay | API · 教程 · 设计 |
以下指南跨越多个包:快速入门、架构、验证以及仓库约定。本仓库没有文档测试包;本手册中的示例按 验证 中的描述,针对已发布的包进行编译和运行。
阅读路径
初次使用 mare_mark 做基准测试。 先读快速入门,再读 runner 教程和 stats 教程。用 report 教程发布结果。
在项目中使用它。 把 runner、stats 和 model 的 API 页面放在手边;阅读 fixture 和 generator 教程以构造真实的输入,阅读 experiment 教程以了解判定器和交叉点。关于调优,请阅读 tune 和 tune_gemm。
评审结果或参与贡献。 阅读架构和各设计页面,从 runner(实验设计与校准)和 stats(估计量、自助法与决策规则)开始,然后阅读验证。
工具链与安装
mare_mark 需要 moonc 0.10 或更高版本的 MoonBit。它依赖 moonbitlang/x 0.5.5 和 moonbitlang/async 0.22.4。
moon add Luna-Flow/mare_mark@0.3.0
每个包都能在所有 MoonBit 目标上编译。runner.run 是异步的,只能在 moonbitlang/async 提供运行时的地方运行:native、JS 和 wasm(不包括 wasm-gc)。子进程工作者、replay 命令以及 stdin/stdout 报告需要 native 目标。
稳定性
mare_mark 尚处于 1.0 之前。带版本的契约包括协议词汇 mmkp_1、JSONL 产物 mmka_1、Plot IR 模式 mmks_1 以及 GEMM 调优配置 mmkts_1;读取器会拒绝其他版本。计时阈值、候选枚举、HTML 样式和私有布局都不属于兼容性承诺。每个设计页面都以该包的边界结尾。