一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用MPS在GPU上實(shí)現(xiàn)高達(dá)1.8倍的吞吐量

星星科技指導(dǎo)員 ? 來(lái)源:NVIDIA ? 作者:NVIDIA ? 2022-04-18 15:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

GROMACS是一個(gè)用于生物分子系統(tǒng)的模擬軟件包,是世界范圍內(nèi)使用率最高的科學(xué)軟件應(yīng)用程序之一,也是理解重要生物過(guò)程(包括當(dāng)前新冠病毒大流行的基礎(chǔ))的關(guān)鍵工具。

在以前的職位中,我們展示了最近與核心開(kāi)發(fā)團(tuán)隊(duì)合作進(jìn)行的優(yōu)化,這些優(yōu)化使 GROMACS 在現(xiàn)代多 GPU 服務(wù)器上的運(yùn)行速度比以前快得多。這些優(yōu)化包括將計(jì)算和通信卸載到 GPU ,后者對(duì)于那些可以有效地將多個(gè) GPU 并行用于單個(gè)模擬的相對(duì)較大的情況尤其有利。有關(guān)最新異構(gòu)軟件引擎的并行化和內(nèi)部工作的更多信息,請(qǐng)參閱GROMACS 中分子動(dòng)力學(xué)模擬的非均勻并行化和加速。

另一個(gè)越來(lái)越常見(jiàn)的工作流涉及運(yùn)行許多獨(dú)立的 GROMACS 仿真,其中每個(gè)仿真都可以相對(duì)較小。 NVIDIA GPU 的規(guī)模和能力不斷增加,但通常情況下,相對(duì)較小的仿真系統(tǒng)的孤立單彈道仿真無(wú)法充分利用每個(gè)系統(tǒng)上的所有可用計(jì)算資源 GPU 。

但是,多部門(mén)工作流程可以涉及數(shù)十到數(shù)千個(gè)松散耦合的分子動(dòng)力學(xué)模擬。在此類工作負(fù)載中,目標(biāo)通常不是最小化單個(gè)仿真的求解時(shí)間,而是最大化整個(gè)集成的吞吐量。

按照 GPU 并行運(yùn)行多個(gè)模擬可以顯著提高總體吞吐量,正如之前在GROMACS 中分子動(dòng)力學(xué)模擬的非均勻并行化和加速中針對(duì) GROMACS 所示(圖 11 )。已創(chuàng)建 NVIDIA 多進(jìn)程服務(wù)器( MPS )和多實(shí)例 GPU ( MIG )功能,以促進(jìn)此類工作流,通過(guò)使每個(gè) GPU 能夠同時(shí)用于多個(gè)任務(wù),進(jìn)一步提高效率。

在這篇文章中,我們演示了為 GROMACS 按照 GPU 運(yùn)行多個(gè)模擬的好處。我們展示了如何利用 MPS ,包括與 MIG 結(jié)合使用,在每個(gè) GPU 上并行運(yùn)行多個(gè)模擬,從而實(shí)現(xiàn)高達(dá) 1.8 倍的吞吐量總體改善。

背景資料

硬件

對(duì)于本文后面給出的結(jié)果,我們?cè)贒GX A100服務(wù)器上運(yùn)行,該服務(wù)器是 NVIDIA 內(nèi)部賽琳娜超級(jí)計(jì)算機(jī)的一部分,它具有八個(gè) A100-SXM4-80GB GPU 和兩個(gè) AMD EPYC 7742 (羅馬) 64 核 CPU 插槽。

GROMACS 測(cè)試用例

為了生成下一節(jié)給出的結(jié)果,我們使用 24K 原子核糖核酸酶立方和 96K 原子 ADH-dodec 測(cè)試用例,這兩個(gè)測(cè)試用例都使用 PME 進(jìn)行遠(yuǎn)程電子 CTR 靜態(tài)測(cè)試。有關(guān)更多信息和輸入文件,請(qǐng)參閱GROMACS 中分子動(dòng)力學(xué)模擬的異構(gòu)并行化和加速補(bǔ)充信息。

