算架構(gòu)設(shè)計(jì):從選型到落地的完整指南)
簡(jiǎn)介這份《HPC高性能計(jì)算架構(gòu)設(shè)計(jì)》文檔面向從事高性能計(jì)算、集群運(yùn)維與架構(gòu)選型的工程師及科研人員系統(tǒng)梳理了HPC的基礎(chǔ)概念、系統(tǒng)組成與主流技術(shù)路線可作為入門認(rèn)知與方案參考。文檔圍繞計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)、集群軟件四大部分展開(kāi)涵蓋高吞吐計(jì)算與分布計(jì)算的分類邏輯、X86處理器與Linux系統(tǒng)的主流搭配、刀片構(gòu)建方式及IB與10GE互聯(lián)網(wǎng)絡(luò)并詳解MPI節(jié)點(diǎn)、胖節(jié)點(diǎn)與GPU加速節(jié)點(diǎn)三類計(jì)算節(jié)點(diǎn)的定位差異。同時(shí)給出單節(jié)點(diǎn)性能計(jì)算公式、Linpack等性能測(cè)試基準(zhǔn)以及UDIMM、RDIMM、LRDIMM內(nèi)存類型的適用場(chǎng)景幫助讀者建立從硬件選型到性能評(píng)估的完整認(rèn)知。資源包內(nèi)含1個(gè)docx文檔壓縮包約979KB結(jié)構(gòu)緊湊便于查閱。目前已有225人學(xué)習(xí)適合需要快速理解HPC架構(gòu)要點(diǎn)、為方案設(shè)計(jì)或技術(shù)選型做知識(shí)儲(chǔ)備的讀者。1. 從一份 HPC 架構(gòu)設(shè)計(jì)文檔說(shuō)起它到底能解決什么問(wèn)題如果你正在做集群選型、超算中心方案或者被要求給一個(gè) CAE/氣象/生命科學(xué)的計(jì)算任務(wù)配硬件那這份《HPC高性能計(jì)算架構(gòu)設(shè)計(jì).docx》就是一份能直接拿來(lái)當(dāng)?shù)赘宓膮⒖假Y料。它不是某款軟件的說(shuō)明書而是一份把 HPC 從市場(chǎng)背景、系統(tǒng)組成、性能指標(biāo)、網(wǎng)絡(luò)選型到應(yīng)用場(chǎng)景串起來(lái)的架構(gòu)設(shè)計(jì)文檔。HPC 高性能計(jì)算的核心邏輯其實(shí)很樸素用很多處理器或者一群機(jī)器通過(guò)并行算法把一個(gè)大問(wèn)題拆成小問(wèn)題分到不同節(jié)點(diǎn)上算再把結(jié)果合并回來(lái)。文檔里把這條主線講得很清楚還順帶把 SMP、NUMA、MPP 三種商用服務(wù)器架構(gòu)的邊界和適用場(chǎng)景做了對(duì)比。適合誰(shuí)看剛接手 HPC 項(xiàng)目、需要快速建立全局認(rèn)知的工程師以及要寫方案、做匯報(bào)、給領(lǐng)導(dǎo)解釋“為什么這里必須上 IB 而不是萬(wàn)兆”的人。它不能替你調(diào) MPI 參數(shù)但能讓你在架構(gòu)層面少走彎路。2. HPC 系統(tǒng)四件套計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)、集群軟件怎么配2.1 計(jì)算節(jié)點(diǎn)選型瘦節(jié)點(diǎn)、胖節(jié)點(diǎn)、GPU 節(jié)點(diǎn)別配反文檔里把計(jì)算節(jié)點(diǎn)分成三類MPI 節(jié)點(diǎn)雙路也叫瘦節(jié)點(diǎn)、胖節(jié)點(diǎn)雙路以上大內(nèi)存、GPU 加速節(jié)點(diǎn)。這個(gè)分類不是拍腦袋來(lái)的它直接對(duì)應(yīng)應(yīng)用類型。計(jì)算密集型應(yīng)用比如 CAE 隱式有限元分析吃的是高主頻 CPU配瘦節(jié)點(diǎn)集群最劃算內(nèi)存約束型應(yīng)用比如某些分子動(dòng)力學(xué)模擬單節(jié)點(diǎn)內(nèi)存需求可能到 1TB 以上這時(shí)候胖節(jié)點(diǎn)就是剛需用瘦節(jié)點(diǎn)堆數(shù)量反而會(huì)因?yàn)榭绻?jié)點(diǎn)通信把性能拖垮GPU 加速節(jié)點(diǎn)則針對(duì)浮點(diǎn)運(yùn)算密集、且能改寫成 CUDA/OpenACC 的任務(wù)文檔里提到 GPU 在浮點(diǎn)運(yùn)算和并行計(jì)算上可以提供數(shù)十倍乃至于上百倍于 CPU 的性能但前提是你的代碼能并行化。常見(jiàn)做法是先看應(yīng)用軟件官方推薦的硬件配置再看你的預(yù)算能買多少節(jié)點(diǎn)。單節(jié)點(diǎn)性能公式文檔里給了單節(jié)點(diǎn)性能 處理器主頻 × 核數(shù) × 單節(jié)點(diǎn) CPU 數(shù)量 × 單周期指令數(shù)。單周期指令數(shù)取 8 或 16取決于 CPU 代際。節(jié)點(diǎn)數(shù)量 峰值浮點(diǎn)性能需求 / 單節(jié)點(diǎn)性能。這個(gè)公式我一般用來(lái)做粗算實(shí)際選型還要看內(nèi)存帶寬和網(wǎng)絡(luò)時(shí)延。提示胖節(jié)點(diǎn)不是越多越好文檔明確說(shuō)“集群中胖節(jié)點(diǎn)的數(shù)量要根據(jù)實(shí)際應(yīng)用需求而定”買多了就是浪費(fèi)機(jī)柜空間和電費(fèi)。2.2 網(wǎng)絡(luò)選型為什么 HPC 偏愛(ài) InfiniBand 而不是以太網(wǎng)文檔里有一句話點(diǎn)得很透HPC 系統(tǒng)使用 IB 互聯(lián)主要原因是 IB 協(xié)議棧簡(jiǎn)單、處理效率高、管理簡(jiǎn)單、對(duì) RDMA 支持好、功耗低、時(shí)延低。RDMA 全稱遠(yuǎn)程直接數(shù)據(jù)存取它通過(guò)網(wǎng)絡(luò)把數(shù)據(jù)直接傳入計(jì)算機(jī)的存儲(chǔ)區(qū)實(shí)現(xiàn) Zero Copy繞過(guò)了操作系統(tǒng)內(nèi)核所以時(shí)延能壓到微秒級(jí)。普通萬(wàn)兆以太網(wǎng)在 TCP/IP 協(xié)議棧里走一圈時(shí)延和 CPU 開(kāi)銷都上去了。對(duì)于 MPI 節(jié)點(diǎn)之間需要頻繁交換中間結(jié)果的任務(wù)比如 CFD 計(jì)算網(wǎng)絡(luò)時(shí)延直接決定并行效率。IB 目前支持 FDR、QDR、EDR 等速率。HCA 是 IB 連接的設(shè)備終結(jié)點(diǎn)提供傳輸功能和 Verb 接口TCA 是 HCA 的子集基本用于存儲(chǔ)。如果你只是做高吞吐計(jì)算子任務(wù)之間沒(méi)什么關(guān)聯(lián)那萬(wàn)兆以太網(wǎng)也能湊合但只要是分布計(jì)算子任務(wù)間聯(lián)系緊密、需要大量數(shù)據(jù)交換IB 就是繞不過(guò)去的選項(xiàng)。2.3 存儲(chǔ)選型并行文件系統(tǒng)是 HPC 的靈魂文檔把并行文件系統(tǒng)稱為“高性能計(jì)算的靈魂”這個(gè)說(shuō)法不夸張。TOP500 系統(tǒng)里存儲(chǔ)主要用分布式文件系統(tǒng)當(dāng)前主流包括 Lustre、GPFS、Hadoop、MogileFS、FreeNAS、FastDFS、NFS、OpenAFS、MooseFS、pNFS、GoogleFS 等其中 Lustre 和 GPFS 是 HPC 最主流的行業(yè)發(fā)展趨勢(shì)。分布式文件系統(tǒng)的設(shè)計(jì)基于客戶機(jī)/服務(wù)器模式用戶不需要關(guān)心數(shù)據(jù)存在哪個(gè)節(jié)點(diǎn)上像用本地文件系統(tǒng)一樣用就行。IO 密集型應(yīng)用比如動(dòng)漫渲染、氣象數(shù)據(jù)預(yù)處理必須配高帶寬大容量并行存儲(chǔ)系統(tǒng)。我一般會(huì)先算兩個(gè)數(shù)聚合帶寬需求GB/s和 IOPS 需求再倒推需要多少個(gè) OSS/OST。Lustre 的 MDS 和 OSS 分離架構(gòu)適合元數(shù)據(jù)操作不頻繁的場(chǎng)景GPFS 在元數(shù)據(jù)性能上更強(qiáng)一些但授權(quán)費(fèi)用也更高。2.4 集群軟件MPI、OpenMPI、OpenMP 別搞混文檔專門用一節(jié)講這三個(gè)縮寫的區(qū)別因?yàn)槌鯇W(xué)者確實(shí)容易暈。MPI 是信息傳遞接口是獨(dú)立于語(yǔ)言的通信協(xié)議標(biāo)準(zhǔn)是一個(gè)庫(kù)OpenMPI 是 MPI 的一種實(shí)現(xiàn)也是庫(kù)項(xiàng)目OpenMP 是應(yīng)用程序界面是共享存儲(chǔ)結(jié)構(gòu)上的一種編程模型。在當(dāng)前并行計(jì)算系統(tǒng)里OpenMP 和 OpenMPI 都是需要的OpenMP 用于本地的并行計(jì)算共享內(nèi)存架構(gòu)OpenMPI 用于機(jī)器之間的通信分布式內(nèi)存架構(gòu)。實(shí)際配集群時(shí)集群軟件層還要裝作業(yè)調(diào)度系統(tǒng)Slurm、PBS、LSF 等、編譯器GCC、Intel、PGI、數(shù)學(xué)庫(kù)MKL、OpenBLAS、MPI 實(shí)現(xiàn)OpenMPI、IntelMPI、MPICH。這些軟件棧的版本兼容性是個(gè)大坑后面避坑章節(jié)會(huì)細(xì)說(shuō)。3. 性能指標(biāo)與基準(zhǔn)測(cè)試Linpack 怎么跑、結(jié)果怎么看3.1 浮點(diǎn)性能單位與 CPU 性能粗算文檔把浮點(diǎn)性能單位列得很清楚MFlops 是每秒一百萬(wàn)次GFlops 是每秒十億次TFlops 是每秒一萬(wàn)億次PFlops 是每秒一千萬(wàn)億次EFlops 是每秒一百京次。你拿到一個(gè)應(yīng)用需求先看它需要多少 TFlops 或 PFlops再用單節(jié)點(diǎn)性能公式倒推節(jié)點(diǎn)數(shù)。單周期指令數(shù)取 8 還是 16取決于 CPU 代際。E5-2600、E5-2600 v2、E7-4800 v2 取 8E5-2600 v3 取 16。這個(gè)數(shù)來(lái)自 AVX/AVX2 指令集的浮點(diǎn)吞吐能力。我一般會(huì)留 20% 到 30% 的余量因?yàn)閷?shí)際應(yīng)用很難跑到理論峰值。3.2 Linpack 測(cè)試流程與參數(shù)設(shè)置Linpack 是國(guó)際上最流行的用于測(cè)試高性能計(jì)算機(jī)系統(tǒng)浮點(diǎn)性能的 Benchmark通過(guò)高斯消元法求解 N 元一次稠密線性代數(shù)方程組來(lái)評(píng)價(jià)浮點(diǎn)性能。跑 Linpack 一般用 HPLHigh-Performance Linpack實(shí)現(xiàn)步驟如下# 1. 安裝依賴MPI、BLAS、OpenMP sudo apt install libopenmpi-dev libopenblas-dev libomp-dev # 2. 下載 HPL 源碼并解壓 wget https://www.netlib.org/benchmark/hpl/hpl-2.3.tar.gz tar -xzf hpl-2.3.tar.gz cd hpl-2.3 # 3. 配置 Makefile指定 MPI 和 BLAS 路徑 cp setup/Make.Linux_PII_CBLAS_gm Make.Linux_OpenMPI # 編輯 Make.Linux_OpenMPI修改 TOPdir、MPdir、MPinc、MPlib、LAdir、LAlib# 4. 生成 HPL.dat 配置文件關(guān)鍵參數(shù)如下 # Ns問(wèn)題規(guī)模一般取內(nèi)存的 80% 左右 # NBs塊大小通常取 128 或 192 # Ps、Qs進(jìn)程網(wǎng)格Ps × Qs 總進(jìn)程數(shù) # 示例4 節(jié)點(diǎn)每節(jié)點(diǎn) 2 進(jìn)程共 8 進(jìn)程Ps4Qs2# 5. 編譯并運(yùn)行 make archLinux_OpenMPI mpirun -np 8 -hostfile hosts ./xhpl hpl_result.txt邏輯說(shuō)明HPL.dat 里的 Ns 決定矩陣規(guī)模越大越能壓出峰值性能但受限于內(nèi)存。NBs 影響計(jì)算和通信的重疊效率一般 128 到 256 之間試。Ps 和 Qs 的乘積必須等于 MPI 進(jìn)程數(shù)且盡量讓 Ps 和 Qs 接近減少通信開(kāi)銷。跑完后看輸出里的 Gflops 值那就是實(shí)測(cè)浮點(diǎn)性能。參數(shù)說(shuō)明NBs 取 128 時(shí)如果 Gflops 不理想可以試 192 或 256Ps/Qs 的分配要結(jié)合節(jié)點(diǎn)數(shù)和每節(jié)點(diǎn)進(jìn)程數(shù)比如 4 節(jié)點(diǎn)每節(jié)點(diǎn) 2 進(jìn)程Ps4、Qs2 比 Ps8、Qs1 好因?yàn)楹笳呖绻?jié)點(diǎn)通信更多。注意Linpack 測(cè)的是稠密線性方程組求解的峰值性能不代表你的實(shí)際應(yīng)用性能。CAE、CFD 等應(yīng)用的實(shí)測(cè)性能可能只有 Linpack 的 30% 到 60%。3.3 其他基準(zhǔn)測(cè)試工具IOmeter 與 STREAM文檔還提到 IOmeter 測(cè)試硬盤吞吐能力STREAM 測(cè)試內(nèi)存帶寬。這兩個(gè)工具在存儲(chǔ)和內(nèi)存選型時(shí)很有用。IOmeter 可以模擬不同塊大小、不同讀寫比例的 IO 負(fù)載幫你判斷并行文件系統(tǒng)的聚合帶寬是否達(dá)標(biāo)。STREAM 跑的是 Copy、Scale、Add、Triad 四個(gè)內(nèi)核測(cè)的是可持續(xù)內(nèi)存帶寬NUMA 架構(gòu)下要綁核跑否則數(shù)據(jù)會(huì)跨節(jié)點(diǎn)結(jié)果偏低。4. 架構(gòu)演進(jìn)SMP、NUMA、MPP 怎么選、怎么避坑4.1 三種架構(gòu)的特征與性能邊界文檔把 SMP、NUMA、MPP 講得很透。SMP 是對(duì)稱多處理器結(jié)構(gòu)所有 CPU 共享全部資源操作系統(tǒng)只有一個(gè)復(fù)本每個(gè) CPU 平等訪問(wèn)內(nèi)存。問(wèn)題是擴(kuò)展能力有限實(shí)驗(yàn)證明 SMP 服務(wù)器 CPU 利用率最好的情況是 2 到 4 個(gè) CPU再多內(nèi)存訪問(wèn)沖突迅速增加。NUMA 是非一致存儲(chǔ)訪問(wèn)結(jié)構(gòu)多個(gè) CPU 模塊各有本地內(nèi)存通過(guò)互聯(lián)模塊連接訪問(wèn)本地內(nèi)存快、遠(yuǎn)地內(nèi)存慢。HP 的 Superdome 64 路 CPU 相對(duì)性能值只有 20而 8 路 N4000 是 6.38 倍 CPU 換來(lái) 3 倍性能提升。MPP 是海量并行處理結(jié)構(gòu)多個(gè) SMP 服務(wù)器通過(guò)節(jié)點(diǎn)互聯(lián)網(wǎng)絡(luò)連接每個(gè)節(jié)點(diǎn)只訪問(wèn)本地資源完全無(wú)共享擴(kuò)展能力最好理論上無(wú)限制目前技術(shù)可實(shí)現(xiàn) 512 個(gè)節(jié)點(diǎn)互聯(lián)、數(shù)千個(gè) CPU。4.2 應(yīng)用場(chǎng)景匹配OLTP 選 NUMA數(shù)據(jù)挖掘選 MPP文檔給了很明確的選型建議NUMA 架構(gòu)更適用于 OLTP 事務(wù)處理環(huán)境因?yàn)槭聞?wù)處理的數(shù)據(jù)交互相對(duì)少遠(yuǎn)地內(nèi)存訪問(wèn)時(shí)延可以接受當(dāng)用于數(shù)據(jù)倉(cāng)庫(kù)環(huán)境時(shí)大量復(fù)雜數(shù)據(jù)處理必然導(dǎo)致大量數(shù)據(jù)交互CPU 利用率會(huì)降低。MPP 系統(tǒng)不共享資源當(dāng)需要處理的事務(wù)達(dá)到一定規(guī)模時(shí)效率比 SMP 好操作相互之間沒(méi)什么關(guān)系、處理單元之間通信比較少時(shí)MPP 優(yōu)勢(shì)明顯所以在決策支持和數(shù)據(jù)挖掘方面顯示了優(yōu)勢(shì)。但當(dāng)前使用的 OLTP 程序中用戶訪問(wèn)一個(gè)中心數(shù)據(jù)庫(kù)如果采用 SMP 結(jié)構(gòu)效率要比 MPP 快得多。4.3 避坑NUMA 綁核、MPP 負(fù)載均衡、SMP 擴(kuò)展上限現(xiàn)象一NUMA 服務(wù)器上跑應(yīng)用性能忽高忽低。原因進(jìn)程在 CPU 模塊之間漂移頻繁訪問(wèn)遠(yuǎn)地內(nèi)存。 解決用 numactl 綁核綁內(nèi)存。numactl --cpunodebind0 --membind0 ./app讓進(jìn)程和內(nèi)存都在同一個(gè) NUMA 節(jié)點(diǎn)內(nèi)。現(xiàn)象二MPP 集群增加節(jié)點(diǎn)后整體性能沒(méi)有線性提升。原因節(jié)點(diǎn)間負(fù)載不均衡或者某些節(jié)點(diǎn)成為通信熱點(diǎn)。 解決檢查作業(yè)調(diào)度系統(tǒng)的負(fù)載均衡策略用系統(tǒng)級(jí)軟件如數(shù)據(jù)庫(kù)屏蔽節(jié)點(diǎn)調(diào)度復(fù)雜性或者手動(dòng)調(diào)整數(shù)據(jù)分布?,F(xiàn)象三SMP 服務(wù)器 CPU 加到 8 路以上性能反而下降。原因內(nèi)存總線爭(zhēng)用嚴(yán)重CPU 資源浪費(fèi)在等待內(nèi)存訪問(wèn)上。 解決SMP 適合 2 到 4 路超過(guò)這個(gè)規(guī)??紤] NUMA 或 MPP。現(xiàn)象四GPU 加速節(jié)點(diǎn)買回來(lái)應(yīng)用跑得比 CPU 還慢。原因應(yīng)用沒(méi)有做 GPU 移植或者數(shù)據(jù)傳輸開(kāi)銷大于計(jì)算收益。 解決先確認(rèn)應(yīng)用是否有 CUDA/OpenACC 版本再評(píng)估數(shù)據(jù)在主機(jī)和設(shè)備之間的傳輸量。計(jì)算密集且數(shù)據(jù)量適中的任務(wù)才適合 GPU?,F(xiàn)象五IB 網(wǎng)絡(luò)裝好了MPI 性能沒(méi)提升。原因MPI 沒(méi)有走 IB 通道或者 IB 驅(qū)動(dòng)、固件版本不匹配。 解決用ibstat檢查 HCA 狀態(tài)用mpirun --mca btl_openib_allow_ib 1強(qiáng)制走 IB檢查 OFED 驅(qū)動(dòng)版本和固件版本是否匹配。5. 應(yīng)用場(chǎng)景落地CAE、生命科學(xué)、氣象環(huán)境的資源配比5.1 CAE 仿真隱式與顯式有限元的硬件差異文檔把 CAE 流程講得很清楚幾何建模、劃分網(wǎng)格、指定荷載和邊界條件、提交服務(wù)器分析、顯示結(jié)果、評(píng)估性能。隱式有限元IFEA針對(duì)結(jié)構(gòu)內(nèi)部分析主要場(chǎng)景是結(jié)構(gòu)設(shè)計(jì)顯式有限元EFEA針對(duì)碰撞、爆炸等結(jié)構(gòu)之間的分析。隱式分析吃內(nèi)存帶寬和內(nèi)存容量因?yàn)橐M裝和求解大型稀疏矩陣顯式分析吃 CPU 主頻和核數(shù)因?yàn)闀r(shí)間步長(zhǎng)小、迭代次數(shù)多。配硬件時(shí)隱式分析優(yōu)先上胖節(jié)點(diǎn)和大內(nèi)存顯式分析優(yōu)先上高主頻瘦節(jié)點(diǎn)集群。5.2 生命科學(xué)生物信息學(xué)、分子動(dòng)力學(xué)、新藥研發(fā)文檔把生命科學(xué)分三個(gè)領(lǐng)域生物信息學(xué)用 HPC 對(duì)基因數(shù)據(jù)做測(cè)序、拼接、比對(duì)分子動(dòng)力學(xué)模擬用 HPC 做大規(guī)模模擬分析蛋白質(zhì)在分子和原子水平的變化新藥研發(fā)用 HPC 做高通量藥物虛擬篩選研發(fā)周期平均縮短 1 年半左右。生物信息學(xué)是數(shù)據(jù)密集型需要大容量并行存儲(chǔ)和高內(nèi)存帶寬分子動(dòng)力學(xué)是計(jì)算密集型需要高主頻 CPU 和低時(shí)延網(wǎng)絡(luò)新藥研發(fā)的虛擬篩選是吞吐型適合高吞吐計(jì)算架構(gòu)子任務(wù)之間關(guān)聯(lián)少可以用普通萬(wàn)兆以太網(wǎng)。5.3 氣象環(huán)境數(shù)據(jù)收集、預(yù)處理、數(shù)值預(yù)報(bào)氣象預(yù)報(bào)是用數(shù)學(xué)方法構(gòu)建方程將氣象數(shù)據(jù)和邊界參數(shù)導(dǎo)入方程求解預(yù)測(cè)大氣變化和狀態(tài)。業(yè)務(wù)流程是氣象數(shù)據(jù)收集和預(yù)處理、數(shù)值天氣預(yù)報(bào)流程、綜合數(shù)值天氣預(yù)報(bào)、天氣學(xué)統(tǒng)計(jì)學(xué)輸出預(yù)報(bào)結(jié)果。氣象環(huán)境應(yīng)用是典型的 IO 密集型和網(wǎng)絡(luò)密集型混合需要高帶寬大容量并行存儲(chǔ)系統(tǒng)同時(shí)節(jié)點(diǎn)間通信頻繁IB 網(wǎng)絡(luò)是標(biāo)配。5.4 資源配比速查表應(yīng)用類型CPU內(nèi)存網(wǎng)絡(luò)存儲(chǔ)計(jì)算密集型CAE 顯式、分子動(dòng)力學(xué)高主頻、多核中等容量、高帶寬IB中等帶寬內(nèi)存約束型CAE 隱式、生物信息學(xué)中等主頻大容量、高帶寬IB中等帶寬網(wǎng)絡(luò)密集型氣象、CFD中等主頻中等容量IB 低時(shí)延高帶寬IO 密集型動(dòng)漫渲染、數(shù)據(jù)挖掘中等主頻中等容量萬(wàn)兆/IB高帶寬大容量并行存儲(chǔ)6. 從文檔到落地我踩過(guò)的三個(gè)坑和一條驗(yàn)證習(xí)慣這份文檔我前后翻了三遍第一遍當(dāng)科普看第二遍對(duì)著項(xiàng)目配硬件第三遍是幫別人排查問(wèn)題。踩過(guò)的坑里有三個(gè)印象最深。第一個(gè)坑是 DIMM 類型選錯(cuò)。文檔里寫了 UDIMM、RDIMM、LRDIMM 三種UDIMM 速度快、廉價(jià)但不穩(wěn)定RDIMM 穩(wěn)定、擴(kuò)展性好、對(duì)內(nèi)存控制器電氣壓力小LRDIMM 提供高內(nèi)存速度、降低總線負(fù)載、功耗更低但成本高很多。我早期一個(gè)項(xiàng)目為了省錢用了 UDIMM結(jié)果節(jié)點(diǎn)跑滿負(fù)載時(shí)頻繁出現(xiàn)內(nèi)存校驗(yàn)錯(cuò)誤換了 RDIMM 才穩(wěn)定。從那以后我每次配 HPC 節(jié)點(diǎn)都強(qiáng)制走一遍內(nèi)存兼容性檢查主板手冊(cè)里支持的內(nèi)存類型和最大容量必須逐條核對(duì)。第二個(gè)坑是 NVDIMM 的認(rèn)知偏差。文檔說(shuō) NVDIMM 由 BBU DIMM 演變而來(lái)BBU 用后備電池維持揮發(fā)性內(nèi)存內(nèi)容幾小時(shí)但電池含重金屬不符合綠色能源要求所以有了用超級(jí)電容作為動(dòng)力源的 NVDIMM使用非揮發(fā)性 Flash 存儲(chǔ)介質(zhì)保存數(shù)據(jù)數(shù)據(jù)保存時(shí)間更長(zhǎng)。我一開(kāi)始以為 NVDIMM 就是普通內(nèi)存加個(gè)電池后來(lái)才發(fā)現(xiàn)它在斷電瞬間把數(shù)據(jù)從 DRAM 搬到 Flash恢復(fù)時(shí)再搬回來(lái)對(duì)內(nèi)存控制器和 BIOS 都有要求。不是所有主板都支持 NVDIMM買之前一定要查兼容性列表。第三個(gè)坑是 Linpack 參數(shù)照抄。網(wǎng)上很多教程給了一套 HPL.dat 參數(shù)我直接拿來(lái)用結(jié)果 Gflops 只有理論峰值的 40%。后來(lái)自己按內(nèi)存容量算 Ns按進(jìn)程數(shù)調(diào) Ps/Qs按 CPU 代際改 NBs才跑到 70% 以上。Linpack 的玄學(xué)在于參數(shù)組合沒(méi)有一套通用配置必須根據(jù)你的硬件實(shí)測(cè)調(diào)優(yōu)。驗(yàn)證習(xí)慣方面我現(xiàn)在每配完一個(gè) HPC 集群都會(huì)強(qiáng)制走一遍三層驗(yàn)證第一層用 STREAM 測(cè)內(nèi)存帶寬確認(rèn) NUMA 綁核后帶寬達(dá)標(biāo)第二層用 IOmeter 測(cè)存儲(chǔ)聚合帶寬確認(rèn)并行文件系統(tǒng)沒(méi)有瓶頸第三層用 HPL 測(cè)浮點(diǎn)性能確認(rèn) MPI 和 IB 通道正常。三層都過(guò)了再上實(shí)際應(yīng)用。這個(gè)習(xí)慣幫我省了很多后悔藥因?yàn)楹芏鄦?wèn)題在基準(zhǔn)測(cè)試階段就能暴露不用等到生產(chǎn)環(huán)境翻車。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取