物美價廉: GROMACS 2018在GPU節點上的使用 (1)

2021-02-20 分子模擬之道

■原文 More bang for your buck: Improved use of GPU nodes for GROMACS 2018, DOI: 10.1002/jcc.26011[1]■翻譯: 劉玉傑; 校對: 李繼存

摘要

我們確定了在Linux計算集群上, GROMACS 2018程序運行分子動力學(MD)模擬的最佳硬體. 因此, 我們在各種計算節點上對GROMACS性能進行了基準測試, 並將其與節點成本聯繫起來, 其中的成本可能也包括能源和冷卻成本. 與我們早先使用GROMACS 4.6在2014年的硬體上進行的調查一致, 消費級GPU節點的性價比遠高於CPU節點. 然而, 在GROMACS 2018中, CPU到GPU處理能力的最佳平衡更多地轉向了GPU. 因此, 與針對舊GROMACS版本優化的節點相比, 針對GROMACS 2018及更高版本進行優化的節點具有更高的性價比. 而且, 向GPU處理的轉移使得使用新GPU升級舊節點變得更便宜, 得到的性能與類似的全新硬體基本相同.

引言

分子動力學(MD)模擬是一種成熟的計算工具, 用於從物理學的角度, 在原子水平上研究和理解生物分子的功能. 一個溶劑化分子的模擬系統可以由數千到數百萬個原子組成, 具體取決於它是一個小的蛋白質還是像核糖體[1]或病毒外殼[2]這樣大的複合物. 為了在生物相關的時間尺度上得出原子運動的時間演化, 需要計算數百萬個時間步. 為了得到具有統計學意義的結果, 此過程通常要在不同起始條件下重複多次. 因此, 研究單個生物分子系統就很容易佔用多個現代計算節點, 運行數周, 而一個進行MD計算的典型研究小組的所有模擬項目需要一個中型計算集群不間斷地運行.

無論所需的集群硬體是由使用它的部門購買, 還是使用高性能計算(HPC)中心的服務, 最終必須有人決定購買什麼. 這個決定並不簡單, 因為可用的硬體是多種多樣的. 節點具體應該如何? 節點是應該擁有多個弱計算核心, 還是擁有較少的強計算核心? 多套節點是否比單套節點更好? 每個GPU需要多少個CPU核心? 哪種GPU類型是最佳的? 內存與節點間的連接呢?

專為不同軟體應用設計的全方位集群節點通常包含高端CPU, 具有雙精度浮點性能很高的GPU, 大的內存和昂貴的互連. 同時滿足這些需求的結果是每個應用程式的計算性能與節點價格的比值非常低. 我們的方法完全相反: 通過具體化來實現成本效益的最大化. 我們只關心一種特定的應用, 即MD, 並尋找在固定預算下能夠獲得最高模擬吞吐量的硬體, 這是通過在硬體的使用壽命內能夠產生的軌跡的總長度來衡量的.

可用於生物分子模擬的MD代碼有很多, 其中包括ACEMD[3], Amber[4], CHARMM[5], Desmond[6], LAMMPS[7], NAMD[8], OpenMM[9]和GROMACS[10]. 我們使用GROMACS, 因為它是最快的MD引擎之一, 使用廣泛且免費.

我們的基本問題是: 在預算固定的情況下, 我們如何才能產生儘可能多的MD軌跡? 因此, 我們測量典型生物分子MD體系的模擬性能並確定相應的總硬體價格. 我們並沒有針對當前的可用硬體進行全面評估, 我們僅僅是為了發現具有卓越性價比的硬體, 這是本研究中使用的效率指標, 用於GROMACS 2018版本的MD代碼.