我們使用 GROMACS 版本 2021 。 2 (與 CUDA 版本 11 。 2 、驅(qū)動(dòng)程序版本 470 。 57 。 02 一起使用)。對(duì)于單個(gè)孤立實(shí)例(在單個(gè)A100-SXM4-80GB GPU 上),使用與后面所述相同的 GROMACS 選項(xiàng),我們實(shí)現(xiàn)了 RNAse 的1083 納秒/天和 ADH 的378 納秒/天。

-update gpu選項(xiàng)對(duì)此處的性能至關(guān)重要。這將觸發(fā)“ GPU – 駐留步驟”,其中每個(gè) timestep 的更新和約束部分被卸載到 GPU 以及默認(rèn)的“ GPU 強(qiáng)制卸載”行為。如果沒(méi)有這一點(diǎn),在這個(gè)硬件上,每種情況下的性能大約降低 2 倍。這對(duì) CPU 和 GPU 可用功能的平衡非常敏感,因此如果在不同的硬件上運(yùn)行,建議您嘗試使用此選項(xiàng)。

對(duì)于本文描述的實(shí)驗(yàn),我們使用獨(dú)立啟動(dòng)的同一模擬系統(tǒng)的多個(gè)實(shí)例。這是真實(shí)集合模擬的代理,當(dāng)然,成員模擬和不規(guī)則通信之間可能存在細(xì)微差異,但仍有以類似方式重疊的范圍。

MPS

隨著 GPU 的規(guī)模和功能不斷增加,單個(gè)應(yīng)用程序的執(zhí)行可能無(wú)法充分利用 GPU 提供的所有資源。 NVIDIA 多進(jìn)程服務(wù)( MPS )是一種使多個(gè) CPU 進(jìn)程提交的計(jì)算內(nèi)核能夠在同一 GPU 上同時(shí)執(zhí)行的工具。這種重疊可能實(shí)現(xiàn)更徹底的資源使用和更好的總體吞吐量。

使用 MPS 還可以通過(guò)更有效地重疊硬件資源利用率和更好地利用基于 CPU 的并行性,在多個(gè) GPU 之間實(shí)現(xiàn)應(yīng)用程序的強(qiáng)大擴(kuò)展,如本文后面所述。

2017 年, NVIDIA Volta 架構(gòu)與 NVIDIA Volta MPS 一起發(fā)布,具有增強(qiáng)的功能,包括每個(gè) GPU 最多增加 48 個(gè) MPS 客戶端:這在所有后續(xù) V100 、 Quadro 和 GeForce GPU 上都受支持。

MIG

與 MPS 一樣, NVIDIA 多實(shí)例 GPU ( MIG )促進(jìn)了每個(gè) GPU 的共享,但對(duì)資源進(jìn)行了嚴(yán)格的分區(qū)。它非常適合在多個(gè)不同的用戶之間共享 GPU ,因?yàn)槊總€(gè) MIG 實(shí)例都有一組有保證的資源,并且是完全隔離的。

GPU 在選定的 NVIDIA 安培體系結(jié)構(gòu) MIG 上可用,包括 A100 ,每個(gè) GPU 最多支持七個(gè) MIG 實(shí)例。 MIG 可以與 MPS 組合,其中多個(gè) MPS 客戶端可以在每個(gè) MIG 實(shí)例上同時(shí)運(yùn)行,每個(gè)物理 GPU 最多支持 48 個(gè) MPS 客戶端。

雖然可以跨多個(gè) MIG 實(shí)例運(yùn)行單個(gè)應(yīng)用程序?qū)嵗?,例如使?MPI , MIG 的目標(biāo)并不是為該用例提供任何性能改進(jìn)。 MIG 的主要目的是在每個(gè) GPU 上促進(jìn)多個(gè)不同的應(yīng)用程序?qū)嵗S嘘P(guān)更多信息,請(qǐng)參閱通過(guò)多實(shí)例 GPU 充分利用 NVIDIA A100 GPU 。

績(jī)效結(jié)果

