高性能与并行计算
高性能与并行计算近二十年的变化不应写成工具清单。真正被换掉的是评价标准:系统不再只凭单点分数、平均速度或“能运行”证明自己,而要说明在异构节点、百亿亿次机器和跨站点科学工作流中,通信、数据移动、同步和能耗怎样进入结果。上一个十年主要把旧默认拆成可测约束;这十年则经历真实部署与方法清算,要求同时报告到解时间、能量到解和数值偏差。下面二十条均按主证据年份归幕,每条给出源行、六段证据链和可抽取的碰撞行。
第一幕把“峰值更高就更快”拆成上界、通信、任务和能耗四类可测约束。 本幕八条共同把旧默认第一次放到可测上界、误差、资源或行为证据上,并试写出可与别的领域换算的分母。
甲、屋顶线模型:算术强度决定性能上限
在屋顶线模型出现以前,性能讨论的默认单位是处理器的峰值浮点数:机器按峰值排座次,程序按占峰值的百分比被评判,达不到就归咎于代码写得不好。这个默认前提把内存系统当成了背景板——它假定只要算得够快,数据总会及时到位。真正被换掉的不是一个指标,而是「性能上限由谁给定」这个问题的答主:从处理器一家,改成处理器与内存带宽两家共同夹定。
这条理论的可反驳命题是:程序能达到的上限由峰值算力与内存带宽共同夹定;算术强度决定它落在带宽顶还是计算顶。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“有效浮点运算次数/从主存搬运的字节数”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。它改写的不是工具名称,而是什么比较才算同一个问题。
主证据来自Williams、Waterman 与 Patterson,2009年《Communications of the ACM》52(4):65–76。具体设计与读数是:模型把纵轴性能、横轴算术强度以及计算峰值和带宽斜顶放在一图中;一次测量即可判断程序受哪一道上界约束。Williams、Waterman与Patterson于2009年用Roofline把运算强度、带宽和峰值算力放进同一张性能上界图,随后成为节点级瓶颈诊断基准。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“机器拓扑与输入尺度是否改变瓶颈”。对照证据见Dongarra、Heroux与Luszczek,2016年《International Journal of High Performance Computing Applications》30(1):3–10:HPCG以稀疏矩阵向量乘、全局归约和多重网格替代高度规则的密集线性代数;它与HPL排名的巨大落差直接显示真实应用受通信和内存约束。它显示指标容易奖励规则内核而非真实应用;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
这条改变的最低交付责任是:报告一个性能数字时,必须同时说明它落在带宽顶还是计算顶。只报「达到峰值的百分之几」而不报算术强度,等于没有交代这个程序究竟受什么约束,因而也无法判断优化方向。采购与验收的问法也随之变化——从「这台机器峰值多少」变成「我的算术强度落在哪一段,这台机器在那一段能给我多少」。
与本块第七条《数据移动能耗层级》构成一对:屋顶线用带宽给出时间上限,能耗层级用焦耳给出代价上限,两者的分母不同,结论可以相反——一个程序可能已经贴住带宽顶、时间上无可再优,却仍有大量能量花在无谓的数据往返上。只按屋顶线优化的程序,在能量到解的账本上未必占优。
乙、通信规避:少搬数据比少做运算更重要
通信规避提出以前,算法优劣的默认判据是浮点运算次数:运算数少的算法就是好算法,数据搬运被当作实现细节交给编译器和硬件。这个前提在存储层次浅、网络便宜的年代大致成立,但当一次访存的代价超过一次乘加两个数量级之后,它就把最贵的那笔账排除在了目标函数之外。这条转向要求算法设计者把通信量与运算量并列写进代价模型,并承认两者之间存在可以交易的汇率。
这条理论的可反驳命题是:在深层存储层次与大规模网络上,算法首先应逼近通信下界,即使因此增加少量算术。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“每减少一次全局通信所增加的本地运算/总运算量”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。它改写的不是工具名称,而是什么比较才算同一个问题。
主证据来自Demmel、Grigori、Hoemmen 与 Langou,2012年《SIAM Journal on Scientific Computing》34(1):A206–A239,DOI:10.1137/080731992。具体设计与读数是:论文先给出字移动量与消息数的通信下界,再构造CAQR和CALU逼近该下界;判据不再只是三次方量级的浮点运算数。Demmel等在2008—2011年给出线性代数通信下界与CAQR、CALU等算法;实验证明减少消息与数据移动可在大规模机器上压过传统最少运算方案。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“最快一次运行能否代表运行分布”。对照证据见Horowitz,2014年《IEEE International Solid-State Circuits Conference》:10–14,页10–14:其45纳米估算中,32位浮点加法约0.9皮焦,而一次32位DRAM访问约640皮焦,相差约七百倍,直接改写了“多做几次算术必然更贵”的直觉。它显示封装环境并不自动封装外部数据与服务;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:一个新算法要声明自己的通信复杂度,并说明是否已经逼近该问题的通信下界。只报运算次数下降而不报数据搬运次数,在深层存储层次上就是不完整的申报。相应地,「更优算法」的验收也要求给出在何种带宽与延迟参数下优势成立——参数一换,多算一点少搬一点是否划算可能反号。
与本块第九条《混合精度可靠性》共享同一笔交易,方向却相反:混合精度是拿数值精度换时间与能量,通信规避是拿额外算术换搬运。两者在同一个程序里可能互相抵消——低精度让单次通信搬得更少,却也可能因为需要更多次迭代修正而把通信轮数加回去。谁在何种规模下占优必须实测,不能由任一侧单独推理决定。
丙、分区全局地址空间:全局可见不等于远程免费
分区全局地址空间之前的两种默认是:要么全局共享内存、程序员不必关心数据在哪,要么消息传递、每一次远程访问都必须手写。前者把物理距离藏进语言,后者把距离全部推给程序员。这条转向拒绝了这个二选一,主张全局视图与代价可见可以并存——语法可以是全局的,但语义必须把本地与远程的代价差保留在程序员看得见的地方。
这条理论的可反驳命题是:PGAS允许程序以全局视图表达数据,同时把本地与远程访问的代价差异保留为语言语义。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“远程访问时延/本地访问时延”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。它改写的不是工具名称,而是什么比较才算同一个问题。
主证据来自Kamil 等,2007年《PASCO会议录》,ACM。具体设计与读数是:比较把同一组并行内核分别写成UPC、Titanium或Coarray风格,并把本地访问和远程访问分别计时;结果显示全局语法不会抹平物理距离。UPC、Coarray Fortran与OpenSHMEM在2006—2016年的应用比较显示,生产率提升只有在数据亲和性明确时才不牺牲扩展性;Fortran 2008正式纳入协同数组。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“节省通信是否以额外计算和内存为代价”。对照证据见Augonnet、Thibault、Namyst 与 Wacrenier,2011年《Concurrency and Computation: Practice and Experience》23(2):187–198:StarPU让任务声明读写依赖,再由运行时在CPU和GPU间选择实现;实验读数同时报告计算时间、传输时间和调度开销,而不是只报核数。它显示结论可能只是某台机器上的局部最优;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:任何声称「全局可见」的编程模型,都要交出本地与远程访问的实测代价比,而不是只交出一个能跑通的示例。可用性演示不能替代代价申报——程序能编译、能出正确结果,不等于它在这台机器的拓扑上是可用的。教学与文档也要随之改口:不讲清距离,学习者会把语法上的对称误当成性能上的对称。
与本块第十三条《局部性感知调度》分工相反:本条把数据位置交给语言在编译期表达,第十三条把它交给运行时在执行期决定。两者的失败模式不同——语言层暴露得越彻底,程序越难移植;运行时决定得越多,性能越难解释。一个系统在这两条上同时取最大值是不可能的,取舍点必须写明。
丁、任务图运行时:并行次序应由依赖关系生成
任务图运行时出现以前,并行程序的默认组织方式是循环并行加显式同步屏障:程序员写出静态的执行次序,机器照办。这个前提要求所有资源同质、每一步耗时可预测;一旦节点内出现加速器、多级内存和快慢不一的核,静态次序就会在最慢的那一步上排队。这条转向把「谁先谁后」从程序员手写改成由数据依赖生成,执行次序成为运行时的产物而非源码的属性。
这条理论的可反驳命题是:把计算表达成带数据依赖的任务图,运行时再依据资源、就绪性和局部性动态排程。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“关键路径长度/任务图总工作量”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。它改写的不是工具名称,而是什么比较才算同一个问题。
主证据来自Augonnet、Thibault、Namyst 与 Wacrenier,2011年《Concurrency and Computation: Practice and Experience》23(2):187–198。具体设计与读数是:StarPU让任务声明读写依赖,再由运行时在CPU和GPU间选择实现;实验读数同时报告计算时间、传输时间和调度开销,而不是只报核数。StarPU自2009年、PaRSEC与OmpSs在2010年代前半期展示了跨CPU/GPU的动态调度;同一任务图可随机器与输入改变映射。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“跨加速器迁移时效率与正确性是否同时保持”。对照证据见Nickolls、Buck、Garland 与 Skadron,2008年《ACM Queue》6(2):40–53:CUDA把线程组织为线程块和32线程的warp,并显式区分主机、设备及其存储层次;这个执行单位后来成为性能诊断的基本读数。它显示近似和低精度可能把误差推到科学结论;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:性能报告必须区分算法本身的并行度与调度造成的空转。只给总运行时间无法分辨究竟是关键路径太长,还是就绪任务没有被喂给合适的设备。运行时的调度决策日志因此成为可复现材料的一部分——同一份源码在同一台机器上两次运行的调度可能不同,不记录就无法解释性能差异。
与本块第十五条《韧性超越检查点》在同一个位置上争夺同一件事:任务图把失败的粒度变小了,一个任务可以单独重放;检查点把失败的粒度定在整程序。两者对「什么算一次可恢复的单位」给出不同答案,因此在极端规模下的恢复成本估算会相差很远——用任务重放的系统若仍按检查点周期做容量规划,会高估自己的可用时间。
戊、异构加速编程:GPU不是外设而是协处理器
GPU进入科学计算之初的默认位置是「外设」:主程序在CPU上跑,把一段内核甩给显卡,算完取回。这个前提让数据在主机与设备之间反复往返,而往返本身很快就超过了内核加速省下的时间。这条转向把加速器改写成协处理器——程序的数据布局、生命周期与控制流都要围绕它重新组织,而不是把它当成一个可选的加速开关。
这条理论的可反驳命题是:高吞吐内核应被拆成显式的数据并行阶段,由主机与加速器共同组成异构程序。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“加速器有效工作时间/端到端运行时间”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。
主证据来自Nickolls、Buck、Garland 与 Skadron,2008年《ACM Queue》6(2):40–53。具体设计与读数是:CUDA把线程组织为线程块和32线程的warp,并显式区分主机、设备及其存储层次;这个执行单位后来成为性能诊断的基本读数。CUDA在2006—2007年开放通用编程接口;随后分子动力学、稀疏线性代数与流体计算出现数量级加速,同时暴露主机—设备传输与分支不规则性。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“工作流重放是否包含数据、环境与调度状态”。对照证据见Pennycook、Sewall 与 Lee,2016年《PMBS会议录》,IEEE:指标把支持平台集合上的相对效率合成为一个数;任一目标平台不能运行或效率为零,整体分数就被显著拉低,不能由单机高分遮蔽。它显示节点级优化可能把成本转移到文件系统或网络;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:加速比必须报端到端时间,且注明数据是否常驻设备。只报内核时间的加速比在工程上没有意义,因为它把最贵的那段传输排除在分母之外。采购与论文评审的问法也应改成「整条流程在设备上停留了多久」,而不是「这个内核快了多少倍」。
与本块第十条《性能可移植性》互为压力:把程序按某一款加速器的执行单位深度改写,端到端效率会上去,跨架构的相对效率会下来。两条同时达标的代码至今仍是少数,因此任何一方的高分都应附上另一方的读数,否则读者无法判断这份成绩是通用的还是单机的。
己、经验型自动调优:性能模型必须接受机器实测纠正
自动调优出现以前,性能优化的默认信念是:只要把机器模型写得足够准,最优参数就可以推算出来。这个前提在单一架构、缓存层次简单的年代还算够用;但当同一份内核要面对不同厂商的缓存、向量宽度、编译器版本与输入尺度时,解析模型给出的冠军参数在另一台机器上常常连前十都进不去。这条转向把优化空间当作实验搜索问题,承认模型必须接受机器实测的纠正。
这条理论的可反驳命题是:优化空间应被视为实验搜索问题;可移植性能来自生成候选、实测、再学习,而非一套永久启发式。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“调优搜索时间/随后一次稳定收益运行时间”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。它改写的不是工具名称,而是什么比较才算同一个问题。
主证据来自Ansel 等,2014年《PACT会议录》:303–316,ACM,页303–316。具体设计与读数是:OpenTuner在十二类差异很大的调优问题上并行使用多种搜索技术;同一参数在另一台机器或另一输入上常不再是冠军。ATLAS之后,PetaBricks与2014年的OpenTuner把多目标搜索扩展到编译与运行参数;跨机器结果反复显示最优配置高度依赖输入与硬件。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“机器拓扑与输入尺度是否改变瓶颈”。对照证据见美国能源部,2016年《Exascale Computing Project Plan》:ECP把应用开发、软件技术和硬件集成列为三个并行技术区;2022年Frontier以1.102 EFLOP/s的HPL持续性能跨过百亿亿次门槛。它显示指标容易奖励规则内核而非真实应用;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:报告一个「最优参数」时必须同时报告搜索预算与搜索空间边界。省略搜索成本的加速比是不可比的——用一千次试跑换来的冠军配置,和用十次试跑得到的次优配置,不属于同一类结果。可复现材料因此要包含调优记录本身,而不只是最终参数表。
与本块第十七条《性能分布论》一起构成对「冠军数字」的两面夹击:自动调优揭露的是参数换台机器就失效,性能分布论揭露的是同一台机器同一参数下的运行也会散开。若只做前者不做后者,搜索过程会把噪声当成信号,把一次幸运的运行选成冠军配置。
庚、数据移动能耗层级:一焦耳并不等价于一次运算
在能耗被逐项拆开以前,功耗讨论的默认对象是运算:算得越多越费电,于是节能被等同于减少运算次数。这个前提把存储层次当成了免费的仓库。当一次片外访存的能量比一次浮点加法高出两三个数量级时,这个默认就把最大的那一项排除在了优化目标之外。这条转向要求把能耗按数据移动的距离分层记账,算术反而降为次要项。
这条理论的可反驳命题是:能耗主要由数据跨寄存器、缓存、内存和网络的移动距离决定,算术常不是主项。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“数据移动焦耳/有效浮点运算次数”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。它改写的不是工具名称,而是什么比较才算同一个问题。
主证据来自Horowitz,2014年《IEEE International Solid-State Circuits Conference》:10–14,页10–14。具体设计与读数是:其45纳米估算中,32位浮点加法约0.9皮焦,而一次32位DRAM访问约640皮焦,相差约七百倍,直接改写了“多做几次算术必然更贵”的直觉。Horowitz在2014年的能耗比较中给出不同精度运算与存储访问的数量级差异;这一读数推动算法把局部性和复用写进目标函数。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“最快一次运行能否代表运行分布”。对照证据见Godoy 等,2020年《SoftwareX》12:100561:同一API可把数据写成BP文件,也可经SST在内存中流向分析进程;读数由落盘字节数扩展为传输吞吐、缓存驻留和分析延迟。它显示封装环境并不自动封装外部数据与服务;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:节能声明必须写明测量边界——是芯片、是节点,还是包含冷却与供电的设施。三个边界给出的数字可以差出数倍,不注明就无法比较。同时,能耗读数必须与数据布局一起报告,因为同一份计算换一种布局,移动距离变了,能耗结论就可能反过来。
与本块第十八条《能量到解》是同一条线的两端:本条给出单位数据移动的能量代价,第十八条把它积分成完成一份科学结果的总焦耳。两者可以背离——单位能耗更低的方案若需要更多次迭代,总焦耳反而更高。只报单位量纲不报总量的节能,正是这类背离最常见的藏身处。
辛、可复现浮点:并行归约不应随机改变科学结论
并行归约长期以来的默认是:浮点加法的结合律差异属于舍入误差范围内的正常波动,线程数变了结果小数点后几位不同,不影响科学结论。这个前提在迭代次数少、条件数低时基本安全;但在长时间积分、判据接近阈值或需要逐位比对的工作流中,它会让同一份代码在同一台机器上给出两个不同的结论。这条转向把「结果是否可复现」从工程整洁问题提升为结论有效性问题。
这条理论的可反驳命题是:对敏感工作流,归约和线性代数应提供与线程数、调度次序无关的可复现结果或明确误差界。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“不同归约次序的数值差/允许误差阈值”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。
主证据来自Demmel 与 Nguyen,2013年《IEEE Symposium on Computer Arithmetic》:163–172,页163–172。具体设计与读数是:方法以固定大小的分箱累加器吸收不同归约次序,使线程数和调度变化后仍得到逐位一致的和;读数因此从“误差大致小”升级为“结果可重放”。ReproBLAS、ExBLAS在2013—2016年用长累加器、误差自由变换等方法实现可重复求和;代价可测,但揭示传统并行归约会放大分支与迭代差异。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“节省通信是否以额外计算和内存为代价”。对照证据见Carson 与 Higham,2018年《SIAM Journal on Scientific Computing》40(2):A817–A847:分解可在半精度完成,残差在双精度计算,再以单或双精度修正;收敛条件用矩阵条件数与所用单位舍入误差的乘积明确表达。它显示结论可能只是某台机器上的局部最优;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:科学软件应声明自己提供哪一档保证——逐位可复现、误差有界,还是仅保证统计意义上的一致。三档的验收方式完全不同,混着说等于没说。相应地,回归测试也要从「结果差不多」改成「在声明的那一档内」,否则测试通过与否取决于当天分到几个线程。
与本块第九条《混合精度可靠性》正面相撞:混合精度主动降低中间精度以换取速度,本条要求结果与执行次序无关。两者可以共存,但共存的前提是把「需要多少正确」事先写明——这正是本块第十九条《精度契约》要补的那一块。三条不放在一起读,容易把一个精度设计问题误当成实现缺陷。
第二幕把评价单位从单个内核扩到异构工作流,并要求同时报告精度、分布、复现与能量。 本幕十二条更关注部署、公开清算与方法自审,尤其要求把平均分数换成分布、边界、长期读数和责任链。
一、混合精度可靠性:低精度算、高清晰度验
混合精度进入科学计算以前的默认是:科学计算必须全程双精度,降精度属于牺牲正确性的权宜之计。这个前提把精度当成一个全程统一的属性,而不是可以在流程中分段配置的资源。当低精度硬件的吞吐比双精度高出一个数量级之后,这个默认就把大量可用算力挡在了门外。这条转向把精度拆成「算」与「验」两段:大部分算术可以低精度完成,只要有高精度的残差与修正把目标精度收回来。
这条理论的可反驳命题是:可把低精度用于大部分算术,再以高精度残差、迭代修正或误差界恢复目标精度。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“低精度阶段时间/总求解时间,并以残差/目标残差作门槛”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。
主证据来自Carson 与 Higham,2018年《SIAM Journal on Scientific Computing》40(2):A817–A847。具体设计与读数是:分解可在半精度完成,残差在双精度计算,再以单或双精度修正;收敛条件用矩阵条件数与所用单位舍入误差的乘积明确表达。Carson与Higham在2017年前后系统化混合精度迭代改进;FP16/FP32计算配合FP64校正,在多类线性系统上取得显著速度与能耗收益。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“跨加速器迁移时效率与正确性是否同时保持”。对照证据见Chiang、Baranowski、Briggs、Solovyev、Gopalakrishnan与Rakamarić,2017年《POPL会议录》:300–315,页300–315:工具在用户给定误差界下搜索变量精度组合,并用严格误差分析筛除不满足契约的候选;混合精度由经验降位转为“性能收益受显式数值界约束”的优化问题。它显示近似和低精度可能把误差推到科学结论;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:任何混合精度加速比都必须与达到的残差水平一起报告,并注明矩阵条件数等适用范围。脱离精度目标谈加速比是无效申报——同样的算法在良态问题上收敛,在病态问题上可能根本不收敛。因此适用边界不是脚注,而是结果的一部分。
与本块第二条《通信规避》交易的是不同的东西,却共用同一个预算:低精度减少了每次通信搬运的字节,却可能增加迭代次数从而增加通信轮数。两条在同一程序里的净效应无法从任一侧推出,必须在同一个到解时间的分母下合并计量,否则两项各自的「提速」会被重复计算。
二、性能可移植性:可移植不是能运行,而是少掉速
可移植性长期被默认为一个二值属性:能编译、能跑出正确结果,就叫可移植。这个前提在架构差异不大的年代够用,但当同一份代码要面对多家厂商的加速器时,它掩盖了最要紧的一件事——能跑,可能只跑到原生最优的一成。这条转向把可移植性从「能否运行」改写成「掉速多少」,并要求同时申报覆盖的架构集合与在各架构上的相对效率。
这条理论的可反驳命题是:性能可移植性必须同时衡量覆盖的体系结构与相对效率,任何单机冠军都不能掩盖其他平台失速。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“跨架构实测性能/各架构原生最优性能”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。
主证据来自Pennycook、Sewall 与 Lee,2016年《PMBS会议录》,IEEE。具体设计与读数是:指标把支持平台集合上的相对效率合成为一个数;任一目标平台不能运行或效率为零,整体分数就被显著拉低,不能由单机高分遮蔽。Pennycook等自2016年提出可量化指标;Kokkos、RAJA、SYCL等跨后端实验显示,抽象层可减少重写,但性能仍受数据布局与后端成熟度制约。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“工作流重放是否包含数据、环境与调度状态”。对照证据见Gonthier、Marchal与Thibault,2025年《并行与分布计算杂志》206:105170:调度器同时读取任务依赖、数据驻留位置与传输代价,在GPU和超内存线性代数中优先复用已驻留数据;就绪任务因搬运成本不同而不能再被视为等价。它显示节点级优化可能把成本转移到文件系统或网络;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:任何可移植性声明都要给出平台清单和逐平台的相对效率,而不能只报一个综合分数。合成为单一数字时,一个跑不动的平台会被其他平台的高分稀释,读者无法看出这份代码在自己那台机器上意味着什么。评审与采购的问法也要改成「在我这一台上掉速多少」。
与本块第五条《异构加速编程》互相制约,与第六条《经验型自动调优》则互为出路:自动调优允许同一份源码在每台机器上重新搜参,从而在不牺牲相对效率的前提下扩大覆盖。这条路径把可移植性的代价从代码分叉转移到搜索预算——代价没有消失,只是换了一本账记。
三、真实基准裂缝:峰值排名不等于应用吞吐
高性能计算长期用一份密集线性代数基准给机器排座次,默认前提是:能把稠密矩阵算得快的机器,跑别的科学负载也快。这个前提在访存规整、通信有限的年代还能自洽;当主流应用变成稀疏矩阵、非结构网格与频繁全局归约之后,同一台机器在两类负载上的持续性能可以差出一个数量级。这条转向主张:峰值与持续之间的裂缝不是测量误差,裂缝本身就是评价对象。
这条理论的可反驳命题是:稀疏访存、通信和同步受限的基准必须与密集线性代数并列,峰值与持续性能的裂缝本身就是评价对象。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“HPCG有效性能/HPL峰值性能”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。它改写的不是工具名称,而是什么比较才算同一个问题。
主证据来自Dongarra、Heroux与Luszczek,2016年《International Journal of High Performance Computing Applications》30(1):3–10。具体设计与读数是:HPCG以稀疏矩阵向量乘、全局归约和多重网格替代高度规则的密集线性代数;它与HPL排名的巨大落差直接显示真实应用受通信和内存约束。HPCG自2014年发布、2016年后成为TOP500配套读数;机器在HPL与HPCG上的排名与效率常显著错位。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“机器拓扑与输入尺度是否改变瓶颈”。对照证据见Salimi Beni、Hunold与Cosenza,2024年《超级计算杂志》80:14978–15005:研究以大规模系统的重复执行记录建模运行时间波动并预测性能区间;最快一次只落在分布尾端,不能代替中位数、长尾和跨节点噪声的联合报告。它显示指标容易奖励规则内核而非真实应用;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:一台机器的性能声明必须至少给出两类负载的读数,并公布二者之比。只报一个排行榜名次而不报访存受限负载的持续性能,采购方就无法判断这台机器对自己的应用意味着什么。基准结果同时要附上问题规模与运行配置,否则不同机器的数字不在同一个分母上。
与本块第十七条《性能分布论》构成互补的两把尺子:本条量的是不同负载之间的裂缝,第十七条量的是同一负载在重复运行之间的散布。两者都在拆同一个默认——「一个数字代表一台机器」。但它们的处方不同:本条要求换负载,第十七条要求换次数;只做其中一件,剩下的那一半误差仍会以「机器很快」的形式出现在结论里。
四、百亿亿次协同设计:应用、算法与机器必须共同收敛
在协同设计成为组织原则以前,极端规模系统的默认分工是流水线式的:硬件先造出来,系统软件随后适配,应用最后移植。这个前提假定三层之间的接口是稳定的,性能损失可以在下游逐层补救。当机器规模跨过百亿亿次量级、加速器与内存层次同时变化时,下游补救的空间已经不足以吸收上游的设计选择。这条转向要求应用需求、数值算法与机器设计在同一时间窗口内互相约束、共同收敛。
这条理论的可反驳命题是:极端规模系统的可用性能来自应用需求、数学算法、运行时、存储与硬件的共同设计。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“协同设计后到解时间/基线到解时间”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。它改写的不是工具名称,而是什么比较才算同一个问题。
主证据来自美国能源部,2016年《Exascale Computing Project Plan》。具体设计与读数是:ECP把应用开发、软件技术和硬件集成列为三个并行技术区;2022年Frontier以1.102 EFLOP/s的HPL持续性能跨过百亿亿次门槛。美国Exascale Computing Project自2016年把应用、软件技术与硬件集成并行推进;2022年Frontier跨过百亿亿次门槛时,成熟应用栈而非单一峰值成为交付指标。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“最快一次运行能否代表运行分布”。对照证据见Babuji 等,2019年《HPDC会议录》,ACM:Parsl报告约5毫秒任务开销、超过25万工作进程、跨八千多个节点以及每秒一千二百余任务的调度能力,说明复现对象必须上升到整条工作流。它显示封装环境并不自动封装外部数据与服务;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:一项性能成绩必须说明它是在哪一层的改动上取得的,以及该改动是否要求其他两层同时变化。把三层合起来的加速比记在单层名下,会让后来者按错误的杠杆去投入。项目验收因此要交出协同设计的取舍记录,而不只是最终的到解时间。
与本块第十条《性能可移植性》处在直接的紧张关系中:协同设计为特定机器把三层拧到一起,可移植性要求同一份代码在多台机器上都不掉速。前者的收益越大,后者的代价通常越高。任何声称两头都占的报告,都应先交出换机后的相对效率,否则协同设计的收益只是把移植成本推给了下一代机器。
五、局部性感知调度:就绪任务并非等价任务
在调度只看就绪状态的年代,默认前提是:任务一旦依赖满足就可以交给任何空闲资源,谁先空谁先拿。这个前提把数据搬运当成常数代价,因而把所有就绪任务视为等价。当数据可能驻留在某个设备的显存里、也可能要跨节点搬来时,这个等价假设就会让调度器不断做出局部合理、整体昂贵的选择。这条转向要求调度同时估计数据驻留位置、迁移代价、设备适配度与后续关键路径。
这条理论的可反驳命题是:调度必须同时估计数据驻留、迁移代价、设备适配度与后续关键路径。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“本地命中任务数/总调度任务数”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。
主证据来自Gonthier、Marchal与Thibault,2025年《并行与分布计算杂志》206:105170。具体设计与读数是:调度器同时读取任务依赖、数据驻留位置与传输代价,在GPU和超内存线性代数中优先复用已驻留数据;就绪任务因搬运成本不同而不能再被视为等价。2016年后StarPU、PaRSEC、Legion等在异构节点上的研究表明,忽略数据位置会让计算单元空转或被传输淹没;局部性启发式常比单纯负载均衡更有效。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“节省通信是否以额外计算和内存为代价”。对照证据见Kamil 等,2007年《PASCO会议录》,ACM:比较把同一组并行内核分别写成UPC、Titanium或Coarray风格,并把本地访问和远程访问分别计时;结果显示全局语法不会抹平物理距离。它显示结论可能只是某台机器上的局部最优;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:调度器的性能声明必须报告数据本地命中率,而不只是资源利用率。利用率高而命中率低的系统看起来很忙,实际在搬运上空转。相应地,性能回归的诊断也要把调度轨迹保留下来——同一份任务图两次运行的搬运量若不同,比较结论就不成立。
与本块第三条《分区全局地址空间》处理同一件事的两个时刻:语言在编译期把距离写进语义,调度在执行期把距离算进决策。两者可以互相替代,也可以互相拆台——语言层已经固定了数据分布时,运行时的迁移自由度就被限制;运行时频繁迁移时,语言层的静态代价模型又会失准。谁做主,必须在系统设计时讲明。
六、原位分析:数据不再默认先落盘再理解
科学计算的默认工作流曾经是先算完、全部落盘、再读回来分析。这个前提要求存储带宽与算力同步增长;当算力增长快于I/O一个数量级之后,落盘本身成了整条流程里最慢的一段,很多模拟只好靠降低输出频率来迁就存储,代价是把物理过程的细节丢在磁盘门口。这条转向把筛选、压缩与可视化提前到数据仍在内存里的时刻完成,落盘从必经步骤降为可选步骤。
这条理论的可反驳命题是:当I/O增长慢于算力时,筛选、压缩与可视化必须在数据仍驻留内存时进行。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“原位处理数据量/原本写盘数据量”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。
主证据来自Godoy 等,2020年《SoftwareX》12:100561。具体设计与读数是:同一API可把数据写成BP文件,也可经SST在内存中流向分析进程;读数由落盘字节数扩展为传输吞吐、缓存驻留和分析延迟。ADIOS2、Catalyst与多项ECP工作流在2016年后展示原位/传输中分析;它们显著降低写盘量,但也把分析选择不可逆地提前到运行期。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“跨加速器迁移时效率与正确性是否同时保持”。对照证据见Haidar、Jagode、Vaccaro、YarKhan、Tomov与Dongarra,2019年《并发与计算:实践与经验》31(6):e4485,DOI:10.1002/cpe.4485:实验对科学线性代数工作负载施加节点功率上限并同时测量时间与能量;适度降功率可能以很小的时间代价降低能量到解,峰值功率和最短时间因而不是同一目标。它显示近似和低精度可能把误差推到科学结论;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:一次模拟的结果申报必须说明哪些数据被原位处理、哪些被丢弃,以及丢弃所依据的判据。原位分析不是无损的,它把「保留什么」从事后决定改成事前决定,因而判据本身成为科学结论的一部分。可复现材料要包含这套判据,否则第三方无法判断没被写出来的那部分是否重要。
与本块第二十条《工作流级复现》构成一对张力:原位分析减少了落盘,也就减少了可供事后重放的原始数据;工作流复现要求任何一步都能重来。两者的结合点在于是否保留了足够的中间凭据——只保留最终图像而不保留判据与参数的原位流程,等于用可复现性换了I/O带宽。
七、韧性超越检查点:错误恢复应进入算法内部
容错在极端规模上的默认办法是周期性检查点:程序定期把状态整份写出,出错就回到上一个点重来。这个前提假设写检查点的时间远小于两次故障之间的时间。当节点数上升到十万量级、故障间隔缩短而状态体积增大时,两者会互相逼近,机器可能把大部分时间花在写检查点和重算上。这条转向主张把错误的识别与恢复放进数值算法内部,让恢复的粒度小于整程序。
这条理论的可反驳命题是:极端规模下,检查点本身会拥塞;恢复应结合局部重算、冗余、算法级校验和与可恢复运行时。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“可恢复故障数/总故障数”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。
主证据来自Agullo等,2022年《国际高性能计算应用杂志》36(2):251–285。具体设计与读数是:作者把故障感知、冗余、校验和与迭代修复嵌入数值算法,比较检查点之外的恢复路径;结论是极端规模下,韧性必须和收敛、通信及精度一同设计。2016年后多项ABFT与任务级恢复研究显示,局部故障无需总回滚;但静默数据损坏、相关故障和恢复成本模型仍未统一。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“工作流重放是否包含数据、环境与调度状态”。对照证据见Kurtzer、Sochat 与 Bauer,2017年《PLOS ONE》12(5):e0177459:Singularity镜像可由普通用户运行并继承宿主调度与高速互连;同一镜像从个人工作站迁移到超算节点时不要求守护进程拥有根权限。它显示节点级优化可能把成本转移到文件系统或网络;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:容错方案必须给出可恢复故障占全部故障的比例,而不是只声明「支持容错」。算法级容错通常只覆盖某几类错误,其余仍要靠检查点兜底,两条路径的成本要分别列出。系统可用性的估算也要随之改写——按检查点周期算出的可用时间,对采用算法级恢复的程序并不适用。
与本块第四条《任务图运行时》共享同一个前提却服务不同目的:任务图为了性能而细化执行单位,本条为了恢复而细化失败单位。两者结合时收益最大,冲突时也最隐蔽——为恢复而增加的校验与冗余会拉长关键路径,而调度器如果不知道哪些任务带有校验语义,会把它们当成普通任务重排,恢复保证随之失效。
八、容器化科学环境:可复现需要封装依赖而非只存源码
可复现性长期被默认为源码问题:把代码开源、把参数写进论文,别人就应该能重跑出来。这个前提把编译器版本、数学库、驱动、内核参数与运行环境都当成了中性背景。当同一份源码在两台配置不同的机器上给出不同结果甚至跑不起来时,这个默认就失效了。这条转向把环境本身列为实验条件,要求与源码一同封装、一同申报。
这条理论的可反驳命题是:编译器、库、驱动与运行参数都属于实验条件,应以面向HPC的容器和环境描述一同封装。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“第三方重放成功次数/重放尝试次数”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。它改写的不是工具名称,而是什么比较才算同一个问题。
主证据来自Kurtzer、Sochat 与 Bauer,2017年《PLOS ONE》12(5):e0177459。具体设计与读数是:Singularity镜像可由普通用户运行并继承宿主调度与高速互连;同一镜像从个人工作站迁移到超算节点时不要求守护进程拥有根权限。Singularity自2015—2016年进入超算中心,随后Apptainer等支持无特权运行;跨集群复现实验改善,但内核、设备驱动与外部数据仍构成边界。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“机器拓扑与输入尺度是否改变瓶颈”。对照证据见Babuji 等,2019年《HPDC会议录》,ACM:Parsl报告约5毫秒任务开销、超过25万工作进程、跨八千多个节点以及每秒一千二百余任务的调度能力,说明复现对象必须上升到整条工作流。它显示指标容易奖励规则内核而非真实应用;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:复现材料从「源码加参数」升级为「源码加环境镜像加运行说明」,并给出第三方重放的成功次数与尝试次数。自己能跑通不构成证据——申报的对象是别人能否跑通。相应地,期刊与会议的制品评审也要把重放尝试记录留档,而不是只标一个「可复现」的徽章。
与本块第八条《可复现浮点》分别处理可复现性的两层:本条管环境是否一致,第八条管在一致环境内结果是否随执行次序改变。两层缺一不可,也常被混为一谈——环境完全一致而结果仍在小数点后波动时,若只查环境就会一直找不到原因;反之,逐位可复现的算法在不同环境里同样可能跑不起来。
九、性能分布论:一次最快运行不是系统能力
性能报告的通行做法长期是取最快的一次运行:跑若干遍,报最好的那个数,理由是它最接近机器的真实能力、噪声属于干扰应予剔除。这个前提把操作系统噪声、网络争用、温度与共享资源竞争都当成可以忽略的偶然项。当系统规模扩大、扇出层数增加时,这些偶然项会在长尾上叠加成常态,用户实际经历的是分布而不是最好值。这条转向要求性能以分布、置信区间与重复设计来报告。
这条理论的可反驳命题是:操作系统噪声、网络争用、温度和共享资源会生成长尾,性能应以分布、置信区间和重复设计报告。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“P99运行时间/中位运行时间”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。
主证据来自Salimi Beni、Hunold与Cosenza,2024年《超级计算杂志》80:14978–15005。具体设计与读数是:研究以大规模系统的重复执行记录建模运行时间波动并预测性能区间;最快一次只落在分布尾端,不能代替中位数、长尾和跨节点噪声的联合报告。2017年后HPC性能变异研究在大规模作业中观察到节点与时间相关的抖动;同一程序的尾部慢例可决定整体同步时间。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“最快一次运行能否代表运行分布”。对照证据见Williams、Waterman 与 Patterson,2009年《Communications of the ACM》52(4):65–76:模型把纵轴性能、横轴算术强度以及计算峰值和带宽斜顶放在一图中;一次测量即可判断程序受哪一道上界约束。它显示封装环境并不自动封装外部数据与服务;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:一个性能数字必须附带重复次数、离散程度与测量条件。只报最好值等于把不确定性从结果里删掉,读者无从判断该数字能否在自己的作业里再现。基准与论文的验收标准也应改为:给出分布,才允许比较;未报重复次数的加速比不进入排序。
与本块第六条《经验型自动调优》构成方法上的依赖关系:调优是在噪声中做选择,若不先刻画分布,搜索就会把一次幸运运行选成冠军。反过来,分布刻画本身也依赖调优结果的稳定性——参数每次都变时,测出的散布里混着参数差异,两者必须分开报告才有意义。
十、能量到解:最短时间不一定最省资源
性能优化长期把时间当作唯一目标函数:跑得越快越好,电费是运营方的事。这个前提在电力尚未成为主要约束时可以成立;当机房功率封顶、单机柜供电与散热成为部署上限时,最短时间的配置可能因为超出功率预算而根本无法长期运行。这条转向把「完成一个可信解需要多少焦耳」提到与时间并列的位置,频率、并行度与设备组合都要在这个新分母下重新选择。
这条理论的可反驳命题是:频率、并行度与设备组合应按完成一个可信解所耗焦耳和成本共同优化。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“完成一份科学结果的总焦耳/结果份数”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。
主证据来自Haidar、Jagode、Vaccaro、YarKhan、Tomov与Dongarra,2019年《并发与计算:实践与经验》31(6):e4485,DOI:10.1002/cpe.4485。具体设计与读数是:实验对科学线性代数工作负载施加节点功率上限并同时测量时间与能量;适度降功率可能以很小的时间代价降低能量到解,峰值功率和最短时间因而不是同一目标。Green500与百亿亿次系统测量推动2016年后大量DVFS和功率封顶实验;部分工作负载降频后时间略增,却显著降低总能耗。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“节省通信是否以额外计算和内存为代价”。对照证据见Demmel、Grigori、Hoemmen 与 Langou,2012年《SIAM Journal on Scientific Computing》34(1):A206–A239,DOI:10.1137/080731992:论文先给出字移动量与消息数的通信下界,再构造CAQR和CALU逼近该下界;判据不再只是三次方量级的浮点运算数。它显示结论可能只是某台机器上的局部最优;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:性能结果应同时报告到解时间与能量到解,并注明测量边界与功率封顶设置。只报时间的优化在功率受限的机器上不可执行——把频率拉满得到的最快配置,若在功率封顶下会被降频,实测结果与报告并不对应。采购与调度策略也要按这两个数一起排序。
与本块第七条《数据移动能耗层级》互为上下游,与第十二条《百亿亿次协同设计》则共享同一个约束:在功率封顶的机器上,能量预算是硬边界,三层协同设计的取舍最终都要折算到这个边界上。只在时间维度上做的协同设计,会在部署时被电力约束推翻一次。
十一、精度契约:科学程序应声明需要多少正确
科学程序对精度的默认态度是含糊的:既没有声明需要多少正确,也没有声明可以容忍多少误差,于是双精度成了不必解释的安全选项。这个前提把物理容差、统计误差与数值误差混在一起,使得任何降精度的尝试都无法被判定为安全或不安全。这条转向要求把三类误差分开写成可检查的契约,之后才允许编译器与运行时在契约范围内自由选择精度。
这条理论的可反驳命题是:应用应把物理容差、统计误差和数值误差写成契约,再允许编译器与运行时选择精度。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“满足科学误差阈值的运行数/总运行数”。
主证据来自Chiang、Baranowski、Briggs、Solovyev、Gopalakrishnan与Rakamarić,2017年《POPL会议录》:300–315,页300–315。具体设计与读数是:工具在用户给定误差界下搜索变量精度组合,并用严格误差分析筛除不满足契约的候选;混合精度由经验降位转为“性能收益受显式数值界约束”的优化问题。2018年后混合精度求解器、随机舍入和误差感知调优表明,位宽可按阶段变化;若没有端到端误差预算,局部加速可能制造不可见偏。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“跨加速器迁移时效率与正确性是否同时保持”。对照证据见Demmel 与 Nguyen,2013年《IEEE Symposium on Computer Arithmetic》:163–172,页163–172:方法以固定大小的分箱累加器吸收不同归约次序,使线程数和调度变化后仍得到逐位一致的和;读数因此从“误差大致小”升级为“结果可重放”。它显示近似和低精度可能把误差推到科学结论;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:程序应交出一份误差预算,说明哪一段的误差由物理模型承担、哪一段由离散化承担、哪一段留给浮点。没有这份预算,精度选择就只能靠经验和保守,混合精度的收益也无法被审计。验收方式随之改变——不再问「用了什么精度」,而问「满足科学误差阈值的运行占多少」。
与本块第九条《混合精度可靠性》是需求与手段的关系:混合精度提供了降精度的技术路径,本条提供了判断降到哪里算安全的依据。缺了契约,混合精度只能靠事后残差检查兜底;缺了混合精度,契约写得再清楚也没有可调的旋钮。两条分开实施时,最常见的失败是契约写在论文里、实现里却仍是全程双精度。
十二、工作流级复现:一次作业成功不等于科学过程可重放
科学计算的复现对象长期停在单次作业上:同样的可执行文件、同样的输入,跑出同样的输出,就算复现成功。这个前提忽略了现代科学流程实际由数据准备、多次模拟、参数扫描、后处理与统计分析串成的长链,其中任一环的版本、随机种子或调度状态发生变化,最终结论都可能改变。这条转向把复现单位从一次作业提升到整条工作流,要求谱系可追、可重放。
这条理论的可反驳命题是:数据版本、任务依赖、软件环境、随机种子和后处理必须形成可重放的工作流谱系。比较必须固定问题规模、精度、数据布局与编译选项,只改变并行度、调度、精度或通信规约,并以到解时间、能量到解和数值偏差为共同结果;量纲写成“第三方完整工作流复现成功数/复现尝试数”。若同等预算下不优于强基线,或换数据、平台与人群便失效,命题只能收窄。
主证据来自Babuji 等,2019年《HPDC会议录》,ACM。具体设计与读数是:Parsl报告约5毫秒任务开销、超过25万工作进程、跨八千多个节点以及每秒一千二百余任务的调度能力,说明复现对象必须上升到整条工作流。2018年后Parsl、Pegasus、Snakemake与ReFrame等在大型设施中强化工作流记录和持续验证;跨站点重放仍受数据治理与硬件差异限制。这笔证据把通信、数据移动、同步和能耗从背景变量改成可复算的中间量,并留下样本、版本、阈值或预算检查点。主证据年份决定幕归属;核验应以篇名反查作者、卷页或DOI以及这里采用的读数。
争议集中在“工作流重放是否包含数据、环境与调度状态”。对照证据见Pallez、Hill与Hunold,2025年《ACM REP会议录》:76–84,页76–84:SC 2024的可复现倡议把制品、环境、复跑说明和评审流程并列审查;工作流证据不再只是上传代码,而是看第三方能否依说明重建执行链。它显示节点级优化可能把成本转移到文件系统或网络;换任务、分母或组织流程后,成本可能转移到未记录处。争论要收敛,须预注册口径、公开负结果并由独立站点重做,同时报告均值、尾部、失败类型与维护成本。
它改变的最低交付责任是:提交结论时要一并提交工作流谱系——数据版本、任务依赖、软件环境、随机种子与后处理步骤,并给出第三方完整重放的成功数与尝试数。单次作业的成功不再构成复现证据。评审也随之从检查代码是否公开,改为检查这条链上是否有环节无法被外部重放。
与本块第十四条《原位分析》直接冲突,与第十六条《容器化科学环境》则互为条件:原位分析减少了可重放的原始数据,容器化保住了环境却保不住调度与数据版本。三条放在一起才构成完整的复现方案;只做其中一条时,最常见的结果是环境齐备、数据不齐,或数据齐备、当时的判据已无从追溯。
◎ 二十年连起来看
第一幕把“峰值更高就更快”拆成上界、通信、任务和能耗四类可测约束。 第二幕把评价单位从单个内核扩到异构工作流,并要求同时报告精度、分布、复现与能量。 两幕不是工具换代,而是评价单位不断扩大:第一幕找出局部上界、误差、约束或行为机制,第二幕把它们放进真实系统、组织与生命周期。只有当旧默认被写成可检查条件,新方法才构成转向。
被继承的判据是先定位真正上界,再决定优化层次;屋顶线、通信下界、局部性调度和能量到解都沿用这一动作。 这一判据在二十条里反复出现:条件、操作、读数与边界必须形成可复查链条。工具名可以变化,数据来源、分母、中止、未达阈值或无法归类的对象和复现路径却不能省;这也是碰撞行能够抽取并与别的领域通约的基础。
被推翻的是“能运行即具有可移植性”和“最快成绩代表系统能力”;仍未解决的是跨代硬件上的长期科学可重放。 因而,本领域尚未解决的核心不是再提高一个百分点,而是性能可移植、数值可复现与能效能否被一个共同契约同时约束。若未来五年的工作仍只给均值和排行榜,不给真实部署、尾部和反例,它不会继续这条二十年主线。
◎ 三个常见误解
误解一:更多核心必然更快。它容易被相信,是因为单次榜单只显示结果而隐藏问题规模、精度、数据布局与编译选项、中止、未达阈值或无法归类的对象与选择过程。正确表述是把收益限定在同一分母和同一边界内,再看是否跨环境保持。
误解二:容器等于完全可复现。它容易被相信,是因为工具把一部分依赖封装起来,看上去像整个系统已经被封装。正确表述是任何抽象都只覆盖一段链条,外部数据、版本、组织和硬件仍需单独核验。
误解三:低精度只是牺牲正确性。它容易被相信,是因为成功案例适合传播,而近似和低精度可能把误差推到科学结论通常不进入摘要。正确表述是收益与边界、代价、反例必须同时报告,不能把局部改进外推成普遍保证。
◎ 与相邻领域的接口
与〈系统性能与能效〉的接口在于:“能量到解”把节点级性能接到数据中心功率、尾延迟与碳账本。 分工判据是,本块负责把计算对象、系统行为与可核对读数写清;相邻领域负责它自己的机制、制度或物理约束。若同一现象使用不同术语和分母,两边都保留,并在碰撞行登记异名。
与〈量子软件与量子编程〉的接口在于:混合经典—量子工作流同样需要任务图、资源估计和可重放接口。 分工判据是,本块负责把计算对象、系统行为与可核对读数写清;相邻领域负责它自己的机制、制度或物理约束。若同一现象使用不同术语和分母,两边都保留,并在碰撞行登记异名。
与〈形式化方法与程序验证〉的接口在于:数值契约与工作流证据需要机器可检查的前置条件和结果声明。 分工判据是,本块负责把计算对象、系统行为与可核对读数写清;相邻领域负责它自己的机制、制度或物理约束。若同一现象使用不同术语和分母,两边都保留,并在碰撞行登记异名。
与〈数值分析与科学计算〉的接口在于:本面板只讨论并行执行与系统判据,离散化误差与收敛理论应在数值分析中核算。 分工判据是,本块负责把计算对象、系统行为与可核对读数写清;相邻领域负责它自己的机制、制度或物理约束。若同一现象使用不同术语和分母,两边都保留,并在碰撞行登记异名。
◎ 争议现场
未收敛的争论是:HPL与HPCG何者更能代表系统价值。支持方强调已有正向设计,反对方指出分母、样本或环境不足以外推。要怎样才能收敛:用不少于三个独立平台或人群,预注册共同基线、预算和停止规则,并以到解时间、能量到解和数值偏差的分层分布比较;若方向一致且边界可预测,争论才收敛。
未收敛的争论是:混合精度的速度收益能否跨问题族保持。支持方强调已有正向设计,反对方指出分母、样本或环境不足以外推。要怎样才能收敛:建立版本化公开基准,保存失败配置、调参轨迹和维护成本,以盲评方式复跑;若收益只在事后选择的路径上出现,应判为未收敛。
未收敛的争论是:百亿亿次复现应要求逐位一致还是科学量一致。支持方强调已有正向设计,反对方指出分母、样本或环境不足以外推。要怎样才能收敛:把局部结果接入真实工作流或制度现场,连续观测至少一个完整周期,并报告最差分位与反事实对照;只有端到端读数同向,才能排除成本转移。
◎ 往下五年看什么
观察点是单位科学结果的总焦耳与总等待时间。应固定统计周期、样本覆盖与质量门槛,按年度公布分布而非只公布最好值;若连续两次独立复测方向相反,就说明该读数尚不足以承担领域判据。
观察点是同一工作流跨三类加速器的性能可移植分数。应固定统计周期、样本覆盖与质量门槛,按年度公布分布而非只公布最好值;若连续两次独立复测方向相反,就说明该读数尚不足以承担领域判据。
观察点是十次以上重复运行的尾部波动与失败率。应固定统计周期、样本覆盖与质量门槛,按年度公布分布而非只公布最好值;若连续两次独立复测方向相反,就说明该读数尚不足以承担领域判据。
观察点是公开制品能否在新站点完整重放并复核结论。应固定统计周期、样本覆盖与质量门槛,按年度公布分布而非只公布最好值;若连续两次独立复测方向相反,就说明该读数尚不足以承担领域判据。
◎ 可与哪些领域对撞
本块第18条《能量到解:最短时间不一定最省资源》与第360号第二十条《每份有用工作效率》可以对撞。它们共享的预设是:两边都默认性能必须按完成的有效结果而不是设备峰值计价。相反点在于:本块把局部最短时间放到焦耳分母上,第360号把数据中心功率、碳与SLO一起放入分母。若两边都成立,若两边都成立,就必须承认“最快节点”与“最优系统”之间还隔着利用率和设施边界。
本块第17条《性能分布论:一次最快运行不是系统能力》与第149号第一幕甲条《公允价值会计:信使还是加速器》可以对撞。它们共享的预设是:两边都默认一个汇总读数能够代表复杂对象的真实状态。相反点在于:性能分布论要求暴露波动与尾部,会计争论却必须在及时计量和顺周期放大之间取舍。若两边都成立,若两边都成立,第三项就是指标被制度采用后对对象本身产生的回写。
本块第11条《真实基准裂缝:峰值排名不等于应用吞吐》与第065号第一幕乙条《全球指数被造出来》可以对撞。它们共享的预设是:两边都默认跨对象聚合后的单一排名仍保留关键异质性。相反点在于:HPCG用替代基准揭开峰值与应用的裂缝,生态学则发现全球均值被极端种群支配。若两边都成立,若两边都成立,就必须把“代表性”写成样本权重与任务覆盖率而不能只报一个数。
本块第8条《可复现浮点:并行归约不应随机改变科学结论》与第074号第二幕第二条《双重差分的隐患》可以对撞。它们共享的预设是:两边都默认聚合次序和权重不会改变结论方向。相反点在于:并行浮点把次序误差视为数值问题,计量学把负权重视为识别问题。若两边都成立,若两边都成立,必须承认路径与顺序本身是结果的一部分而非可丢弃的实现细节。
◎ 十条可做的研究命题
屋顶线模型的因果识别命题:在控制共同预算后,程序能达到的上限由峰值算力与内存带宽共同夹定;怎么做:在真实部署中随机或准随机改变并行度、调度、精度或通信规约,固定问题规模、精度、数据布局与编译选项,比较前后与未处理组;什么算证伪:若效应低于测量误差、跨环境方向不一致,或机器拓扑与输入尺度是否改变瓶颈不再预测失败,则命题被证伪。
分区全局地址空间的测量命题:在控制共同预算后,PGAS允许程序以全局视图表达数据,同时把本地与远程访问的代价差异保留为语言语;怎么做:建立跨三种环境的统一日志,直接测量“远程访问时延/本地访问时延”并分层报告尾部;什么算证伪:若效应低于测量误差、跨环境方向不一致,或最快一次运行能否代表运行分布不再预测失败,则命题被证伪。
异构加速编程的复现重估命题:在控制共同预算后,高吞吐内核应被拆成显式的数据并行阶段,由主机与加速器共同组成异构程序;怎么做:用新版本、强基线和独立团队重做第5条的关键设计,保存全部失败路径;什么算证伪:若效应低于测量误差、跨环境方向不一致,或节省通信是否以额外计算和内存为代价不再预测失败,则命题被证伪。
数据移动能耗层级的跨领域命题:在控制共同预算后,能耗主要由数据跨寄存器、缓存、内存和网络的移动距离决定,算术常不是主项;怎么做:把相邻领域的审计、因果或能量账本移入本领域,以共同分母连接到解时间、能量到解和数值偏差;什么算证伪:若效应低于测量误差、跨环境方向不一致,或跨加速器迁移时效率与正确性是否同时保持不再预测失败,则命题被证伪。
混合精度可靠性的因果识别命题:在控制共同预算后,可把低精度用于大部分算术,再以高精度残差、迭代修正或误差界恢复目标精度;怎么做:在真实部署中随机或准随机改变并行度、调度、精度或通信规约,固定问题规模、精度、数据布局与编译选项,比较前后与未处理组;什么算证伪:若效应低于测量误差、跨环境方向不一致,或工作流重放是否包含数据、环境与调度状态不再预测失败,则命题被证伪。
真实基准裂缝的测量命题:在控制共同预算后,稀疏访存、通信和同步受限的基准必须与密集线性代数并列,峰值与持续性能的裂;怎么做:建立跨三种环境的统一日志,直接测量“HPCG有效性能/HPL峰值性能”并分层报告尾部;什么算证伪:若效应低于测量误差、跨环境方向不一致,或机器拓扑与输入尺度是否改变瓶颈不再预测失败,则命题被证伪。
局部性感知调度的复现重估命题:在控制共同预算后,调度必须同时估计数据驻留、迁移代价、设备适配度与后续关键路径;怎么做:用新版本、强基线和独立团队重做第13条的关键设计,保存全部失败路径;什么算证伪:若效应低于测量误差、跨环境方向不一致,或最快一次运行能否代表运行分布不再预测失败,则命题被证伪。
韧性超越检查点的跨领域命题:在控制共同预算后,极端规模下,检查点本身会拥塞;怎么做:把相邻领域的审计、因果或能量账本移入本领域,以共同分母连接到解时间、能量到解和数值偏差;什么算证伪:若效应低于测量误差、跨环境方向不一致,或节省通信是否以额外计算和内存为代价不再预测失败,则命题被证伪。
性能分布论的因果识别命题:在控制共同预算后,操作系统噪声、网络争用、温度和共享资源会生成长尾,性能应以分布、置信区间和重;怎么做:在真实部署中随机或准随机改变并行度、调度、精度或通信规约,固定问题规模、精度、数据布局与编译选项,比较前后与未处理组;什么算证伪:若效应低于测量误差、跨环境方向不一致,或跨加速器迁移时效率与正确性是否同时保持不再预测失败,则命题被证伪。
精度契约的测量命题:在控制共同预算后,应用应把物理容差、统计误差和数值误差写成契约,再允许编译器与运行时选择精;怎么做:建立跨三种环境的统一日志,直接测量“满足科学误差阈值的运行数/总运行数”并分层报告尾部;什么算证伪:若效应低于测量误差、跨环境方向不一致,或工作流重放是否包含数据、环境与调度状态不再预测失败,则命题被证伪。
◎ 资料核验
- Williams, S., Waterman, A., & Patterson, D. (2009). Roofline: An insightful visual performance model for multicore architectures. Communications of the ACM, 52(4), 65–76. https://doi.org/10.1145/1498765.1498785.
- Demmel, J., Grigori, L., Hoemmen, M., & Langou, J. (2012). Communication-optimal parallel and sequential QR and LU factorizations. SIAM Journal on Scientific Computing, 34(1), A206–A239. https://doi.org/10.1137/080731992.
- Kamil, S., et al. (2007). Productivity and performance using partitioned global address space languages. Proceedings of PASCO 2007. ACM.
- Augonnet, C., Thibault, S., Namyst, R., & Wacrenier, P.-A. (2011). StarPU: A unified platform for task scheduling on heterogeneous multicore architectures. Concurrency and Computation: Practice and Experience, 23(2), 187–198.
- Nickolls, J., Buck, I., Garland, M., & Skadron, K. (2008). Scalable parallel programming with CUDA. ACM Queue, 6(2), 40–53. https://doi.org/10.1145/1365490.1365500.
- Ansel, J., et al. (2014). OpenTuner: An extensible framework for program autotuning. Proceedings of PACT 2014, 303–316. ACM.
- Horowitz, M. (2014). Computing’s energy problem (and what we can do about it). Proceedings of ISSCC 2014, 10–14. IEEE.
- Demmel, J., & Nguyen, H. D. (2013). Fast reproducible floating-point summation. Proceedings of ARITH 2013, 163–172. IEEE.
- Carson, E., & Higham, N. J. (2018). Accelerating the solution of linear systems by iterative refinement in three precisions. SIAM Journal on Scientific Computing, 40(2), A817–A847.
- Pennycook, S. J., Sewall, J. D., & Lee, V. W. (2016). A metric for performance portability. Proceedings of PMBS 2016. IEEE.
- Dongarra, J., Heroux, M. A., & Luszczek, P. (2016). High-performance conjugate-gradient benchmark: A new metric for ranking high-performance computing systems. International Journal of High Performance Computing Applications, 30(1), 3–10. https://doi.org/10.1177/1094342015593158.
- U.S. Department of Energy. (2016). Exascale Computing Project plan.
- Gonthier, M., Marchal, L., & Thibault, S. (2025). A scheduler to foster data locality for GPU and out-of-core task-based linear algebra applications. Journal of Parallel and Distributed Computing, 206, 105170. https://doi.org/10.1016/j.jpdc.2025.105170.
- Godoy, W. F., et al. (2020). ADIOS 2: The adaptable input output system. SoftwareX, 12, 100561.
- Agullo, E., et al. (2022). Resiliency in numerical algorithm design for extreme scale simulations. International Journal of High Performance Computing Applications, 36(2), 251–285. https://doi.org/10.1177/10943420211055188.
- Kurtzer, G. M., Sochat, V., & Bauer, M. W. (2017). Singularity: Scientific containers for mobility of compute. PLOS ONE, 12(5), e0177459.
- Salimi Beni, M., Hunold, S., & Cosenza, B. (2024). Analysis and prediction of performance variability in large-scale computing systems. The Journal of Supercomputing, 80, 14978–15005. https://doi.org/10.1007/s11227-024-06040-w.
- Haidar, A., Jagode, H., Vaccaro, P., YarKhan, A., Tomov, S., & Dongarra, J. (2019). Investigating power capping toward energy-efficient scientific applications. Concurrency and Computation: Practice and Experience, 31(6), e4485. https://doi.org/10.1002/cpe.4485.
- Chiang, W.-F., Baranowski, M., Briggs, I., Solovyev, A., Gopalakrishnan, G., & Rakamarić, Z. (2017). Rigorous floating-point mixed-precision tuning. Proceedings of POPL 2017, 300–315. https://doi.org/10.1145/3009837.3009846.
- Babuji, Y., et al. (2019). Parsl: Pervasive parallel programming in Python. Proceedings of HPDC 2019. ACM.
- Pallez, G., Hill, J. C., & Hunold, S. (2025). Implementing a reproducibility initiative in HPC: Experiences from SC'24. Proceedings of ACM REP 2025, 76–84. https://doi.org/10.1145/3736731.3746148.