由於我們的研究優先考慮生成軌跡的效率和總吞吐量(假設有大量並發模擬), 因此我們不考慮生成單個軌跡儘可能快的用例. 而後者也可能很重要, 例如, 在探索性研究中, 更快的模擬需要很強的標度行為, 這總是要付出代價的, 因為模擬速度和並行效率之間具有內在的權衡. 同時, 運行大量的獨立或耦合不強的模擬是一個廣泛使用並日益重要的用例. 由於模擬性能的不斷提高, 許多優化過的MD代碼(如GROMACS)即使沒有大規模並行化, 軌跡的生成速率也很高. 此外, 以前需要生成很長軌跡的問題現如今通常藉助系綜方法, 使用大量更短的軌跡來替代[11-15]. 因此, 具有單個快速互連的大型計算資源通常並不是必須的. 相反, 在這些實例中, 理想硬體是具有快速"孤島"並且相互間具有更適度的互連. 事實上, 在這樣的機器上, 某些情況下可以獲得很快或更快的結果, 更重要的是, 可以獲得更具成本效益的結果. 在我們的案例中, 考慮到當前的硬體限制和軟體特性, 出於最終效率的原因, 快速"孤島"由一組CPU核心和單個GPU表示.

除了性價比之外, 在評估系統時, 我們還考慮到以下兩個標準: (1) 能耗, 因為它是軌跡成本的最大來源之一; (2) 機架空間, 這在任何伺服器機房都是有限的. 在本文的一個章節中我們單獨介紹了能耗, 而我們的硬體預選則隱含地考慮了空間要求; 對要考慮的伺服器節點, 我們要求機架空間中的平均堆積密度至少為每高度單位U一個GPU: 具有4個GPU的4U伺服器符合標準.

在使用GROMACS 4.6和2014年硬體的早期調查中[16], 我們發現優化的集群的模擬吞吐量通常是傳統集群的兩到三倍. 自2014年以來, 硬體一直不斷發展, 並且以及對基本算法經進行了改進. 因此, 使用兩個完全相同的MD測試系統, 我們更新原先的調查結果, 向讀者指出對GROMACS 2018而言能獲得最佳性價比的當前硬體[10, 17].

我們專注於硬體評估而不是如何優化GROMACS的性能, 因為對後者已經進行了廣泛的討論[16]. 如果沒有額外說明, 我們原始論文中給出的大多數性能建議仍然有效. 有關特定GROMACS版本的特殊說明, 請參見在線用戶指南[2]中 Getting good performance from mdrun 這一部分。

GROMACS負載分配方案

GROMACS使用各種機制對可用資源上的計算工作進行並行化, 以便能獲得最佳的硬體性能[10, 18]. 共享MD體系計算的進程(稱為rank)是通過消息傳遞接口(MPI)庫進行通信的, 每個rank可以包含多個OpenMP線程. 如果可以, 每個rank可以有選擇地在GPU上計算庫侖和範德華相互作用(對勢)的短程部分; 這個過程稱為卸載, 如圖5所示. 庫侖相互作用的長程部分使用粒子網格Ewald(PME)方法[19]進行計算, 該方法可以只使用一部分rank進行以提高並行效率. 從2018版開始, PME也可以卸載到單個GPU上進行. 在並行化層次結構最低的級別上, 幾乎所有對性能敏感的代碼都利用了SIMD(單指令多數據)並行性.

2014年調查總結

為了說明過去五年中在實現方面和硬體方面的進步, 我們總結了先前調查的以下要點.

在我們最初的調查中[16], 對由12個CPU和13個GPU型號構成的超過50種不同的節點配置, 我們確定了硬體價格和GROMACS 4.6的性能. 特別是, 我們將消費級GPU與專業GPU進行了比較. 像NVIDIA的Tesla和Quadro型號的專業GPU通常用於計算機輔助設計, 計算機圖像生成以及HPC. 消費級GPU, 如GeForce系列, 主要用於遊戲. 它們便宜得多(最高差價達1000歐元, 而專業卡則高達幾千歐元), 而且缺乏專業型號所提供的一些功能, 如內存和雙精度浮點性能.

我們的兩個主要基準系統(我們在本研究中繼續使用), 第一個含有一個80 k原子的膜蛋白, 嵌入脂質雙層中, 周圍是水和離子(MEM); 第二個含有一個2 M原子的核糖體, 以及水和離子(RIB). 具體細節請參見表1. 對每個硬體配置, 我們通過掃描並行化的參數, 如MPI rank數, OpenMP線程數和單獨PME rank數, 確定了每個系統運行單個模擬的最快設置.