圖 1 。使用 RNAse Cubic (左)和 ADH Dodec (右)測(cè)試用例中每個(gè) GPU 的模擬次數(shù)來(lái)擴(kuò)展 DGX A100 服務(wù)器上的總吞吐量。顯示了使用 MPS (開(kāi)放三角形)、 MIG 結(jié)合 MPS (閉合三角形)和 none (開(kāi)放圓)的結(jié)果。

圖 1 顯示了 RNAse (左)和 ADH (右)在 8- GPU DGX A100 服務(wù)器上同時(shí)運(yùn)行的所有模擬中,每個(gè) GPU 的模擬次數(shù)對(duì)總綜合吞吐量(以 ns /天為單位,越高越好)的影響。每種情況下最左邊的結(jié)果(每個(gè) GPU 進(jìn)行一次模擬)僅比相應(yīng)的單獨(dú)模擬結(jié)果(前面給出)乘以 8 ( DGX A100 服務(wù)器上 GPU 的數(shù)量)低幾個(gè)百分點(diǎn)。這表明您可以在服務(wù)器上有效地運(yùn)行多個(gè)模擬,而不會(huì)產(chǎn)生明顯的干擾。

您可以看到,通過(guò)增加每個(gè) GPU 的模擬次數(shù),可以獲得實(shí)質(zhì)性的改進(jìn),對(duì)于相對(duì)較小的 RNAse 病例,模擬次數(shù)最多為 1 。 8X ,對(duì)于較大的 ADH 病例,模擬次數(shù)最多為 1 。 3X 。

對(duì)于每個(gè)測(cè)試用例,我們使用每個(gè) GPU 最多七個(gè) MIG 分區(qū),包括沒(méi)有 MIG 和有 MIG 的結(jié)果。在這種情況下,MPS用于每個(gè) GPU 運(yùn)行多個(gè)進(jìn)程,每個(gè)物理 GPU 最多運(yùn)行48個(gè)MPS客戶端,其中 MIG 情況下的最大客戶端總數(shù)為42:7個(gè) MIG 分區(qū)中的每個(gè)分區(qū)有6個(gè)MPS客戶端。作為參考,我們還包括了沒(méi)有MPS或 MIG 的默認(rèn)結(jié)果,對(duì)于這些結(jié)果,我們認(rèn)為按照 GPU 運(yùn)行多個(gè)模擬沒(méi)有任何好處。

對(duì)于每個(gè)測(cè)試用例,最左邊的 MIG+MPS 結(jié)果是每個(gè) GPU 進(jìn)行 7 次模擬:每個(gè) MIG 客戶端進(jìn)行一次模擬(即,沒(méi)有 MPS)。我們發(fā)現(xiàn)這些“純 MIG”性能結(jié)果與相應(yīng)的“純 MPS”結(jié)果相比沒(méi)有優(yōu)勢(shì)。對(duì)于 RNAse,純 MIG 類似于純 MPS,而對(duì)于 ADH 則低于純 MPS。然而,將 MIG 與 MPS 相結(jié)合會(huì)導(dǎo)致 RNAse 的最佳整體結(jié)果,比最佳純 MPS 結(jié)果高約 7%。它導(dǎo)致性能與 ADH 的純 MPS 相當(dāng),但略低于純 MPS。

對(duì)于 RNAse ,性能最好的配置是每個(gè) MIG 四個(gè) MPS 客戶端,即每個(gè) GPU 總共 28 個(gè)模擬。對(duì)于 ADH ,最好的配置是使用純 MPS ,每 GPU 進(jìn)行 16 次模擬,而不使用 MIG 。

當(dāng) MIG 處于活動(dòng)狀態(tài)時(shí),它強(qiáng)制將每個(gè)模擬隔離到 GPU 硬件的特定分區(qū),這可能是有利的,具體取決于測(cè)試用例關(guān)鍵路徑的特定數(shù)據(jù)訪問(wèn)模式。另一方面,在沒(méi)有 MIG 的情況下,每個(gè)仿真都可以以更動(dòng)態(tài)的方式訪問(wèn) GPU 上的資源,這也是有利的。

