物理院地下實驗室的走廊很長,頂上的白熾燈發出微弱的電流聲。
陳拙順著樓梯走下來,推開了走廊儘頭那扇隔音門。
迎麵撲來一股很濃的煙味,夾雜著機箱散熱孔吹出來的熱氣。
張淵坐在中間那台電腦前,雙手胡亂抓了一把本就亂糟糟的頭髮,他眼底的紅血絲很重,嘴脣乾得起了皮。
林芳坐在另一側的桌子前,手裡拿著一遝厚厚的列印紙,正拿著紅筆在上麵一行行地覈對資料,她抬手揉了揉眉心,端起桌上的搪瓷茶缸喝了一口,眉頭微微皺了一下,水顯然已經涼透了。
聽到推門聲,兩人同時回過頭。
“師兄,師姐。”
陳拙隨手帶上門,把肩上的雙肩包拿下來放在旁邊的空桌子上。
張淵像是抓到了救命稻草,馬上站了起來,把自己的轉椅往後推了推,騰出位置。
“你可算來了,坐。”
張淵指著螢幕。
陳拙走過去,冇急著坐下,先看了一眼螢幕上的畫麵。
那是一個用無數密集網格拚出來的列車車頭三維模型。
線條多得擠在一起,在螢幕上糊成了一片刺眼的綠色,旁邊跑著幾個黑色命令列視窗,遊標停在原地,半天跳不出一個新資料。
“卡死了?”陳拙問。
“卡了三個小時了。”
張淵從桌上摸出煙盒,抽出一根咬在嘴裡,摸了半天冇找到打火機,索性把煙拿下來扔在一邊。
“記憶體跑滿了,CPU占用率一直是百分之百,這破機器再這麼轉下去,我怕主機板要燒。”
陳拙拉過一把椅子坐下,手搭在滑鼠上,輕輕滑了兩下,畫麵卡頓得很厲害,拖動模型的時候會有明顯的延遲。
“鐵道部那邊有新的要求了?”陳拙看著螢幕問。
林芳放下紙杯,點了點頭。
“下個月初,第二輪接觸,西門子和川崎的團隊已經到了京城。”
“對方不肯給氣動資料?”
“一點不漏。”
張淵冷笑了一聲,手掌在桌麵上重重拍了一下。
“不僅不給資料,還在報價上卡我們,他們吃準了我們國內的高速風洞現階段跑不出全尺寸的跨音速資料。”
林芳靠在椅背上,看著天花板上的白熾燈。
“他們的代表在會上說得很難聽,意思是國內的隧道截麵積跟他們不一樣,如果不帶他們的原廠氣動資料,自己胡亂把車頭裝上去跑,進隧道的時候就會出人命,微氣壓波的問題,他們說我們十年內自己算不明白。”
陳拙冇說話,目光在螢幕右側那一長串複雜的偏微分方程上停留。
傳統的納維-斯托克斯方程。
在三維空間下,邊界條件多得讓人頭皮發麻。
“老路走不通了。”
張淵指著那些方程。
“連續流體力學方程在三維跨音速狀態下,非線性項直接爆炸,我們實驗室這幾台機子,連一個初始邊界都推不開。”
陳拙鬆開滑鼠,轉頭看著張淵。
“你想讓我怎麼做?”
張淵嚥了口唾沫,眼神裡透著一點希冀。
“去年你不是幫我們做過一個降維的演演算法嗎?”
張淵比劃了一下。
“就是那個離散代數矩陣,你當時把時間切片裡的無窮大給砍掉了,算出了0.01秒的氣壓突變。”
林芳也坐直了身子。
“陳拙,我們商量過了,既然連續方程算不動,我們能不能故技重施?把你那套離散矩陣套進這個三維模型裡去。”
“把整個三維車頭切成離散的網格點。”張淵接著說。
“我們不去解連續方程了,我們去算矩陣,你那套演演算法的誤差控製得很好,隻要網格切得夠細,我們就能拿出一份精度足夠高的底牌去談判桌上砸他們的臉。”
陳拙安靜地聽完。
他看著張淵和林芳佈滿血絲的眼睛。
他很清楚,把二維平麵的離散矩陣強行推廣到三維全尺寸模型,在數學邏輯上會遇到什麼。
“我那套離散矩陣的底層邏輯,師兄你還有保留嗎?”陳拙問。
“有!全都在底庫裡。”
張淵趕緊在鍵盤上敲了幾下,調出一個全是程式碼的文件。
陳拙湊近螢幕,看了一會兒。
“如果要套進三維模型,矩陣的維度要擴充,原來的雅可比矩陣不適用了,得加非線性補償。”
陳拙語氣很平和。
“能改嗎?”張淵問。
“拿紙筆。”
張淵立刻轉身,從旁邊的列印機紙盒裡抽出一遝A4紙,連同一支筆遞給陳拙。
陳拙把紙墊在桌麵上,拔掉筆帽。
他寫得不快,每一行矩陣的擴充都要考慮三維空間下的座標係轉換。
張淵和林芳站在他身後,大氣都不敢出。
寫了兩頁紙。
陳拙停下筆,把第二頁推到張淵麵前。
“我把維度升上去了。”
陳拙指著上麵的一組公式。
“網格劃分的邏輯也改了,你把這幾段程式碼替換到底層程式裡,重新構建一下網格。”
張淵拿起紙,拉開陳拙旁邊的另一台電腦,雙手在鍵盤上飛快地敲擊起來。
林芳站在兩人中間,看著張淵一行行把陳拙的數學公式轉譯成計算機語言。
半個多小時後。
張淵敲下最後一個回車鍵。
“轉譯完了,無語法錯誤。”
張淵看著螢幕上的提示符。
陳拙點點頭。
“匯入模型資料吧,讓機子跑跑看。”
張淵深吸了一口氣,手心在褲腿上擦了擦汗,移動滑鼠,點選了執行。
四個黑色機箱裡的風扇聲音瞬間拔高了一個八度,像是有什麼東西在裡麵咆哮。
螢幕上的畫麵閃爍了一下。
原本卡死的命令列視窗開始重新整理,一行行綠色的資料流快速滾過。
“動了!”
林芳眼睛一亮,雙手不自覺地握緊了。
張淵也長出了一口氣,靠在椅背上。
“我就說行得通,降維打擊還得看離散矩陣,隻要機子能動,就有希望。”
陳拙冇有出聲,他看著螢幕右下角的一個很小的進度條框。
那裡顯示著“1%”。
“今晚得熬夜了。”
張淵搓了搓臉。
“林芳,你幫我買幾包煙,再弄點濃茶過來,這機子估計得跑一陣子。”
“好,我去。”
林芳拿起桌上的鑰匙,快步走出了實驗室。
陳拙靠在摺疊椅上,看著那條幾乎不動的進度條。
“師兄,先彆高興得太早。”陳拙說。
張淵轉過頭。
“怎麼了?”
“二維切片和三維模型的網格數量,不是簡單的加法。”
陳拙指了指螢幕上那個密密麻麻的車頭模型。
“是指數級的乘法,你剛纔匯入模型的時候,看網格總數了嗎?”
張淵愣了一下,他剛纔急著執行,確實冇細看引數。
他趕緊調出一個後台監控視窗,看了一眼上麵的統計資料。
張淵的臉色僵住了。
“四千兩百萬個網格節點?”
張淵聲音有些發緊。
去年的那個二維模型,網格數量滿打滿算也就十幾萬個。
“嗯。”
陳拙點點頭。
“為了保證三維曲麵的流體精度,網格隻能往細了切,四千多萬個節點,每一個節點還要進行高階矩陣的乘法運算。”
張淵看著旁邊那四台嗡嗡作響的伺服器,突然覺得這聲音冇那麼悅耳了。
“能......能跑完吧?”
張淵不太確定地問。
“看這幾台機子的命了。”陳拙說。
林芳買回了煙和茶。
三個人開始在地下實驗室裡等。
頭幾個小時,氣氛還算輕鬆,張淵甚至有心情跟陳拙聊了兩句遊戲。
但隨著時間推移,空氣裡的焦糊味越來越重。
到了晚上十一點,進度條依然死死地卡在“1%”。
螢幕上的綠色資料流滾動得越來越慢,就像是陷入了某種泥潭。
“不應該啊。”
張淵把菸頭摁滅。
“四個小時了,怎麼連百分之一都冇過?”
“記憶體快爆了。”
陳拙指著監控視窗。
記憶體占用率已經到了98%,頁麵檔案正在瘋狂讀寫硬碟,硬碟燈狂閃。
“重啟一下監控程式,隻留主程序。”
張淵敲鍵盤的手指有些用力。
這一夜,冇人閤眼。
第二天早上。
林芳去食堂打了三份早飯回來,包子和豆漿放在桌子上,漸漸冇了熱氣。
進度條依然是“1%”。
張淵站起身,繞著機櫃走了兩圈,他伸手摸了一下其中一台伺服器的鐵皮外殼,馬上縮回了手。
“好燙。”
張淵皺著眉頭。
“空調開到最大。”
林芳去拿遙控器把空調溫度調到了最低,出風口吹出冷風,但壓不住機器散發出來的熱量。
陳拙坐在椅子上,吃了一個冷掉的包子。
他看著螢幕,知道這已經是強弩之末。
“還在算。”
張淵盯著命令列視窗,每隔十幾秒鐘,螢幕上還會跳出一行新的資料。
“雖然慢,但隻要不報錯宕機,算一個月我們也等。”
第三天。
實驗室裡的味道已經很難聞了。
張淵的雙眼腫得像桃子,林芳裹著一件軍大衣靠在椅子上打盹。
陳拙依然坐在那把摺疊椅上,他冇有回宿舍,這三天裡偶爾趴在桌子上睡一會兒,大部分時間都在觀察資料的變化規律。
下午兩點。
機櫃方向突然傳來滴的一聲長鳴。
緊接著,像是有默契一樣,另外三台伺服器也發出了刺耳的警報聲。
張淵猛地從椅子上彈起來。
林芳也驚醒了,大衣滑落到地上。
中間那台電腦上的畫麵停滯了。
命令列視窗不再滾動,遊標消失。
隨後,整個螢幕閃爍了一下,變成了一片令人絕望的純藍色。
一串白色的英文字元在藍底螢幕上顯現出來。
Fatal Error: Out of Memory.
緊接著,四台伺服器的風扇聲逐漸減弱,硬碟燈徹底熄滅。
宕機了。
張淵呆呆地站在螢幕前,嘴唇動了動,冇發出聲音。
他伸出手,在鍵盤上瘋狂地按著回車鍵和退格鍵,鍵盤發出劈裡啪啦的雜亂聲響。
螢幕依然是藍底白字,冇有一點反應。
“重啟。”
張淵聲音乾澀,伸手就要去按主機上的電源鍵。
“彆按了,師兄。”
陳拙站起身,伸手拉住了張淵的胳膊。
張淵轉過頭看著陳拙,眼眶紅得嚇人。
“重啟接著算啊!從斷點繼續跑!”
“冇有斷點,記憶體溢位,這三天的資料全成了垃圾碎片,冇有儲存。”
陳拙鬆開張淵的胳膊。
林芳在一旁捂住了臉。
三天三夜的苦熬,滿負荷的運轉,最後換來的是四個字:記憶體不足。
張淵慢慢收回手,後背撞在辦公桌的邊緣上,順著桌子滑下來,一屁股坐在摺疊椅上。
他從桌上摸出煙盒,用力抖了一下,裡麵已經空了,他把煙盒捏成一團,狠狠地砸在牆上。
“這就結束了?”
張淵低著頭,聲音裡帶著濃濃的挫敗。
“四千多萬個網格,連機子都撐不住,我們拿什麼去跟彆人談判?”
地下實驗室裡一片死寂。
空調的冷風吹著,四台機子靜靜地停在那兒。
陳拙走到機櫃前,伸手貼在黑色的金屬外殼上。
很燙。
燙得掌心發疼。
這是硬體在極限狀態下掙紮過的痕跡。
陳拙收回手,轉過身,看著頹然坐在那裡的張淵和林芳。
陳拙走到辦公桌前,把之前寫矩陣公式的那兩張A4紙拿起來,看了一眼,然後慢慢撕碎,扔進了垃圾桶。
紙片落下去的聲音在安靜的實驗室裡很清晰。
“師兄。”陳拙開了口。
張淵冇抬頭。
“舊工具冇用了。”
陳拙看著張淵的頭頂,語氣平緩。
張淵抬起頭,眼睛裡佈滿血絲。
“你說什麼?”
“我說,離散矩陣,冇用了。”
陳拙指了一下藍屏的顯示器。
“我們用二維的思路去切三維的幾何,網格的數量呈指數級爆炸,就算把全校的機房都串聯起來併網,也算不完四千萬個節點的複雜乘法。”
林芳站起身,走到陳拙旁邊。
“陳拙,你的意思是,這條路徹底走到頭了?”
“對。”
陳拙看著他們倆。
“隻要我們還在用切割的思路去麵對一個連續的三維流形,算力永遠是個填不滿的無底洞。”
他頓了頓。
“這就是現實的問題,機器不會騙人,它跑不動就是跑不動。”
張淵咬著牙。
“那我們就這樣認了?拿著這堆爛攤子去告訴上麵,我們算不出來,讓他們隨便開價?”
“我冇說認了。”
陳拙轉過身,看著那塊寫滿方程式的白板。
“我得換個思路,讓我想想。”
陳拙走回自己的雙肩包前,把拉鍊拉上,背在肩膀上。
他回頭看了張淵和林芳一眼,嘴角突然往上勾了一下。
那是一個很淡的笑容,在此時壓抑的實驗室裡,透出一種不合時宜的輕鬆。
“往好處想,起碼主機板冇燒,去睡一覺吧,師兄,這破機子也得歇兩天了。”
說完,陳拙推開門,走了出去。