表1: MD基準系統. 我們的主要基準測試是利用全原子MEM和RIB體系完成的,而為了比較,我們還使用Martini力場測試了兩個粗粒化體系(VES和BIG)

MD體系MEM[20]RIB[1]VES[21]BIG粒子數81,7432,136,41272,0762,094,812體系尺寸(nm)10.8×10.2×9.631.23322.2×20.9×18.4142.4×142.4×11.3時間步長(fs)243020截斷半徑(nm)1.01.01.11.1PME網格間距(nm)0.120.135––

圖1: 我們以前調查的摘要, 節點基於2014年的可用硬體, 使用GROMACS 4.6進行測試[16]. 三種不同類型節點的硬體成本與MEM基準性能(圓)的比較: 純CPU節點(橙色), 具有專業Tesla GPU的節點(紫色)和具有消費級GeForce GPU的節點(綠色). 虛線將GPU節點與其CPU連接起來. 由彩色線連接的圓圈表示由該節點類型構建的集群, 圓圈中的數字表示這些節點中有多少參與了基準測試. 白線是具有相等性價比的等值線. 從一個等值線向下移動到下一個等值線性價比會變為原來的2倍(紅色陰影區域=低性價比, 綠色陰影區域=高性價比)

我們從調查中得出的結論(圖1)是, 只含單個CPU的節點和具有專業GPU的節點具有相對較低的性價比, 而消費級GPU的性價比可以提高到原來的2到3倍. 為節點增加第一個消費級GPU會極大地提供性價比, 而增加過多的GPU會降低性價比(例如, 以前論文的圖6中將帶有2個E5-2680v2的節點與具有2個和4個GTX980 GPU的節點進行了比較).

在多個節點上進行並行化以提高性能會導致性價比急劇下降(圖1, 右上角). 因此, 對於總採樣量比單個軌跡長度更重要的項目, 建議運行多個單節點模擬, 而不是運行一些多節點模擬.

參考連結

[1] More bang for your buck: Improved use of GPU nodes for GROMACS 2018, DOI: 10.1002/jcc.26011: https://onlinelibrary.wiley.com/doi/full/10.1002/jcc.26011
[2] 在線用戶指南: http://manual.gromacs.org/