MIG 的好處可能取決于測(cè)試用例,正如我們前面討論的那樣。令人欣慰的是,MPS在有 MIG 和沒(méi)有 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ì)算。這種配置通常會(huì)導(dǎo)致資源的良好重疊使用。

我們嘗試將粘結(jié)力計(jì)算卸載到 GPU (使用 -bonding GPU 選項(xiàng)),性能類似,但在所有情況下都略低。如前所述,我們使用 GPU – 駐留步驟。我們嘗試將更新和約束映射到 CPU ,我們還觀察到了根據(jù) GPU 運(yùn)行多個(gè)模擬的好處。

對(duì)于較大的 ADH 情況,可實(shí)現(xiàn)的吞吐量大大低于將更新和約束卸載到 GPU 時(shí)的吞吐量。然而,對(duì)于較小的 RNAse 情況,盡管在每 GPU 運(yùn)行一次(或幾次)模擬時(shí)吞吐量較低,但在每 GPU 運(yùn)行八次或更多模擬時(shí),無(wú)論是否卸載此部分,我們都看到了類似的吞吐量。行為可能因測(cè)試用例和硬件而異,因此最好使用所有可用的運(yùn)行時(shí)組合進(jìn)行實(shí)驗(yàn)。

我們還在不同的硬件上重復(fù)了核糖核酸酶的MPS實(shí)驗(yàn):NVIDIA A40和V100-SXM2 GPU ,我們還發(fā)現(xiàn),每個(gè) GPU 運(yùn)行多個(gè)模擬可以提高吞吐量,盡管程度低于A100。鑒于這些 GPU 的規(guī)格相對(duì)較低,這并不奇怪。A40為1.5倍,V100-SXM2為1.4倍,觀察到的吞吐量改善明顯低于A100的1.8倍,但仍然值得。

這些結(jié)果表明,通過(guò)在 MPS 中按 GPU 運(yùn)行多個(gè)進(jìn)程,并將 MIG 與 MPS 相結(jié)合,可以實(shí)現(xiàn)大的吞吐量改進(jìn)。最佳配置(包括 GROMACS 中的計(jì)算卸載選項(xiàng))取決于具體情況,我們?cè)俅谓ㄗh進(jìn)行實(shí)驗(yàn)。以下各節(jié)描述了這些模擬是如何編排的。

運(yùn)行配置詳細(xì)信息

在本節(jié)中,我們將提供用于生成結(jié)果的腳本,并描述其中包含的命令,作為您自己工作流的參考或起點(diǎn)。

純議員選舉

以下腳本使用 MPS 向 8- GPU DGX A100 服務(wù)器啟動(dòng)多個(gè)模擬。

    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)制文件和測(cè)試用例輸入文件的位置。

第 11-12 行指定服務(wù)器的固定硬件詳細(xì)信息,該服務(wù)器有 8 個(gè) GPU 和 128 個(gè) CPU 內(nèi)核。

第 14 行指定了每個(gè) GPU 的模擬次數(shù),可以改變模擬次數(shù)以評(píng)估性能,正如生成上述結(jié)果所做的那樣。

第 17-21 行計(jì)算每個(gè)模擬應(yīng)分配多少 CPU 個(gè)線程。

第 25 行啟動(dòng) MPS 守護(hù)進(jìn)程,使從單獨(dú)模擬啟動(dòng)的內(nèi)核能夠在同一 GPU 上同時(shí)執(zhí)行。

第 28-40 行在服務(wù)器中的 GPU 上循環(huán),并為每個(gè)特定 GPU 分配一組適當(dāng)?shù)?CPU 內(nèi)核(“NUMA區(qū)域”)。此映射特定于DGX A100拓?fù)洌撏負(fù)渚哂袃蓚€(gè)AMD CPU s,每個(gè)AMD CPU 具有四個(gè)NUMA區(qū)域。我們安排特定的編號(hào)以獲得最佳親和力。有關(guān)更多信息,請(qǐng)參見(jiàn)DGX A100 用戶指南中的第1.3節(jié)。

