第108章 降维解构(3 / 7)
江临那句抽样不是证明,刺痛的並不仅仅是陈启明。
裴礪在这三年里,日復一日地构建著自己的超优化器。
他试图用算法在海量的指令组合中寻找最优解。
但那些由算法搜出来的、性能卓越的机器码,他十有八九是不敢直接上线部署的。
原因无他。
他无法从数学上证明那些千奇百怪的指令组合在逻辑上是绝对等价且正確的。
能用,是机器夜以继日跑测试跑出来的。
对不对,他的心里却始终悬著一根尖锐的刺,时刻担忧著在某一个罕见的微架构状態下,程序会全盘崩溃。
而此刻,眼前屏幕上那个静静发光的绿色proved,恰好就是拔出他心中那根刺的唯一解药。
办公室里陷入了长达十几秒的安静。
“你这个验证夹具是对任何一段不同结构的sort5代码,都能做到这样一锤定音的评判吗?”
陈启明再次开口时,声音变得有些发紧。
“任何一段由compare-exchange原语表达出来的sort5排序网络,都可以。”
江临的回答没有丝毫犹豫。
“但它证明的是抽象网络层的正確性,不是证明任意c代码、任意编译器、任意机器码都安全。输入域必须满足全序,比较器必须严格等价於 、clang、simd 指令、整数溢出、nan和未定义行为,那是下一层验证要处理的东西。”
江临没有在这个绿色的胜利上过多停留,他熟练地操作滑鼠,退回上一级目录,切到了第二个文件夹。
“正確性这块基石既然已经焊死,接下来,才是您在工程落地时真正觉得头疼的那一半,如何做到极致的快。”
陈启明的注意力一下子被吸引了过去。
屏幕上展现出来的,不再是简单的测试脚本,而是一套由江临亲手搭建的框架骨架。
对於普通人而言,那可能只是一堆枯燥的英文目录和层级结构。
但对於陈启明这种浸淫系统架构数十年的老手来说,仅仅是扫了一眼整个工程的目录依赖关係,他的瞳孔就不由自主地收缩了一下。
因为这套旨在寻找最优指令排列的超优化框架,被乾乾净净地切分成了三个相互独立却又严密咬合的层次。
“第一层,我称之为候选生成器。”
江临的滑鼠指针在一个名为generator的模块上悬停。
“它的唯一职责,就是根据规则不断向外吐出各种可能的排序网络拓扑结构。它负责添加比较器、执行初步的冗余剪枝、进行等价状態排重。这一层完全运作在抽象的数学空间里,跟代码最终要跑在什么机器上,没有半点关係。”
“第二层,就是我们刚才演示过的那个零一验证器,在这个系统里扮演著绝对冷酷的门卫角色。底层搜索算法吐出来的候选网络里,必定会存在大把跑得飞快,但逻辑其实是错误的垃圾结构。这一层不看任何性能指標,只看正確性,把那些偽劣產品全部当场枪毙,一个不漏。”
“至於第三层,也就是代价评估引擎。”江临的语速放缓,加重了语气,“它的任务是给那些存活下来的正確的候选网络打分,判断哪一个在实际运行中会更快。”
“而这一层,是整个框架中,唯一与具体的底层物理硬体產生绑定的部分。”
江临转过头,看著三人说。
“最关键的是,它是热插拔的。” ↑返回顶部↑
裴礪在这三年里,日復一日地构建著自己的超优化器。
他试图用算法在海量的指令组合中寻找最优解。
但那些由算法搜出来的、性能卓越的机器码,他十有八九是不敢直接上线部署的。
原因无他。
他无法从数学上证明那些千奇百怪的指令组合在逻辑上是绝对等价且正確的。
能用,是机器夜以继日跑测试跑出来的。
对不对,他的心里却始终悬著一根尖锐的刺,时刻担忧著在某一个罕见的微架构状態下,程序会全盘崩溃。
而此刻,眼前屏幕上那个静静发光的绿色proved,恰好就是拔出他心中那根刺的唯一解药。
办公室里陷入了长达十几秒的安静。
“你这个验证夹具是对任何一段不同结构的sort5代码,都能做到这样一锤定音的评判吗?”
陈启明再次开口时,声音变得有些发紧。
“任何一段由compare-exchange原语表达出来的sort5排序网络,都可以。”
江临的回答没有丝毫犹豫。
“但它证明的是抽象网络层的正確性,不是证明任意c代码、任意编译器、任意机器码都安全。输入域必须满足全序,比较器必须严格等价於 、clang、simd 指令、整数溢出、nan和未定义行为,那是下一层验证要处理的东西。”
江临没有在这个绿色的胜利上过多停留,他熟练地操作滑鼠,退回上一级目录,切到了第二个文件夹。
“正確性这块基石既然已经焊死,接下来,才是您在工程落地时真正觉得头疼的那一半,如何做到极致的快。”
陈启明的注意力一下子被吸引了过去。
屏幕上展现出来的,不再是简单的测试脚本,而是一套由江临亲手搭建的框架骨架。
对於普通人而言,那可能只是一堆枯燥的英文目录和层级结构。
但对於陈启明这种浸淫系统架构数十年的老手来说,仅仅是扫了一眼整个工程的目录依赖关係,他的瞳孔就不由自主地收缩了一下。
因为这套旨在寻找最优指令排列的超优化框架,被乾乾净净地切分成了三个相互独立却又严密咬合的层次。
“第一层,我称之为候选生成器。”
江临的滑鼠指针在一个名为generator的模块上悬停。
“它的唯一职责,就是根据规则不断向外吐出各种可能的排序网络拓扑结构。它负责添加比较器、执行初步的冗余剪枝、进行等价状態排重。这一层完全运作在抽象的数学空间里,跟代码最终要跑在什么机器上,没有半点关係。”
“第二层,就是我们刚才演示过的那个零一验证器,在这个系统里扮演著绝对冷酷的门卫角色。底层搜索算法吐出来的候选网络里,必定会存在大把跑得飞快,但逻辑其实是错误的垃圾结构。这一层不看任何性能指標,只看正確性,把那些偽劣產品全部当场枪毙,一个不漏。”
“至於第三层,也就是代价评估引擎。”江临的语速放缓,加重了语气,“它的任务是给那些存活下来的正確的候选网络打分,判断哪一个在实际运行中会更快。”
“而这一层,是整个框架中,唯一与具体的底层物理硬体產生绑定的部分。”
江临转过头,看著三人说。
“最关键的是,它是热插拔的。” ↑返回顶部↑