返回

1978:从婴儿开始增加智商

首页
关灯
护眼
字体:

最新网址:m.aikanxs.cc 重要!

第九十章 秒掉莫斯科(第1/2页)
   存书签 书架管理 返回目录

第90章 秒掉莫斯科

    莫斯科的清晨来得早。

    六点半,天已经大亮。

    陆沉睁开眼,脑海中的倒计时刚好归零四个小时的睡眠,足够恢复精力了。

    林枫还在睡,呼吸均匀。

    昨晚他在终端前待到十一点,反覆熟悉BESM—6的指令集,最后是被值班老师赶回来的。

    陆沉没有叫醒他。他安静地洗漱,然后坐在床边,闭上眼睛。

    【写到这里我希望读者记一下我们域名 台湾小说网超便捷,?????.???随时享 】

    意识沉入那片他称之为「构建空间」的领域。

    这是他的超算大脑真正施展威力的地方。

    在他的感知中,BESM—6的硬体结构像一张三维蓝图般展开。

    寄存器组丶内存分页丶指令预取队列丶微码存储器—每一个模块都清晰可见,每一个信号传递的时序都精确到时钟周期。

    他开始构建优化版数学库。

    标准库的浮点乘法子程序需要147个时钟周期。

    他的目标是:89个。

    方法很简单—至少原理上很简单。标准库为了兼容所有数据类型和边界情况,加入了大量判断分支。而他只需要针对团体赛可能的计算场景,裁剪掉不需要的通用性,用最直接的寄存器操作完成运算。

    但这需要精确到每一个微码步骤的调度。

    如果调度错一个周期,乘法的部分积就会错位。如果寄存器冲突没处理好,流水线就会空转。

    他需要同时考虑:

    指令发射顺序寄存器依赖关系内存访问延迟微码跳转的预判惩罚这些变量互相耦合,构成一个极其复杂的优化问题。

    但对于他而言—

    这只是一道有趣的题。

    七点十五分,林枫醒了。

    他看到陆沉坐在床边,双眼微闭,以为他在打坐。

    「修仙呢?」林枫揉着眼睛坐起来。

    陆沉睁开眼。

    「写完了。」

    「啊?」

    「数学库。」陆沉说,「乘除法丶浮点运算丶矩阵基本操作,大概四十几个函数,比赛的时候直接用就行。」

    林枫沉默了五秒钟。

    「————你一早上写的?」

    「嗯。」

    「在脑子里?」

    陆沉想了想,觉得解释起来太复杂,于是只说:「差不多。

    林枫张了张嘴,最终什么也没说,默默起床洗漱去了。

    八点整,中国队集合完毕,前往计算中心。

    团体赛的算法设计模块在主赛场进行。

    十二支代表队各占据一片区域,每队一台BESM—6终端,配发题目和参考手册。

    陆沉注意到,苏联队坐最前排,东德队和波兰队分列两侧。

    中国队的位置在第三排左侧,旁边是匈牙利队。

    落座时,一个戴眼镜的匈牙利男生朝他们点了点头,用口音浓重的英语说:「祝好运」

    。

    陆沉点头回礼。

    八点三十分,主考官走到讲台前。

    那是位五十多岁的苏联教授,灰白的头发梳得一丝不苟,他用俄语宣读比赛规则,旁边有翻译用英语复述。

    「本次算法设计模块的题目,由苏联科学院计算中心提供。」

    「限时四小时。」

    「评分标准:正确性占50%,运行效率占40%,代码结构占10%。」

    「可以使用任何程式语言,但评测将在BESM—6实机上运行。」

    「现在,分发题目。」

    题目是密封在牛皮纸袋里的。陆沉拆开,抽出里面的纸张。

    只有一页纸。

    上面是一段简短的描述,和一组数学公式。

    陆沉的目光扫过题目。

    然后,他的瞳孔微微收缩了一下。

    不是因为难。

    是因为他见过这道题。

    准确地说,是前世见过。

    这道题的核心,是求解大规模稀疏线性方程组的预条件共轭梯度法—一种在计算数学中极其重要的叠代算法。

    预条件技术还处于萌芽阶段。

    共轭梯度法虽然在五十年代就被提出,但因为数值稳定性和收敛速度的问题,一直没能在实际工程中广泛使用。

    直到七十年代末,预条件技术的突破才让这个方法真正实用化。

    而这道题,恰恰要求选手设计一个预条件子,并实现完整的求解流程。

    陆沉放下题目。

    他知道这道题的标准解法一不完整的Cholesky分解作为预条件子,结合共轭梯度叠代。这是他前世做数值计算时烂熟于心的东西。

    但问题在于——

    1988年,不完整的Cholesky分解的论文还没有发表。

    原始论文是1990年才出现的。

    如果他直接拿出这个解法,会引起什么反应?

    不过这个念头只停留了一瞬。

    他是来比赛的。

    至于之后的事情,之后再说。

    陆沉坐到终端前,开始敲击键盘。

    中国队的分工是:陆沉负责核心算法设计,林枫负责输入输出和测试用例,另外两名队员负责文档和辅助验证。

    但开赛十五分钟后,林枫就发现了一个问题。

    「陆沉。」他压低声音,「你写的这个预条件子————是什么方法?」

    「不完整的Cholesky分解。」

    林枫翻了翻参考手册:「手册上没有。」

    「嗯。

    」

    「那你怎么————」

    「推导出来的。」陆沉没有停下手上的动作,「共轭梯度法的收敛速度取决于系数矩阵的条件数。如果能找到一个近似分解,使得预条件后的矩阵特徵值聚集,就能加速收敛。不完整分解的核心思想是,只保留原始矩阵稀疏结构内的元素,其他位置直接置零。」

    林枫沉默了。

    这些话他每一个字都听得懂,但连在一起就变成了一堵墙。

    他决定不再问,专心做自己能做的事。

    一个小时后,陆沉完成了核心代码。

    他靠在椅背上,闭上眼睛,让代码在脑中的BESM—6模拟器上跑了一遍。

    正确。

    效率标准解法的约60%运行时间。

    够用了。

    他重新睁开眼睛,准备继续完善文档。

    就在这时,他注意到赛场前方出现了一阵轻微的骚动。

    苏联队的区域里,几个队员正在低声争论什么。

    主考官走过去,听了一会儿,然后点了点头,对全场说:「苏联队请求更换终端。原终端出现故障。」

    工作人员开始检查设备,陆沉的目光落在苏联队队长的脸上——那是一个十七八岁的金发少年,眉头紧锁,神情有些焦躁。

    不是因为设备故障。

    设备故障是藉口。

    真正的原因是:他们被题目卡住了。

    预条件共轭梯度法这道题,如果没有不完整分解的思路,就只能用最简单的对角预条件雅可比预条件。

    但雅可比预条件对这道题的病态矩阵效果很差,收敛极慢,甚至可能不收敛。

    苏联队大概试了雅可比,发现跑不通,以为是机

【畅读更新加载慢,章节不完整,请退出畅读后阅读!】

-->>(本章未完,请点击下一页继续阅读)
上一章 目录 下一页