第 43-49 行循環(huán)每個(gè) GPU 的模擬次數(shù),并創(chuàng)建模擬特有的工作目錄。

第 51 行在此唯一工作目錄中創(chuàng)建指向輸入文件的鏈接。

第 55-57 行啟動(dòng)每個(gè)模擬,使用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é)合,對(duì)性能至關(guān)重要(見(jiàn)上文),而-nsteps 10000000 -maxh 0.2 -resethway組合的結(jié)果是運(yùn)行每個(gè)模擬 12 分鐘( 0 。 2 小時(shí)),其中內(nèi)部計(jì)時(shí)器會(huì)在中途重置,以消除任何初始化開(kāi)銷(xiāo)。-nstlist 100指定 GROMACS 應(yīng)每隔 100 步重新生成內(nèi)部鄰居列表,其中這是一個(gè)可調(diào)參數(shù),影響性能但不影響正確性。)

結(jié)合 MIG 和 MPS 運(yùn)行

以下腳本是前一個(gè)腳本的版本,擴(kuò)展為支持每個(gè) GPU 的多個(gè) MIG 實(shí)例,其中每個(gè) MIG 實(shí)例可以使用 MPS 啟動(dòng)多個(gè)仿真。

     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 行指定每個(gè) GPU 的 MIG 實(shí)例數(shù),設(shè)置為最多 7 個(gè)。使用以下命令提前在八個(gè) GPU 中的每一個(gè)上創(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 行指定每個(gè) MIG 實(shí)例要運(yùn)行的模擬數(shù)量。

第 18 行調(diào)整 CPU 核心分配計(jì)算,以正確地考慮每個(gè) GPU 的總模擬次數(shù)。

第 41-42 行位于循環(huán)(物理) GPU s 內(nèi),列出與 GPU 關(guān)聯(lián)的 MIG s 唯一的 ID ,并創(chuàng)建包含這七個(gè) ID 的可索引數(shù)組。

第 45 行向循環(huán)嵌套添加一個(gè)新的中間級(jí)別,對(duì)應(yīng)于每個(gè) GPU 的多個(gè) MIG s 。

第 48-52 行根據(jù) MIG 啟動(dòng)一個(gè)單獨(dú)的 MPS 守護(hù)程序,這是結(jié)合 MIG 和 MPS 的要求。

第 55 行在每個(gè) MIG 的模擬次數(shù)上循環(huán)。它繼續(xù)像以前一樣啟動(dòng)每個(gè)模擬,但現(xiàn)在每個(gè)模擬都被限制為使用唯一 MIG ID 的特定 MIG 實(shí)例。

多流程的其他優(yōu)勢(shì)

到目前為止,我們已經(jīng)向您展示了如何按照 GPU 運(yùn)行多個(gè)進(jìn)程可以為 GROMACS 帶來(lái)巨大的好處,并且我們提供了具體的示例來(lái)演示。類似的技術(shù)可以在更廣泛的用例和場(chǎng)景中提供好處,包括 GROMACS 和其他應(yīng)用程序。在本節(jié)中,我們將簡(jiǎn)要討論其中的一些。

GROMACS 多模擬框架

在這篇文章中,我們使用 shell 腳本中的循環(huán)并行啟動(dòng)了多個(gè)模擬。內(nèi)置的 GROMACS 多仿真框架提供了一種替代機(jī)制,其中通過(guò)-multidir選擇mdrun啟動(dòng) GROMACS 時(shí),將多個(gè) MPI 任務(wù)映射到多個(gè)仿真。以類似的方式,最大化吞吐量的好處也可以應(yīng)用于該機(jī)制。

為了評(píng)估這一點(diǎn),我們沒(méi)有直接使用 MPI 啟動(dòng) GROMACS ,而是通過(guò)一個(gè)包裝器腳本啟動(dòng) GROMACS ,該腳本可以為每個(gè) MPI 級(jí)別設(shè)置適當(dāng)?shù)沫h(huán)境變量和numactl選項(xiàng)??梢允褂铆h(huán)境變量發(fā)現(xiàn)秩,例如 OpenMPI 的OMPI_COMM_WORLD_LOCAL_RANK。另一種方法是以類似的方式使用 MPI 啟動(dòng)器的綁定功能。

