用途:帮助用户根据算子维度、单次执行耗时与硬件峰值算力,计算算子的 MFU(Machine FLOP Utilization),并给出公式、推导过程和结果含义解读。
主要能力:
- FLOPs 估算。标准 GEMM 形状 (M,K) 与 (K,N) 时 FLOPs≈2×M×N×K;带 batch 为 2×B×M×N×K。线性层可折算为 M=B×L、K=D_in、N=D_out;Attention 的 QK^T 可折算为 B'=B×H、M=L_q、N=L_k、K=D_h。
- FlashAttention FLOPs。支持 BNSD/BSND/BSH/SBH/TND 布局,统一转换为 (B,N,S,D);TND 需 actual_seq_qlen、actual_seq_kvlen,按累积长度差得到各样本实际长度,计算 acl_seq_workload=Σ q_lens[i]×kv_lens[i],FLOPs=2×N×(D_q+D_k)×acl_seq_workload。Common layout 需 sparse_mode(0 完整、2 常为 causal、3 其他稀疏),causal 等情形按资料给定系数折算。
- MFU 计算步骤:确认算子类型、张量维度、执行耗时(ms)、单卡峰值算力;算出单次 FLOPs;t_s=time_ms/1000,Achieved TFLOPs/s=FLOPs/t_s÷1e12;MFU=Achieved TFLOPs/s÷Peak TFLOPs/s,输出百分比。
- 硬件峰值参考:Ascend 910B1 FP16/BF16≈378.88 TFLOPs/s,910B2≈353.89,910B3≈294.91,910B4≈270。缺确切峰值时可先询问型号、精度模式及是否用 Tensor/Matrix Core,用近似值需说明为粗略估算,建议以官方文档为准。
使用方式:向用户索取必要输入;按步骤给出复述输入、关键公式与代入过程、最终 MFU(2–3 位有效数字百分比)、原因或优化方向分析(如 batch 过小、K 维过小、带宽瓶颈等)。资料建议回答开头声明基于该 Skill 的 MFU 计算规范。
适用场景:算子性能评估与优化分析,覆盖 matmul/GEMM、线性层与 attention 相关算子。
限制:缺少 sparse_mode、actual_seq_qlen 等关键参数时不应猜测,需明确列出缺失项并说明从 profiler/日志获取的方法;峰值算力缺失时结果为粗略估算。