- Getting good performance from mdrun:
給5.x版本之後與2016、2018版本用的說明文件 - Useful mdrun features:也是GROMACS-5.x版本之後,mdrun的一些例子
- Acceleration and parallelization:版本4.6之後,但不到5.x的加速方式
首先介紹在編譯程式的時候,可以開啟的加速選項:
- SIMD support:不同的CPU會有一些SIMD (Simple Instruction Multiple Data) 的指令集可以使用,像是SSE2, SSE4.1, AVX, AVX2, AVX_512_KNL, IBM_VSX, Sparc64_HPC_ACE, ARM_NEON_ASIMD等等。通常讓CMake自動選擇就可以,但有些型號選擇最新的指令集效能卻會下降,編譯前請先參考此說明
- CUDA GPU acceleration:機器上若有裝Nvidia的顯示卡
- OpenCL GPU acceleration:機器上若有裝AMD的顯示卡或APU
- Linear algebra libraries:主要是BLAS與LAPACK函式庫。對於normal-mode analysis與covariance analysis會有加速的功能
- MPI support:讓mdrun可以透過網路在多台機器上面執行。這邊注意一點,GROMACS本身就內建thread-MPI,可在同台機器上面開多核心來跑;這段所謂的MPI則是指OpenMPI, MPICH等,用來讓mdrun跨多台機器跑,與thread-MPI無關
下面則是在執行mdrun的時候,可以開啟的加速選項。注意,下面許多加速的功能需要在上面編譯的時候就先設定好。這些mdrun指令的使用範例:
- gmx mdrun
讓GROMACS直接自動跑thread-MPI rank,也會自動分配工作到GPU上 - gmx mdrun -nt 8
開啟8個threads來跑,至於thread-MPI rank數目與OpenMP threads數目則由GROMACS自動決定 - gmx mdrun -ntmpi 2 -ntomp 4
總共會開啟2*4=8 threads在跑。也就是開了2個thread-MPI rank,而每個rank又用4個OpenMP threads。GROMACS會自動把每個rank上面的OpenMP threads都放在同一個CPU插槽上面跑。簡單理解就是 - -ntmpi 就是機器上有幾個CPU插槽(socket)
- -ntomp 數目代表每個CPU有幾個核心(core)
- gmx mdrun -gpu_id 12
讓mdrun使用兩張GPU來跑,其GPU ID分別是1與2。這個設定會要求兩個thread-MPI ranks(亦即-ntmpi 2) - gmx mdrun -ntmpi 4 -nb gpu -gputasks 1122
讓mdrun開4個thread-MPI ranks,每個rank上面的non-bond計算丟給GPU。這邊有兩張GPU,4個thread-MPI ranks分別把工作丟到1, 1, 2, 2上面跑 - gmx mdrun -nt 6 -pin on -pinoffset 0
gmx mdrun -nt 6 -pin on -pinoffset 3
一台六核心有hyper-threading的機器。兩個mdrun工作就會被丟到rank 0與rank 3上面去 - mpirun -np 2 gmx_mpi mdrun
使用外裝的MPI,像是OpenMPI或是MPICH等來分配工作。建議同一台機器上面不要這要開啟。mpirun這種是用來跨機器跑的時候才需要用到
沒有留言:
張貼留言