笔趣阁 > 都市小说 > 我的智商逐年递增 > 第358章 尽量
    特伦顿的风从教堂门口灌进来的时候,陈拙正弯着腰,把一箱临期罐头搬出来。


    箱子不算轻。


    纸板外壳被雪水打湿了一角,边缘有些发软,手指稍微一用力,就能摸到里面铁罐冰冷的圆弧。


    亚伯拉罕站在後面,一边用胳膊挡开几个试图提前往前挤的流浪汉,一边用那根旧棒球棍敲了敲地面。


    「排队。」


    神父的声音不大,但在这条泥泞街道上足够有用。


    「今天没人饿死,但谁抢,谁最後拿。」


    人群里传来几声不满的咕哝。


    一个裹着脏毯子的男人骂了两句,看到亚伯拉罕手里的棒球棍,又把嘴闭上了。


    阿米尔站在教堂侧门旁,沉默地接过陈拙搬来的箱子,脸上没有多余表情,只在箱子堆歪的时候伸手扶正。


    伊利亚则完全是另一种状态。


    他站在泥水边缘,穿着那双已经被特伦顿毁掉的佛罗伦斯手工皮鞋,双手抱着一箱切片面包,嘴里从俄语骂到英语,又从英语骂回俄语。


    「我发誓,如果上帝真的爱世人,他至少应该先让这个街区有一条像样的排水沟!」


    亚伯拉罕头也不回。


    「上帝可能也没想到,会有人穿着这双鞋来特伦顿搬面包。」


    伊利亚冷笑了一声。


    「我也没想到。」


    他把箱子重重放在门边,又低头看了一眼自己的鞋,表情像是在参加一场小型葬礼。


    陈拙从车斗里搬下最後一箱罐头,刚准备转身,口袋里的手机忽然震了一下。


    起初他没听见。


    101看书 101 看书网超便捷,.轻松看 全手打无错站


    特伦顿的街道太吵。


    有人在吵架,有人在咳嗽,远处还有警笛声被风吹得忽近忽远,伊利亚正对着一块溅到大衣下摆上的泥点发表长篇控诉。


    手机又震了一次。


    陈拙把箱子交给阿米尔,空出一只手,从大衣内袋里摸出诺基亚。


    屏幕亮着,来电显示是一串跨洋转接後的号码。


    下面跳着两个字。


    楚戈。


    陈拙看着那个名字,停顿了半秒。


    这个点打国际长途,不是电脑炸了,就是人快炸了。


    按楚戈的性格,前者的可能性还大一点。


    在他的记忆里,这个名字通常和淩晨一点的宿舍灯光,乱糟糟的网线,半瓶可乐,以及键盘敲击声联系在一起。


    楚戈不是一个喜欢打电话求救的人。


    哪怕当年在学校,他写程序写到满脸发青,也更愿意先自己把问题拆成一地零件,再把其中最硬的那块丢到陈拙桌上。


    陈拙按下接听键。


    电话接通後,对面没有立刻说话。


    听筒里先传来一阵很轻的电流声,然後是一个空旷而压抑的呼吸声。


    隔了几秒,楚戈的声音才从地球另一端传过来。


    「拙哥。」


    声音很低。


    有点哑,还带着一种很久没有睡觉後的乾涩。


    陈拙站在教堂侧门旁,背後是灰白色的天空和泥泞的街道,前方是正在排队领取食物的人群。


    他没有问「怎麽了」。


    楚戈能在这个点打来,肯定已经不是一句「怎麽了」能解决的事。


    「你说。」


    陈拙换了一只手拿手机,另一只手从旁边的箱子里取出两罐肉酱,递给一个排到面前的老妇人。


    老妇人接过罐头,嘟囔着道谢。


    电话那头,楚戈沉默了两秒。


    「我先说清楚。」


    楚戈的声音压得很低,像是站在一个封闭的楼梯间里。


    「我不是让你帮我写代码,也不是让你管我们公司的事。」


    陈拙擡起眼,看了一眼正拿棒球棍维持队伍秩序的亚伯拉罕。


    「嗯。」


    「你也不懂计算机。」楚戈又说。


    这句话说得很直,像当年宿舍里几个人互相拆台时的语气。


    陈拙点了点头。


    「对,我对计算机的理解,主要停留在别把水泼键盘上。」


    电话那头沉默了一下。


    楚戈像是想笑,但没笑出来。


    那口气憋在嗓子里,最後只变成了一声很轻的呼吸。


    「我就是想问你一个数学上的问题。」


    陈拙从箱子里又拿出一袋临期面包,放到阿米尔递过来的桌板上。


    「你问。」


    电话那头,楚戈的声音顿了顿,开始尽量平静地描述。


    他说得不快。


    从三十万并发开始说。


    说他们复现了波士顿那几篇预印本里公开出来的底层逻辑,写了两个月代码,买了能买到的最好商用伺服器,三十万并发时,系统跑得像一块凉水里的石头,纹丝不动。


    然後是五十万。


    一开始能撑,後面响应时间越来越长,内存堆积,主进程被系统杀死。


    八十万。


    死机。


    一百万。


    瞬间CPU拉满,内存见顶,伺服器像被人把脑子里所有神经同时点燃,直接宕掉。


    後来他们试图在工程外围挂强制回收脚本。


    楚戈说到这里的时候,声音里终於出现了一点压不住的疲惫。


    「然後烧了一台伺服器的电源。」


    陈拙安静地听着。


    他没有插话。


    特伦顿这边的队伍向前移动,陈拙跟着往旁边挪了一步,把手机夹在肩膀和耳朵之间,双手搬起一箱新的面包。


    伊利亚看了他一眼,皱眉。


    「你在跟谁讲电话?你现在像一个在战场上接听银行推销的人。」


    陈拙偏过头,用肩膀压着手机,腾出一只手扶了一下快要滑下去的纸箱。


    「等一下。」


    他用中文对电话那头说了一句,又转头看向伊利亚。


    「我朋友的机器快死了,情况比你的鞋严重。」


    伊利亚低头看了一眼自己的皮鞋,脸色明显更差了。


    「这很难说。」


    陈拙没再理他。


    阿米尔从他手里接过面包箱,目光落在陈拙耳边的手机上,又很快移开。


    楚戈那边似乎也听到了这一句,但没有追问。


    他继续说。


    「代码我们查了三遍。」


    「没有内存泄漏,没有指针越界,也不是线程池逻辑写错。」


    「工程上的问题能试的都试了,但一到极值点,那个矩阵就太大了,机器吃不下。」


    他的声音低了一些。


    「拙哥,我现在就想问你一句。」


    楼梯间里似乎有风声。


    「你那个代数底座,是不是本来就不该这麽用?」


    陈拙终於停下了手里的动作。


    他站在教堂侧门旁,转过身,看向远处那条被雪水和泥巴混成灰黑色的街道。


    陈拙沉默了几秒。


    「你们直接用了完整结构?」


    楚戈那边安静了一下。


    「嗯。


    「」


    「完整矩阵?」


    「嗯。」


    「没有在生成前拆域?」


    楚戈愣了一下。


    「我们是在调度层之後做的切分。」


    「那就是生成完再切。」


    电话那头没有声音。


    陈拙伸手从箱子里取出一罐肉酱,放到桌板上,又顺手把旁边那袋快滑下去的面包扶正。


    「那不死才奇怪。」


    这句话说得很轻。


    没有责备,也没有嘲笑。


    就像在说一件非常普通的事实。


    电话那头,楚戈呼吸停了一瞬。


    「什麽意思?」


    陈拙看了一眼身边正在排队的流浪汉,转身往教堂里面走了几步,避开最吵的人群。


    前厅里稍微安静一些。


    亚伯拉罕看了他一眼,没有跟上,只是继续站在门口守着队伍。


    陈拙靠在一张破木桌旁,低头看着桌面上散落的面包屑。


    「那篇东西不是给你们这种机器直接跑的。」


    他说。


    「它是一个数学闭环。」


    「我写它的时候,讨论的是高维并发对象在代数空间里的完整映射和一次性降维,它默认的是,在极值点出现时,承载它的系统有能力把完整对象先托住,再压下去。」


    楚戈没有说话。


    陈拙继续道:「你们现在的问题不是代码错了,也不是伺服器坏了。」


    「是你们让那个完整对象出现了。


    17


    电话那边,楚戈的声音变得更低。


    「完整对象不能出现?」


    「在你们的机器上,不能。」陈拙说。


    「完整矩阵一旦生成,就已经超过你们硬体能承受的范围了。後面再写回收脚本,就像盘子已经扣在地上了,你再研究怎麽端稳,来不及。」


    「剪得动吗?」


    楚戈没有回答。


    陈拙听见电话那头有很轻的呼吸声。


    他知道楚戈听懂了。


    所以他没有继续解释「为什麽剪不动」。


    楚戈不是数学家,但他是一个足够优秀的工程师。


    陈拙只需要把那条线指出来,楚戈自己就能看到线後面的墙。


    过了一会儿,楚戈才开口。


    「可是原论文里的结构就是完整闭合的。」


    「对。」


    「如果不完整,数学上不就塌了吗?」


    「看你在哪个层面上要求完整。」


    陈拙说。


    他低头看着桌面上的面包屑,伸出手指,在木桌上随手划了一下。


    「你还记得以前宿舍里,大勇问过一个材料受力的问题吗?」


    「哪次?」


    「他用钢管和铝棒抵消热膨胀那次。」


    楚戈沉默了一下。


    「记得。」


    「那不是完美材料。」


    陈拙说。


    「它只是让两个不完美的东西在某个局部区间里互相抵消,整体上当然不优雅,也不纯粹,但在那个温度范围内,它稳定。」


    「你们现在也一样。」


    陈拙停顿了一下,听见外面伊利亚又在抱怨有人踩了他的鞋。


    「你们不需要完整的全局最优。」


    「你们只需要局部不炸。」


    电话另一端,楚戈的呼吸声变重了一点。


    「怎麽做?」


    「你别问我代码。」


    陈拙说得很乾脆。


    「我看你们那东西,大概跟你看大勇的合金配比差不多。」


    电话那头,楚戈终於低低笑了一声。


    很短。


    但那股压得快要发硬的东西,似乎因为这一句松了一点。


    陈拙继续道:「但从数学上说,你们不该让那个矩阵完整出现。」


    「别等所有并发请求汇成一个整体再降维。」


    「在它进入完整映射之前,先把输入域拆开。」


    楚戈没说话。


    陈拙擡起头,看向礼拜堂的方向。


    门缝里能看见那块破旧黑板的一角。


    「比如一百万。」


    陈拙说。


    「你们现在把它当成一个一百万的整体去算,所以它会生成一个你们机器托不起的高维对象。」


    「但一百万不是一百万。」


    楚戈听到这句话,忽然有一种很熟悉的感觉。


    当年在科大宿舍里,陈拙给王大勇解释实变函数的时候,也曾用这种像拆积木一样的语气,把一个看起来庞大而沉重的东西拆成很多个简单到令人发愣的部分。


    陈拙继续道:「一百万可以是二十个五万,也可以是五十个两万,重点不是数字怎麽分,重点是每一块内部必须能够独立闭合。」


    楚戈的手指下意识地按在楼梯间粗糙的墙皮上。


    「局部闭合?」


    「嗯,每一个局部块内部,保留完整映射,块和块之间,不传递完整矩阵,只传递边界量,边界量必须低维,必须固定,必须允许误差。」


    电话那头安静了足足五秒。


    然後楚戈的声音忽然变得快了一点。


    「也就是说,不能做全局调度,要做分片局部调度。」


    「这是你的说法。」


    陈拙纠正道。


    「我的说法是,不要把整个空间一次性擡起来,你们擡不动。」


    「那块和块之间的数据冲突呢?」


    「用边界常数处理。」


    「常数C?」


    「别用那个。」


    陈拙几乎没有停顿。


    「那个太重。」


    楚戈愣住了。


    「太重?」


    「嗯。


    「」


    陈拙看了一眼自己的鞋尖。


    「原始常数C是为了证明用的,不是给几台商用伺服器硬背的。」


    他说这句话的时候,没有任何不好意思。


    好像一篇震动数学、物理和计算机世界的东西,在他这里本来就只是某种不适合普通机器的理论工具。


    「你们需要一个简化的边界常数。」


    「它不必维持全局代数优雅,只要能保证两个局部块拼接时不发生数据冲突。」


    楚戈的眼睛慢慢亮了起来。


    「牺牲一部分全局最优?」


    「对。」


    「换局部稳定?」


    「对。」


    「那用户请求在块之间迁移的时候怎麽办?」


    「那是你的问题。」


    陈拙回答得非常自然。


    「你是写代码的。」


    楚戈张了张嘴,忽然又有点想笑。


    这个回答太陈拙了。


    他确实不懂计算机。


    他甚至懒得假装懂。


    可他偏偏把最核心的那道数学门槛,直接踹开了一条缝。


    「拙哥。」


    楚戈低声说。


    「我能不能理解成,你让我把完整空间拆成很多个小盒子,每个盒子里自己算自己的,盒子之间只交换一个很轻的边界标记?」


    「差不多。」


    「这个边界标记不追求数学上的完美闭合,只保证工程上不冲突?」


    「不是工程上。」


    陈拙又纠正了一次。


    「是局部代数关系不冲突。」


    楚戈立刻改口。


    「对,局部代数关系不冲突。」


    陈拙想了想,又补充了一句。


    「还有一点。」


    「你说。」


    「不要在映射之後回收。」


    「那在哪?」


    「映射之前。」


    楚戈整个人猛地站直,楼梯间里的灯因为他的动作闪了一下。


    「映射之前?」


    「你们之前的外挂回收为什麽烧机器?」陈拙问。


    楚戈立刻答道:「因为强制回收切断了同调映射,矩阵找不到对应节点,疯狂重试。」


    「所以不要切已经映射过的东西。


    陈拙说。


    「在它成为矩阵的一部分之前,就决定它属於哪个局部块。」


    「如果它不属於任何块,就先让它等。」


    「别让它进去。」


    楚戈握着手机的手指慢慢收紧。


    这不是代码,这也不是一个可以直接复制粘贴的解决方案。


    但这是一条路。


    一条他们自己可以走的路。


    输入域前置分片。


    局部闭合。


    低维边界量。


    简化边界常数。


    映射前限流,而不是映射後回收。


    这几句话在楚戈脑子里迅速拼成了一张新的架构图。


    不是原论文里那个巨大,完美,漂亮到不讲道理的数学圣殿。


    而是一排低矮,结实,能扛风雨的仓库。


    不好看。


    但能用。


    电话那头,特伦顿的声音忽然又变得嘈杂起来。


    有人大声争执,亚伯拉罕低沉的警告声从远处传来,伊利亚用他那极具穿透力的俄式英语骂了一句什麽。


    陈拙侧过头,看见救济队伍前面有两个男人因为多拿一袋面包推搡起来。


    亚伯拉罕的棒球棍已经擡了起来。


    阿米尔默不作声地走过去,站在两人中间。


    陈拙收回目光,对电话那头说:「我这边快从分面包变成分人了。


    楚戈怔了一下。


    他这才重新意识到,自己这通电话并不是打到了普林斯顿某间安静的办公室里。


    对面很吵。


    有风声,有人的争执声,有箱子拖动的声音,还有一个陌生男人用带弹舌的口音不耐烦地骂街。


    「你在哪?」楚戈下意识问。


    「特伦顿。」


    「干嘛?」


    「分面包。」


    楚戈一时间没反应过来。


    「啊?」


    陈拙看着门外泥泞街道上排队的人群,语气很平常。


    「帮一个神父分临期食品。」


    电话那头沉默了两秒。


    楚戈忽然不知道该说什麽。


    深市南山科技园的楼梯间里,白炽灯忽明忽暗。


    门後是十几台伺服器,是合同,是上线时间,是百万并发,是一家公司生死存亡。


    而电话另一端,陈拙站在新泽西某个贫民区破旧教堂的门口,手里可能还沾着面包屑正在给流浪汉分食物。


    两个世界隔着半个地球。


    却被一通国际长途勉强连在一起。


    楚戈靠着墙,忽然笑了一下。


    「你还真是......在哪都挺忙。」


    陈拙没有接这句。


    他只是说:「楚戈。」


    「嗯。」


    「别去碰完整模型。」


    陈拙的声音在嘈杂背景里依然稳定。


    「你们用不起,不丢人。」


    楚戈喉咙动了一下。


    这句话比任何安慰都有用。


    不是你们差。


    是这东西本来就不是这麽用的。


    「我知道了。」


    楚戈低声说。


    陈拙继续道:「你们现在要做的,是写一个你们自己的版本。」


    「不是复现我那篇东西。」


    「是借它的骨架,重新搭一个能在你们机器上站住的东西。」


    楚戈闭上眼睛,深吸了一口气。


    「明白。」


    「别问我代码。


    「」


    「不会问。」


    「别问我商业。


    「不问。」


    「你们自己决定能牺牲多少延迟,能接受多少等待,能把输入域拆成多碎。」


    「好。」


    陈拙看了一眼教堂门口,亚伯拉罕已经把那两个推搡的男人分开了。


    「我挂了。」


    楚戈握着手机,忽然开口。


    「拙哥。」


    「嗯?


    「谢了。」


    电话那头安静了一下。


    然後陈拙的声音传来。


    「别烧第二台伺服器了。」


    楚戈愣了半秒,随即低低笑出了声。


    「尽量。


    "」


    >