GROMACS是一個用于生物分子系統(tǒng)的模擬軟件包,是世界范圍內(nèi)使用率最高的科學(xué)軟件應(yīng)用程序之一,也是理解重要生物過程(包括當(dāng)前新冠病毒大流行的基礎(chǔ))的關(guān)鍵工具。
在以前的職位中,我們展示了最近與核心開發(fā)團(tuán)隊(duì)合作進(jìn)行的優(yōu)化,這些優(yōu)化使 GROMACS 在現(xiàn)代多 GPU 服務(wù)器上的運(yùn)行速度比以前快得多。這些優(yōu)化包括將計(jì)算和通信卸載到 GPU ,后者對于那些可以有效地將多個 GPU 并行用于單個模擬的相對較大的情況尤其有利。有關(guān)最新異構(gòu)軟件引擎的并行化和內(nèi)部工作的更多信息,請參閱GROMACS 中分子動力學(xué)模擬的非均勻并行化和加速。
另一個越來越常見的工作流涉及運(yùn)行許多獨(dú)立的 GROMACS 仿真,其中每個仿真都可以相對較小。 NVIDIA GPU 的規(guī)模和能力不斷增加,但通常情況下,相對較小的仿真系統(tǒng)的孤立單彈道仿真無法充分利用每個系統(tǒng)上的所有可用計(jì)算資源 GPU 。
但是,多部門工作流程可以涉及數(shù)十到數(shù)千個松散耦合的分子動力學(xué)模擬。在此類工作負(fù)載中,目標(biāo)通常不是最小化單個仿真的求解時(shí)間,而是最大化整個集成的吞吐量。
按照 GPU 并行運(yùn)行多個模擬可以顯著提高總體吞吐量,正如之前在GROMACS 中分子動力學(xué)模擬的非均勻并行化和加速中針對 GROMACS 所示(圖 11 )。已創(chuàng)建 NVIDIA 多進(jìn)程服務(wù)器( MPS )和多實(shí)例 GPU ( MIG )功能,以促進(jìn)此類工作流,通過使每個 GPU 能夠同時(shí)用于多個任務(wù),進(jìn)一步提高效率。
在這篇文章中,我們演示了為 GROMACS 按照 GPU 運(yùn)行多個模擬的好處。我們展示了如何利用 MPS ,包括與 MIG 結(jié)合使用,在每個 GPU 上并行運(yùn)行多個模擬,從而實(shí)現(xiàn)高達(dá) 1.8 倍的吞吐量總體改善。
背景資料
硬件
對于本文后面給出的結(jié)果,我們在DGX A100服務(wù)器上運(yùn)行,該服務(wù)器是 NVIDIA 內(nèi)部賽琳娜超級計(jì)算機(jī)的一部分,它具有八個 A100-SXM4-80GB GPU 和兩個 AMD EPYC 7742 (羅馬) 64 核 CPU 插槽。
GROMACS 測試用例
為了生成下一節(jié)給出的結(jié)果,我們使用 24K 原子核糖核酸酶立方和 96K 原子 ADH-dodec 測試用例,這兩個測試用例都使用 PME 進(jìn)行遠(yuǎn)程電子 CTR 靜態(tài)測試。有關(guān)更多信息和輸入文件,請參閱GROMACS 中分子動力學(xué)模擬的異構(gòu)并行化和加速補(bǔ)充信息。
我們使用 GROMACS 版本 2021 。 2 (與 CUDA 版本 11 。 2 、驅(qū)動程序版本 470 。 57 。 02 一起使用)。對于單個孤立實(shí)例(在單個A100-SXM4-80GB GPU 上),使用與后面所述相同的 GROMACS 選項(xiàng),我們實(shí)現(xiàn)了 RNAse 的1083 納秒/天和 ADH 的378 納秒/天。
-update gpu選項(xiàng)對此處的性能至關(guān)重要。這將觸發(fā)“ GPU – 駐留步驟”,其中每個 timestep 的更新和約束部分被卸載到 GPU 以及默認(rèn)的“ GPU 強(qiáng)制卸載”行為。如果沒有這一點(diǎn),在這個硬件上,每種情況下的性能大約降低 2 倍。這對 CPU 和 GPU 可用功能的平衡非常敏感,因此如果在不同的硬件上運(yùn)行,建議您嘗試使用此選項(xiàng)。
對于本文描述的實(shí)驗(yàn),我們使用獨(dú)立啟動的同一模擬系統(tǒng)的多個實(shí)例。這是真實(shí)集合模擬的代理,當(dāng)然,成員模擬和不規(guī)則通信之間可能存在細(xì)微差異,但仍有以類似方式重疊的范圍。
MPS
隨著 GPU 的規(guī)模和功能不斷增加,單個應(yīng)用程序的執(zhí)行可能無法充分利用 GPU 提供的所有資源。 NVIDIA 多進(jìn)程服務(wù)( MPS )是一種使多個 CPU 進(jìn)程提交的計(jì)算內(nèi)核能夠在同一 GPU 上同時(shí)執(zhí)行的工具。這種重疊可能實(shí)現(xiàn)更徹底的資源使用和更好的總體吞吐量。
使用 MPS 還可以通過更有效地重疊硬件資源利用率和更好地利用基于 CPU 的并行性,在多個 GPU 之間實(shí)現(xiàn)應(yīng)用程序的強(qiáng)大擴(kuò)展,如本文后面所述。
2017 年, NVIDIA Volta 架構(gòu)與 NVIDIA Volta MPS 一起發(fā)布,具有增強(qiáng)的功能,包括每個 GPU 最多增加 48 個 MPS 客戶端:這在所有后續(xù) V100 、 Quadro 和 GeForce GPU 上都受支持。
MIG
與 MPS 一樣, NVIDIA 多實(shí)例 GPU ( MIG )促進(jìn)了每個 GPU 的共享,但對資源進(jìn)行了嚴(yán)格的分區(qū)。它非常適合在多個不同的用戶之間共享 GPU ,因?yàn)槊總€ MIG 實(shí)例都有一組有保證的資源,并且是完全隔離的。
GPU 在選定的 NVIDIA 安培體系結(jié)構(gòu) MIG 上可用,包括 A100 ,每個 GPU 最多支持七個 MIG 實(shí)例。 MIG 可以與 MPS 組合,其中多個 MPS 客戶端可以在每個 MIG 實(shí)例上同時(shí)運(yùn)行,每個物理 GPU 最多支持 48 個 MPS 客戶端。
雖然可以跨多個 MIG 實(shí)例運(yùn)行單個應(yīng)用程序?qū)嵗?,例如使?MPI , MIG 的目標(biāo)并不是為該用例提供任何性能改進(jìn)。 MIG 的主要目的是在每個 GPU 上促進(jìn)多個不同的應(yīng)用程序?qū)嵗?。有關(guān)更多信息,請參閱通過多實(shí)例 GPU 充分利用 NVIDIA A100 GPU 。
績效結(jié)果