我們的實(shí)驗(yàn)表明, MPS 的行為與前面描述的一樣。然而,相比之下,我們并沒(méi)有看到 MPS 和 MIG 結(jié)合的任何額外好處,這需要進(jìn)一步的研究。

多模擬框架還支持在集合內(nèi)的模擬之間進(jìn)行不頻繁的副本交換,使用-replex選擇mdrun或AWH 多步行機(jī)方法在一個(gè)模擬中應(yīng)用多個(gè)獨(dú)立的偏置電位。對(duì)于這些工作流,性能行為取決于用例的特定細(xì)節(jié),因此我們建議進(jìn)行實(shí)驗(yàn)。有關(guān)-replex選項(xiàng)的更多信息,請(qǐng)參閱副本交換模擬簡(jiǎn)介教程。

用于多重 GPU 強(qiáng)擴(kuò)展的 MPS

這篇文章探討了 MPS (和 MIG )的好處,以提高并行運(yùn)行的許多獨(dú)立模擬的吞吐量。另一個(gè)共同目標(biāo)是通過(guò)并行使用多個(gè) GPU 來(lái)最小化單個(gè)模擬的求解時(shí)間。

通常,單獨(dú)的 CPU 任務(wù)(如 MPI 任務(wù))用于控制每個(gè) GPU ,并執(zhí)行未卸載到 GPU 的任何計(jì)算工作負(fù)載。在某些情況下,每個(gè) GPU 運(yùn)行多個(gè) CPU 任務(wù)是有益的,因?yàn)檫@可以為重疊的 CPU 計(jì)算 GPU 計(jì)算和通信提供額外的機(jī)會(huì)。按照 GPU 運(yùn)行多個(gè)進(jìn)程也有助于重新平衡并行運(yùn)行中固有的負(fù)載不平衡。有關(guān)更多信息,請(qǐng)參閱本節(jié)后面討論的 GROMACS 示例。

此方法還可以增加 CPU 上基于任務(wù)的并行程度,并增強(qiáng)應(yīng)用程序中任何 CPU 駐留的并行工作負(fù)載的性能。當(dāng) MPS 處于活動(dòng)狀態(tài)時(shí),與多個(gè)任務(wù)關(guān)聯(lián)的多個(gè)內(nèi)核可以在每個(gè) GPU 上并行執(zhí)行。最好是進(jìn)行實(shí)驗(yàn),以發(fā)現(xiàn)它是否能對(duì)特定情況有益,并找到最佳配置。

格羅馬克的例子

下面是一個(gè)具體的例子。在以前的職位中,我們將重點(diǎn)放在每個(gè) GROMACS 模擬并行運(yùn)行四個(gè) GPU 的情況下,以最小化求解時(shí)間。我們展示了這四個(gè) GPU 如何有效地平衡三個(gè) PP 任務(wù)和一個(gè) PME 任務(wù)。

但是,如果您試圖將該配置調(diào)整為兩個(gè) GPU ,最自然的方法是分配一個(gè) PP GPU 和一個(gè) PME GPU 。這不會(huì)產(chǎn)生良好的性能,因?yàn)?PP GPU 的工作量要大得多。

最好將四 GPU 配置映射到兩 GPU 配置,并激活 MPS 以啟用內(nèi)核重疊。 GPU 中的一個(gè)重疊兩個(gè) PP 任務(wù),而另一個(gè)重疊兩個(gè) PP 和一個(gè) PME 。這將導(dǎo)致更好的負(fù)載平衡和更快的解決時(shí)間。在GROMACS 中分子動(dòng)力學(xué)模擬的非均勻并行化和加速論文中,該技術(shù)用于生成圖 12 的兩個(gè) GPU 強(qiáng)縮放結(jié)果。同樣,我們建議對(duì)任何特定情況進(jìn)行實(shí)驗(yàn)。