相關焦點

  • 物美價廉: GROMACS 2018在GPU節點上的使用 (4)
    DOI: 10.1002/jcc.26011[1]■翻譯: 劉玉傑; 校對: 李繼存摘要我們確定了在Linux計算集群上, GROMACS 2018程序運行分子動力學(MD)模擬的最佳硬體.因此, 我們在各種計算節點上對GROMACS性能進行了基準測試, 並將其與節點成本聯繫起來, 其中的成本可能也包括能源和冷卻成本. 與我們早先使用GROMACS 4.6在2014年的硬體上進行的調查一致, 消費級GPU節點的性價比遠高於CPU節點. 然而, 在GROMACS 2018中, CPU到GPU處理能力的最佳平衡更多地轉向了GPU.
  • GROMACS如何使用其他水模型
    由於真實情況下水分子的電量分布並不是完全在原子上的,如氧原子的一部分負電量就在H-O-H的對角線上,還有兩個電子對處在H-O化學鍵的延長線上。為了得到更加真實的水分子模型,四個粒子以上的模型就被應用到分子動力學模擬中。其中最著名的有TIP4P模型。該模型在三個原子中間,H-O-H化學鍵的對角線上多了一個不含質量,只帶電量的點。
  • 使用GROMACS計算紅外光譜
    , GMX2019.6測試通過上一篇博文 【整理】使用分子動力學模擬紅外光譜[1] 中整理了根據分子動力學模擬計算紅外光譜的理論基礎知識, 既然已經知道了計算方法, 剩下的就是如何實現了.Phys. 135(13):134506, 2011; 10.1063/1.3646306 的說法, 我們需要計算的是電流矢量vq自相關函數的光譜. 所以, 我們首先需要將trr中每個粒子的速度乘上其電荷, 以vq代替trr中的v. 要達到這一目的, 我們首先需要獲知體系中每個粒子的電荷.
  • 使用GPU.js改善JavaScript性能
    同時,web worker仍然運行在CPU上,但是運行在不同的線程上。在該初學者指南中,我們將演示如何使用GPU.js執行複雜的數學計算並提高JavaScript應用的性能。什麼是GPU.js?GPU.js是一個針對Web和Node.js構建的JavaScript加速庫,用於在圖形處理單元(GPGPU)上進行通用編程,它使你可以將複雜且耗時的計算移交給GPU而不是CPU,以實現更快的計算和操作。還有一個備用選項:在系統上沒有GPU的情況下,這些功能仍將在常規JavaScript引擎上運行。
  • 你知道GROMACS中各文件的用途嗎?
    小編很早就想寫一點關於Gromacs的東西,可是Gromacs涉及東西太多了:從安裝到使用,從分子動力學模擬基本知識到最終的數據分析,內容太多導致小編不知道從何處入手。然而,正所謂不積跬步,無以至千裡,今天下定決心,首篇文章先介紹一些Gromacs使用中涉及到的文件。Gromacs是一個用來進行分子動力學模擬的軟體。
  • 基於 Kubernetes 的 GPU 類型調度實現
    因此,在這篇文章中,我將介紹才雲科技在這一點上的經驗,談一談我們如何基於 Kubernetes 靈活實現 GPU 類型的調度。問題:原生 Kubernetes 如何讓 Pod 使用指定類型的 GPU?假設集群中有兩個節點有 GPU:節點 A 上有兩個 Tesla K80,節點 B 上有兩個 Tesla P100。
  • 如何在GPU上設計高性能的神經網絡
    gpu對於機器學習是必不可少的。可以通過AWS或谷歌cloud輕鬆地啟動這些機器的集群。NVIDIA擁有業內領先的GPU,其張量核心為Volta V100和安培A100加速哪種方法最適合你的神經網絡?為了以最低的成本設計出最快的神經網絡,機器學習架構師必須解決許多問題。此外,僅僅使用帶有GPU和張量核心的機器並不能保證最高性能。
  • 超算安裝GPU-based軟體 (以pytorch為例)
    一般的超算的拓撲結構是若干個登陸節點+若干個交換機+大量計算CPU節點+大量GPU計算節點+一個(或若干個)存儲節點+管理節點。其中存儲節點的共享存儲可以被所有節點訪問。一般運作方式是,如果我的計算依賴非常共性的軟體,我可以找超算管理員安裝,使用的時候可以通過module load來初始化自己所需軟體。
  • TensorFlow Lite的 GPU 委託代理(Delegate)是什麼
    這是因為 OpenCL 主要分兩種數據 Layout ,Buffer 和 Image2D,而後者能用上L1 cache,性能理論上來說要比 Buffer 的形式要好。但是,以 Image2D 的RGBA形式來說,其最後一個通道的長度是 4,即RGBA四個值,是固定的,如果大於4,需要考慮重新排布,而且計算邏輯上也要重新設計為適應排布的方式。
  • Pytorch-GPU1.7.1 和 TensorFlow-GPU1.14.0 安裝指南(基於windows10)
    命名如下:conda create -n pytorch_gpu python=3.7conda activate pytorch_gpu python=3.7conda activate tensorflow_gpu接著使用如下命令安裝GPU版本的TensorFlow,這種方式可以自動安裝與之匹配的CUDA和CuDNN。
  • 基於VMware Bitfusion的GPU共享技術使用場景討論
    Bitfusion的具體使用方法可以參看官方文檔 《在vSphere Bitfusion上運行TensorFlow的示例指南》 https://docs.vmware.com/cn/VMware-vSphere-Bitfusion/2.0/vmware-vsphere-bitfusion-20-tensorflow-example-guide.pdf。
  • 機器學習平臺在Kubernetes上的實踐
    GPU任務設置容忍(Toleration):讓GPU任務可以調度在GPU節點<#if (gpu > 0)>    tolerations:        - effect: NoSchedule          key: nvidia.com/gpu          value: "true"     線上與測試任務隔離線上與測試任務
  • 【翻譯】Sklearn與TensorFlow機器學習實用指南 ——第12章 設備和伺服器上的分布式TensorFlow(上)
    但是,即使採用了所有這些技術,在具有單個 CPU 的單臺機器上訓練大型神經網絡可能需要幾天甚至幾周的時間。在本章中,我們將看到如何使用 TensorFlow 在多個設備(CPU 和 GPU)上分配計算並將它們並行運行(參見圖 12-1)。 首先,我們會先在一臺機器上的多個設備上分配計算,然後在多臺機器上的多個設備上分配計算。
  • 2020年深度學習如何挑選 GPU?這篇 GPU 最全攻略請查收
    這篇文章整合了網絡上現有的GPU選擇標準和評測信息,希望能作為你的購買決策的參考。1 是什麼使一個GPU比另一個GPU更快?有一些可靠的性能指標可以作為人們的經驗判斷。如果在多個GPU上運行,應該先嘗試在1個GPU上運行,比較兩者速度。由於單個GPU幾乎可以完成所有任務,因此,在購買多個GPU時,更好的並行性(如PCIe通道數)的質量並不是那麼重要。
  • 使用GPU和Theano加速深度學習
    0.7秒,並且輸出「Used the gpu」。通過除以255,可以標準化灰度值映射到[0,1]之間。接下來,我們將所有的值減去0.5,映射到區間[ -0.5,0.5 ]上。現在,每個圖像都由一個1024維的數組表示,每一個值都在- 0.5到0.5之間。在訓練分類網絡時,標準化你的輸入值在[-1,1]之間是個很常見的做法。
  • 2020 年深度學習如何挑選 GPU?這篇 GPU 最全攻略請查收
    的選擇將從根本上決定深度學習的體驗。這篇文章整合了網絡上現有的GPU選擇標準和評測信息,希望能作為你的購買決策的參考。1 是什麼使一個GPU比另一個GPU更快?有一些可靠的性能指標可以作為人們的經驗判斷。
  • Justin GROMACS教程: 從蛋白質到哈密頓微擾
    GROMACS模擬軟體包[1,2]是一款開源, 自由和靈活的分子動力學軟體包, 對所有用戶免費, 每個人都可以獲得. 多年來, GROMACS一直是世界上運行速度最快的分子動力學代碼之一[1]. 隨著硬體和算法的發展, 模擬軌跡的長度也不斷增加, 這使得GROMACS成為流行的分子動力學模擬程序.
  • 【經驗】深度學習如何挑選GPU?
    這篇文章整合了網絡上現有的GPU選擇標準和評測信息,希望能作為你的購買決策的參考。1 是什麼使一個GPU比另一個GPU更快?有一些可靠的性能指標可以作為人們的經驗判斷。如果在多個GPU上運行,應該先嘗試在1個GPU上運行,比較兩者速度。由於單個GPU幾乎可以完成所有任務,因此,在購買多個GPU時,更好的並行性(如PCIe通道數)的質量並不是那麼重要。
  • 2020年深度學習如何挑選GPU?這篇 GPU 最全攻略請查收
    這篇文章整合了網絡上現有的GPU選擇標準和評測信息,希望能作為你的購買決策的參考。1 是什麼使一個GPU比另一個GPU更快?有一些可靠的性能指標可以作為人們的經驗判斷。如果在多個GPU上運行,應該先嘗試在1個GPU上運行,比較兩者速度。由於單個GPU幾乎可以完成所有任務,因此,在購買多個GPU時,更好的並行性(如PCIe通道數)的質量並不是那麼重要。
  • 居然有免費的GPU可以跑深度學習代碼!
    Colaboratory使用步驟1、登錄谷歌雲盤https://drive.google.com/drive/my-drive(沒有帳號的可以註冊一個)(1)、右鍵新建文件夾,作為我們的項目文件夾。Colab中的GPU首先我們要讓Colab連上GPU,導航欄-->編輯-->筆記本設置-->選擇GPU接下來我們來確認可以使用Tensorflow連接到GPUimport