圖 1 。使用 RNAse Cubic (左)和 ADH Dodec (右)測試用例中每個 GPU 的模擬次數(shù)來擴(kuò)展 DGX A100 服務(wù)器上的總吞吐量。顯示了使用 MPS (開放三角形)、 MIG 結(jié)合 MPS (閉合三角形)和 none (開放圓)的結(jié)果。
圖 1 顯示了 RNAse (左)和 ADH (右)在 8- GPU DGX A100 服務(wù)器上同時(shí)運(yùn)行的所有模擬中,每個 GPU 的模擬次數(shù)對總綜合吞吐量(以 ns /天為單位,越高越好)的影響。每種情況下最左邊的結(jié)果(每個 GPU 進(jìn)行一次模擬)僅比相應(yīng)的單獨(dú)模擬結(jié)果(前面給出)乘以 8 ( DGX A100 服務(wù)器上 GPU 的數(shù)量)低幾個百分點(diǎn)。這表明您可以在服務(wù)器上有效地運(yùn)行多個模擬,而不會產(chǎn)生明顯的干擾。
您可以看到,通過增加每個 GPU 的模擬次數(shù),可以獲得實(shí)質(zhì)性的改進(jìn),對于相對較小的 RNAse 病例,模擬次數(shù)最多為 1 。 8X ,對于較大的 ADH 病例,模擬次數(shù)最多為 1 。 3X 。
對于每個測試用例,我們使用每個 GPU 最多七個 MIG 分區(qū),包括沒有 MIG 和有 MIG 的結(jié)果。在這種情況下,MPS用于每個 GPU 運(yùn)行多個進(jìn)程,每個物理 GPU 最多運(yùn)行48個MPS客戶端,其中 MIG 情況下的最大客戶端總數(shù)為42:7個 MIG 分區(qū)中的每個分區(qū)有6個MPS客戶端。作為參考,我們還包括了沒有MPS或 MIG 的默認(rèn)結(jié)果,對于這些結(jié)果,我們認(rèn)為按照 GPU 運(yùn)行多個模擬沒有任何好處。
對于每個測試用例,最左邊的 MIG+MPS 結(jié)果是每個 GPU 進(jìn)行 7 次模擬:每個 MIG 客戶端進(jìn)行一次模擬(即,沒有 MPS)。我們發(fā)現(xiàn)這些“純 MIG”性能結(jié)果與相應(yīng)的“純 MPS”結(jié)果相比沒有優(yōu)勢。對于 RNAse,純 MIG 類似于純 MPS,而對于 ADH 則低于純 MPS。然而,將 MIG 與 MPS 相結(jié)合會導(dǎo)致 RNAse 的最佳整體結(jié)果,比最佳純 MPS 結(jié)果高約 7%。它導(dǎo)致性能與 ADH 的純 MPS 相當(dāng),但略低于純 MPS。
對于 RNAse ,性能最好的配置是每個 MIG 四個 MPS 客戶端,即每個 GPU 總共 28 個模擬。對于 ADH ,最好的配置是使用純 MPS ,每 GPU 進(jìn)行 16 次模擬,而不使用 MIG 。
當(dāng) MIG 處于活動狀態(tài)時(shí),它強(qiáng)制將每個模擬隔離到 GPU 硬件的特定分區(qū),這可能是有利的,具體取決于測試用例關(guān)鍵路徑的特定數(shù)據(jù)訪問模式。另一方面,在沒有 MIG 的情況下,每個仿真都可以以更動態(tài)的方式訪問 GPU 上的資源,這也是有利的。
MIG 的好處可能取決于測試用例,正如我們前面討論的那樣。令人欣慰的是,MPS在有 MIG 和沒有 MIG 的情況下都是有效的,特別是在有些用例中 MIG 出于其他原因是可取的,例如在用戶之間共享 GPU 。
GROMACS 是異構(gòu)的,并且具有靈活性,在這方面,計(jì)算可以卸載到 GPU ,其中 CPU 可以同時(shí)使用。我們的運(yùn)行使用了力計(jì)算的默認(rèn)選項(xiàng),將非粘結(jié)力和 PME 力計(jì)算映射到 GPU ,同時(shí)使用 CPU 進(jìn)行粘結(jié)力計(jì)算。這種配置通常會導(dǎo)致資源的良好重疊使用。
我們嘗試將粘結(jié)力計(jì)算卸載到 GPU (使用 -bonding GPU 選項(xiàng)),性能類似,但在所有情況下都略低。如前所述,我們使用 GPU – 駐留步驟。我們嘗試將更新和約束映射到 CPU ,我們還觀察到了根據(jù) GPU 運(yùn)行多個模擬的好處。
對于較大的 ADH 情況,可實(shí)現(xiàn)的吞吐量大大低于將更新和約束卸載到 GPU 時(shí)的吞吐量。然而,對于較小的 RNAse 情況,盡管在每 GPU 運(yùn)行一次(或幾次)模擬時(shí)吞吐量較低,但在每 GPU 運(yùn)行八次或更多模擬時(shí),無論是否卸載此部分,我們都看到了類似的吞吐量。行為可能因測試用例和硬件而異,因此最好使用所有可用的運(yùn)行時(shí)組合進(jìn)行實(shí)驗(yàn)。
我們還在不同的硬件上重復(fù)了核糖核酸酶的MPS實(shí)驗(yàn):NVIDIA A40和V100-SXM2 GPU ,我們還發(fā)現(xiàn),每個 GPU 運(yùn)行多個模擬可以提高吞吐量,盡管程度低于A100。鑒于這些 GPU 的規(guī)格相對較低,這并不奇怪。A40為1.5倍,V100-SXM2為1.4倍,觀察到的吞吐量改善明顯低于A100的1.8倍,但仍然值得。
這些結(jié)果表明,通過在 MPS 中按 GPU 運(yùn)行多個進(jìn)程,并將 MIG 與 MPS 相結(jié)合,可以實(shí)現(xiàn)大的吞吐量改進(jìn)。最佳配置(包括 GROMACS 中的計(jì)算卸載選項(xiàng))取決于具體情況,我們再次建議進(jìn)行實(shí)驗(yàn)。以下各節(jié)描述了這些模擬是如何編排的。
運(yùn)行配置詳細(xì)信息
在本節(jié)中,我們將提供用于生成結(jié)果的腳本,并描述其中包含的命令,作為您自己工作流的參考或起點(diǎn)。
純議員選舉
以下腳本使用 MPS 向 8- GPU DGX A100 服務(wù)器啟動多個模擬。
35 3)NUMA=0;;
36 4)NUMA=7;;
37 5)NUMA=6;;
38 6)NUMA=5;;
39 7)NUMA=4;;
40 esac
41
42 # Loop over number of simulations per GPU
43 for (( j=0; j<$NSIMPERGPU; j++ ));
44 do
45 # Create a unique identifier for this simulation to use as a working directory
46 id=gpu${i}_sim${j}
47 rm -rf $id
48 mkdir -p $id
49 cd $id
50
51 ln -s $INPUT topol.tpr
52
53 # Launch GROMACS in the background on the desired resources
54 echo "Launching simulation $j on GPU $i with $NTHREAD CPU thread(s) on NUMA region $NUMA"
55 CUDA_VISIBLE_DEVICES=$i numactl --cpunodebind=$NUMA $GMX mdrun \
56 -update gpu -nsteps 10000000 -maxh 0.2 -resethway -nstlist 100 \
57 > mdrun.log 2>&1 &
58 cd ..
59 done
60 done
61 echo "Waiting for simulations to complete..."
62 wait
第 7 行和第 9 行分別指定 GROMACS 二進(jìn)制文件和測試用例輸入文件的位置。
第 11-12 行指定服務(wù)器的固定硬件詳細(xì)信息,該服務(wù)器有 8 個 GPU 和 128 個 CPU 內(nèi)核。
第 14 行指定了每個 GPU 的模擬次數(shù),可以改變模擬次數(shù)以評估性能,正如生成上述結(jié)果所做的那樣。
第 17-21 行計(jì)算每個模擬應(yīng)分配多少 CPU 個線程。
第 25 行啟動 MPS 守護(hù)進(jìn)程,使從單獨(dú)模擬啟動的內(nèi)核能夠在同一 GPU 上同時(shí)執(zhí)行。
第 28-40 行在服務(wù)器中的 GPU 上循環(huán),并為每個特定 GPU 分配一組適當(dāng)?shù)?CPU 內(nèi)核(“NUMA區(qū)域”)。此映射特定于DGX A100拓?fù)?,該拓?fù)渚哂袃蓚€AMD CPU s,每個AMD CPU 具有四個NUMA區(qū)域。我們安排特定的編號以獲得最佳親和力。有關(guān)更多信息,請參見DGX A100 用戶指南中的第1.3節(jié)。
第 43-49 行循環(huán)每個 GPU 的模擬次數(shù),并創(chuàng)建模擬特有的工作目錄。
第 51 行在此唯一工作目錄中創(chuàng)建指向輸入文件的鏈接。
第 55-57 行啟動每個模擬,使用CUDA_VISIBLE_DEVICES環(huán)境變量將其限制為所需的 GPU ,使用 numactl 實(shí)用程序?qū)⑵湎拗茷樗璧?CPU NUMA 區(qū)域??梢允褂谩?code 》 apt install numactl 《/ code 》提前安裝該實(shí)用程序。
-update GPU 選項(xiàng)與默認(rèn)的 GPU 強(qiáng)制卸載行為相結(jié)合,對性能至關(guān)重要(見上文),而-nsteps 10000000 -maxh 0.2 -resethway組合的結(jié)果是運(yùn)行每個模擬 12 分鐘( 0 。 2 小時(shí)),其中內(nèi)部計(jì)時(shí)器會在中途重置,以消除任何初始化開銷。-nstlist 100指定 GROMACS 應(yīng)每隔 100 步重新生成內(nèi)部鄰居列表,其中這是一個可調(diào)參數(shù),影響性能但不影響正確性。)
結(jié)合 MIG 和 MPS 運(yùn)行
以下腳本是前一個腳本的版本,擴(kuò)展為支持每個 GPU 的多個 MIG 實(shí)例,其中每個 MIG 實(shí)例可以使用 MPS 啟動多個仿真。
1 #!/bin/bash
2 # Demonstrator script to run multiple simulations per GPU with MIG+MPS on DGX-A100
3 #
4 # Alan Gray, NVIDIA
5
6 # Location of GROMACS binary
7 GMX=/lustre/fsw/devtech/hpc-devtech/alang/gromacs-binaries/v2021.2_tmpi_cuda11.2/bin/gmx
8 # Location of input file
9 INPUT=/lustre/fsw/devtech/hpc-devtech/alang/Gromacs_input/adhd.tpr
10
11 NGPU=8 # Number of GPUs in server
12 NCORE=128 # Number of CPU cores in server
13
14 NMIGPERGPU=7 # Number of MIGs per GPU
15 NSIMPERMIG=3 # Number of simulations to run per MIG (with MPS)
16
17 # Number of threads per simulation
18 NTHREAD=$(($NCORE/($NGPU*$NMIGPERGPU*$NSIMPERMIG)))
19 if [ $NTHREAD -eq 0 ]
20 then
21 NTHREAD=1
22 fi
23 export OMP_NUM_THREADS=$NTHREAD
24
25 # Loop over number of GPUs in server
26 for (( i=0; i<$NGPU; i++ ));
27 do
28 # Set a CPU NUMA specific to GPU in use with best affinity (specific to DGX-A100)
29 case $i in
30 0)NUMA=3;;
31 1)NUMA=2;;
32 2)NUMA=1;;
33 3)NUMA=0;;
34 4)NUMA=7;;
35 5)NUMA=6;;
36 6)NUMA=5;;
37 7)NUMA=4;;
38 esac
39
40 # Discover list of MIGs that exist on this GPU
41 MIGS=`nvidia-smi -L | grep -A $(($NMIGPERGPU+1)) "GPU $i" | grep MIG | awk '{ print $6 }' | sed 's/)//g'`
42 MIGARRAY=($MIGS)
43
44 # Loop over number of MIGs per GPU
45 for (( j=0; j<$NMIGPERGPU; j++ ));
46 do
47
48 MIGID=${MIGARRAY[j]}
49 # Start MPS daemon unique to MIG
50 export CUDA_MPS_PIPE_DIRECTORY=/tmp/$MIGID
51 mkdir -p $CUDA_MPS_PIPE_DIRECTORY
52 CUDA_VISIBLE_DEVICES=$MIGID nvidia-cuda-mps-control -d
53
54 # Loop over number of simulations per MIG
55 for (( k=0; k<$NSIMPERMIG; k++ ));
56 do
57
58 # Create a unique identifier for this simulation to use as a working directory
59 id=gpu${i}_mig${j}_sim${k}
60 rm -rf $id
61 mkdir -p $id
62 cd $id
63
64 ln -s $INPUT topol.tpr
65
66 # Launch GROMACS in the background on the desired resources
67 echo "Launching simulation $k on MIG $j, GPU $i with $NTHREAD CPU thread(s) on NUMA region $NUMA"
68 CUDA_VISIBLE_DEVICES=$MIGID numactl --cpunodebind=$NUMA $GMX mdrun \
69 -update gpu -nsteps 10000000 -maxh 0.2 -resethway -nstlist 100 \
70 > mdrun.log 2>&1 &
71 cd ..
72 done
73 done
74 done
75 echo "Waiting for simulations to complete..."
76 wait
與純 MPS 腳本的主要區(qū)別以粗體突出顯示:
第 14 行指定每個 GPU 的 MIG 實(shí)例數(shù),設(shè)置為最多 7 個。使用以下命令提前在八個 GPU 中的每一個上創(chuàng)建實(shí)例:
for gpu in 0 1 2 3 4 5 6 7
do
nvidia-smi mig -i $gpu --create-gpu-instance \
1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb \
--default-compute-instance
done
第 15 行指定每個 MIG 實(shí)例要運(yùn)行的模擬數(shù)量。
第 18 行調(diào)整 CPU 核心分配計(jì)算,以正確地考慮每個 GPU 的總模擬次數(shù)。
第 41-42 行位于循環(huán)(物理) GPU s 內(nèi),列出與 GPU 關(guān)聯(lián)的 MIG s 唯一的 ID ,并創(chuàng)建包含這七個 ID 的可索引數(shù)組。
第 45 行向循環(huán)嵌套添加一個新的中間級別,對應(yīng)于每個 GPU 的多個 MIG s 。
第 48-52 行根據(jù) MIG 啟動一個單獨(dú)的 MPS 守護(hù)程序,這是結(jié)合 MIG 和 MPS 的要求。
第 55 行在每個 MIG 的模擬次數(shù)上循環(huán)。它繼續(xù)像以前一樣啟動每個模擬,但現(xiàn)在每個模擬都被限制為使用唯一 MIG ID 的特定 MIG 實(shí)例。
多流程的其他優(yōu)勢
到目前為止,我們已經(jīng)向您展示了如何按照 GPU 運(yùn)行多個進(jìn)程可以為 GROMACS 帶來巨大的好處,并且我們提供了具體的示例來演示。類似的技術(shù)可以在更廣泛的用例和場景中提供好處,包括 GROMACS 和其他應(yīng)用程序。在本節(jié)中,我們將簡要討論其中的一些。
GROMACS 多模擬框架
在這篇文章中,我們使用 shell 腳本中的循環(huán)并行啟動了多個模擬。內(nèi)置的 GROMACS 多仿真框架提供了一種替代機(jī)制,其中通過-multidir選擇mdrun啟動 GROMACS 時(shí),將多個 MPI 任務(wù)映射到多個仿真。以類似的方式,最大化吞吐量的好處也可以應(yīng)用于該機(jī)制。
為了評估這一點(diǎn),我們沒有直接使用 MPI 啟動 GROMACS ,而是通過一個包裝器腳本啟動 GROMACS ,該腳本可以為每個 MPI 級別設(shè)置適當(dāng)?shù)沫h(huán)境變量和numactl選項(xiàng)??梢允褂铆h(huán)境變量發(fā)現(xiàn)秩,例如 OpenMPI 的OMPI_COMM_WORLD_LOCAL_RANK。另一種方法是以類似的方式使用 MPI 啟動器的綁定功能。
我們的實(shí)驗(yàn)表明, MPS 的行為與前面描述的一樣。然而,相比之下,我們并沒有看到 MPS 和 MIG 結(jié)合的任何額外好處,這需要進(jìn)一步的研究。
多模擬框架還支持在集合內(nèi)的模擬之間進(jìn)行不頻繁的副本交換,使用-replex選擇mdrun或AWH 多步行機(jī)方法在一個模擬中應(yīng)用多個獨(dú)立的偏置電位。對于這些工作流,性能行為取決于用例的特定細(xì)節(jié),因此我們建議進(jìn)行實(shí)驗(yàn)。有關(guān)-replex選項(xiàng)的更多信息,請參閱副本交換模擬簡介教程。
用于多重 GPU 強(qiáng)擴(kuò)展的 MPS
這篇文章探討了 MPS (和 MIG )的好處,以提高并行運(yùn)行的許多獨(dú)立模擬的吞吐量。另一個共同目標(biāo)是通過并行使用多個 GPU 來最小化單個模擬的求解時(shí)間。
通常,單獨(dú)的 CPU 任務(wù)(如 MPI 任務(wù))用于控制每個 GPU ,并執(zhí)行未卸載到 GPU 的任何計(jì)算工作負(fù)載。在某些情況下,每個 GPU 運(yùn)行多個 CPU 任務(wù)是有益的,因?yàn)檫@可以為重疊的 CPU 計(jì)算 GPU 計(jì)算和通信提供額外的機(jī)會。按照 GPU 運(yùn)行多個進(jìn)程也有助于重新平衡并行運(yùn)行中固有的負(fù)載不平衡。有關(guān)更多信息,請參閱本節(jié)后面討論的 GROMACS 示例。
此方法還可以增加 CPU 上基于任務(wù)的并行程度,并增強(qiáng)應(yīng)用程序中任何 CPU 駐留的并行工作負(fù)載的性能。當(dāng) MPS 處于活動狀態(tài)時(shí),與多個任務(wù)關(guān)聯(lián)的多個內(nèi)核可以在每個 GPU 上并行執(zhí)行。最好是進(jìn)行實(shí)驗(yàn),以發(fā)現(xiàn)它是否能對特定情況有益,并找到最佳配置。
格羅馬克的例子
下面是一個具體的例子。在以前的職位中,我們將重點(diǎn)放在每個 GROMACS 模擬并行運(yùn)行四個 GPU 的情況下,以最小化求解時(shí)間。我們展示了這四個 GPU 如何有效地平衡三個 PP 任務(wù)和一個 PME 任務(wù)。
但是,如果您試圖將該配置調(diào)整為兩個 GPU ,最自然的方法是分配一個 PP GPU 和一個 PME GPU 。這不會產(chǎn)生良好的性能,因?yàn)?PP GPU 的工作量要大得多。
最好將四 GPU 配置映射到兩 GPU 配置,并激活 MPS 以啟用內(nèi)核重疊。 GPU 中的一個重疊兩個 PP 任務(wù),而另一個重疊兩個 PP 和一個 PME 。這將導(dǎo)致更好的負(fù)載平衡和更快的解決時(shí)間。在GROMACS 中分子動力學(xué)模擬的非均勻并行化和加速論文中,該技術(shù)用于生成圖 12 的兩個 GPU 強(qiáng)縮放結(jié)果。同樣,我們建議對任何特定情況進(jìn)行實(shí)驗(yàn)。
與計(jì)算重疊的 I / O
這篇文章展示了按照 GPU 運(yùn)行多個進(jìn)程如何通過重疊提供好處。好處不僅限于計(jì)算和通信。此解決方案也適用于花費(fèi)大量 I / O 時(shí)間的情況。在這些情況下,一個實(shí)例的 I / O 組件可以與另一個實(shí)例的計(jì)算組件重疊,以提高總體吞吐量。 MPS 使內(nèi)核能夠與其他計(jì)算內(nèi)核、通信或文件 I / O 并行執(zhí)行。
關(guān)于作者
Alan Gray 是 NVIDIA 的首席開發(fā)技術(shù)工程師,專門研究應(yīng)用程序優(yōu)化,特別是大規(guī)模 GPU 加速體系結(jié)構(gòu)。
Szilárd Páll 是斯德哥爾摩 KTH 皇家理工學(xué)院 PCD 高性能計(jì)算中心的 HPC 研究員。他擁有計(jì)算機(jī)科學(xué)和計(jì)算生物物理學(xué)的背景,自 2008 年以來一直在為 GPU 加速器編程。
審核編輯:郭婷
-
cpu
+關(guān)注
關(guān)注
68文章
11281瀏覽量
225100 -
gpu
+關(guān)注
關(guān)注
28文章
5196瀏覽量
135510 -
服務(wù)器
+關(guān)注
關(guān)注
14文章
10259瀏覽量
91523
發(fā)布評論請先 登錄
羅德與施瓦茨攜手瑞昱展示藍(lán)牙低功耗高數(shù)據(jù)吞吐量測試解決方案
用“分區(qū)”來面對超大數(shù)據(jù)集和超大吞吐量
EtherCAT轉(zhuǎn)CANopen網(wǎng)關(guān)模塊:實(shí)現(xiàn)倍福與匯川的高效通信橋梁
WIFI耦合測試方案詳解
如何利用Verilog HDL在FPGA上實(shí)現(xiàn)SRAM的讀寫測試
EV Group實(shí)現(xiàn)在芯粒集成混合鍵合套刻精度控制技術(shù)重大突破
如何加速實(shí)時(shí)工作負(fù)載
使用羅德與施瓦茨CMX500的吞吐量應(yīng)用層測試方案
TensorRT-LLM中的分離式服務(wù)
電子束檢測:攻克5nm以下先進(jìn)節(jié)點(diǎn)關(guān)鍵缺陷的利器
Arm神經(jīng)技術(shù)是業(yè)界首創(chuàng)在 Arm GPU 上增添專用神經(jīng)加速器的技術(shù),移動設(shè)備上實(shí)現(xiàn)PC級別的AI圖形性能
如何在NVIDIA Blackwell GPU上優(yōu)化DeepSeek R1吞吐量
如何利用MPS在GPU上實(shí)現(xiàn)高達(dá)1.8倍的吞吐量
評論