與計(jì)算重疊的 I / O

這篇文章展示了按照 GPU 運(yùn)行多個(gè)進(jìn)程如何通過(guò)重疊提供好處。好處不僅限于計(jì)算和通信。此解決方案也適用于花費(fèi)大量 I / O 時(shí)間的情況。在這些情況下,一個(gè)實(shí)例的 I / O 組件可以與另一個(gè)實(shí)例的計(jì)算組件重疊,以提高總體吞吐量。 MPS 使內(nèi)核能夠與其他計(jì)算內(nèi)核、通信或文件 I / O 并行執(zhí)行。

關(guān)于作者

Alan Gray 是 NVIDIA 的首席開(kāi)發(fā)技術(shù)工程師,專門(mén)研究應(yīng)用程序優(yōu)化,特別是大規(guī)模 GPU 加速體系結(jié)構(gòu)。

Szilárd Páll 是斯德哥爾摩 KTH 皇家理工學(xué)院 PCD 高性能計(jì)算中心的 HPC 研究員。他擁有計(jì)算機(jī)科學(xué)和計(jì)算生物物理學(xué)的背景,自 2008 年以來(lái)一直在為 GPU 加速器編程

審核編輯:郭婷


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11080

    瀏覽量

    217114
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4948

    瀏覽量

    131254
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9795

    瀏覽量

    88001
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    數(shù)據(jù)吞吐量提升!面向下一代音頻設(shè)備,藍(lán)牙HDT、星閃、Wi-Fi、UWB同臺(tái)競(jìng)技

    電子發(fā)燒友網(wǎng)報(bào)道(文/莫婷婷)音頻設(shè)備數(shù)據(jù)吞吐量的提升是當(dāng)前無(wú)線通信領(lǐng)域的一個(gè)重要發(fā)展趨勢(shì),藍(lán)牙、Wi-Fi和UWB作為三種主要的無(wú)線通信技術(shù),在這一趨勢(shì)中扮演著關(guān)鍵角色。 ? 數(shù)據(jù)吞吐量指的是
    的頭像 發(fā)表于 12-25 01:22 ?3234次閱讀

    CY7C65211 作為 SPI 從機(jī)模式工作時(shí)每秒的最大吞吐量是多少?

    CY7C65211 作為 SPI 從機(jī)模式工作時(shí)每秒的最大吞吐量是多少? 有實(shí)際的測(cè)試數(shù)據(jù)嗎?
    發(fā)表于 05-27 07:38

    如何在Visual Studio 2022中運(yùn)行FX3吞吐量基準(zhǔn)測(cè)試工具?

    ...Infineon-SuperSpeed_Design_Examples_v1.2.1-Code Example-v01_00-ENSuperSpeed Design Examples V1.2.1PC Utilities ),似乎沒(méi)有吞吐量基準(zhǔn)測(cè)試工具的可執(zhí)行文件。 有人知道
    發(fā)表于 05-13 08:05

    FX3進(jìn)行讀或?qū)懖僮鲿r(shí)CS信號(hào)拉低,在讀或?qū)懲瓿珊驝S置高,對(duì)吞吐量有沒(méi)有影響?

    從盡可能提高吞吐量的角度看,進(jìn)行讀或?qū)懖僮鲿r(shí)CS信號(hào)拉低,在讀或?qū)懲瓿珊驝S置高,對(duì)吞吐量有沒(méi)有影響,還是應(yīng)該CS一直拉低比較好。
    發(fā)表于 05-08 07:13

    無(wú)法GPU運(yùn)行ONNX模型的Benchmark_app怎么解決?

    CPU 和 GPU 運(yùn)行OpenVINO? 2023.0 Benchmark_app推斷的 ONNX 模型。 CPU 推理成功
    發(fā)表于 03-06 08:02

    使用OpenVINO?進(jìn)行優(yōu)化后,為什么DETR模型不同的硬件測(cè)試時(shí)顯示不同的結(jié)果?

    通過(guò)模型優(yōu)化優(yōu)化了 DETR 模型。 SPR 計(jì)算機(jī)上使用優(yōu)化模型(DETR 模型)運(yùn)行了benchmark_app,并節(jié)省了延遲和吞吐量。 Icelake 機(jī)器運(yùn)行了
    發(fā)表于 03-05 10:27

    高通吞吐量超高精度加工

    是一款工業(yè)超短脈沖 (USP) 激光器,可提供高功率 (100 W) 綠光輸出和始終如一的光束質(zhì)量組合。因此它能夠支持需要高吞吐量的要求嚴(yán)格的高精度材料加工應(yīng)用。 高通量太陽(yáng)能電池劃片
    的頭像 發(fā)表于 02-19 06:21 ?353次閱讀
    高通<b class='flag-5'>吞吐量</b>超高精度加工

    ADC芯片的采樣率為100MSPS,位寬16位,那么吞吐量是多少?

    例如ADC芯片的采樣率為100MSPS,位寬16位,那么吞吐量是多少? 用差分LVDS和FPGA相連,F(xiàn)PGA的時(shí)鐘速率多少能夠滿足要求/?
    發(fā)表于 12-18 08:49

    【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗(yàn)】--了解算力芯片GPU

    方式可以提高處理器的吞吐量。并行計(jì)算模式(而非圖形模式下)GPGPU的流水線是針對(duì)線程束進(jìn)行管理的,也就是NVIDIA所說(shuō)的 CUDA環(huán)境下的 warp 或者AMD 所說(shuō)的 OpenCL 環(huán)境下
    發(fā)表于 11-03 12:55

    TMS320VC5510 HPI吞吐量和優(yōu)化

    電子發(fā)燒友網(wǎng)站提供《TMS320VC5510 HPI吞吐量和優(yōu)化.pdf》資料免費(fèi)下載
    發(fā)表于 10-16 09:35 ?0次下載
    TMS320VC5510 HPI<b class='flag-5'>吞吐量</b>和優(yōu)化

    TMS320C6474模塊吞吐量

    電子發(fā)燒友網(wǎng)站提供《TMS320C6474模塊吞吐量.pdf》資料免費(fèi)下載
    發(fā)表于 10-15 13:52 ?0次下載
    TMS320C6474模塊<b class='flag-5'>吞吐量</b>

    TMS320C6474通用總線架構(gòu)(CBA)吞吐量

    電子發(fā)燒友網(wǎng)站提供《TMS320C6474通用總線架構(gòu)(CBA)吞吐量.pdf》資料免費(fèi)下載
    發(fā)表于 10-15 10:29 ?0次下載
    TMS320C6474通用總線架構(gòu)(CBA)<b class='flag-5'>吞吐量</b>

    TMS320DM36x SoC架構(gòu)和吞吐量

    電子發(fā)燒友網(wǎng)站提供《TMS320DM36x SoC架構(gòu)和吞吐量.pdf》資料免費(fèi)下載
    發(fā)表于 10-14 10:51 ?0次下載
    TMS320DM36x SoC架構(gòu)和<b class='flag-5'>吞吐量</b>

    TMS320C6472/TMS320TCI6486的吞吐量應(yīng)用程序報(bào)告

    電子發(fā)燒友網(wǎng)站提供《TMS320C6472/TMS320TCI6486的吞吐量應(yīng)用程序報(bào)告.pdf》資料免費(fèi)下載
    發(fā)表于 10-14 09:27 ?0次下載
    TMS320C6472/TMS320TCI6486的<b class='flag-5'>吞吐量</b>應(yīng)用程序報(bào)告

    求助,關(guān)于使用iperf測(cè)量mesh節(jié)點(diǎn)吞吐量問(wèn)題求解

    我把esp-mesh-lite的no-route例程和iperf例程合在一起,想測(cè)試兩個(gè)mesh節(jié)點(diǎn)間tcp通信的吞吐量,實(shí)際過(guò)程中一開(kāi)始流量正常,數(shù)秒后客戶端發(fā)數(shù)據(jù)這邊monitor卡死沒(méi)有任何
    發(fā)表于 07-23 06:59