LAMMPS

機能概要

LAMMPS は古典的な分子動力学コードであり、Large-scale Atomic/Molecular Massively Parallel Simulator の頭文字からなる名称です。
LAMMPS は金属や半導体といった固体材料、生体分子やポリマーなどのソフトな物質、あるいは粗視化またはメゾスコピックなシステムを 対象とした計算を行うことができます。

利用方法

利用範囲

特になし

利用キュー

すべて

実行方法

LAMMPS は CPUおよびGPUのどちらの環境でも利用できます。 いずれのバージョンでも MPI での並列化が利用できます。
また、最新版 2408.1 では、INTELパッケージの他、KOKKOSパッケージも利用可能です。 モジュール名は以下の通りです。

バージョン正式なバージョン名最終更新日環境設定コマンド
2408.129 Aug 24 update12024/10/1module load lammps/2408.1
2308.22 Aug 23 update22023/12/14module load lammps/2308.2

コマンド名は次の通りです。

バージョンCPU版GPU版
INTELパッケージ利用可KOKKOSパッケージ利用可GPUパッケージ利用可KOKKOS(H100対応版)パッケージ利用可
2408.1lmp_intel_cpulmp_kokkos_omp, lmp_kokkos_mpi_onlylmp_intel_gpu, lmp_intel_gpu_single, lmp_intel_gpu_doublelmp_kokkos_gpu, lmp_kokkos_gpu_single, lmp_kokkos_gpu_double
2308.2lmp_intel_cpuなしlmp_intel_gpu, lmp_intel_gpu_single, lmp_intel_gpu_doubleなし

lmp_intel_gpu_single, lmp_kokkos_gpu_single および lmp_intel_gpu_double, lmp_kokkos_gpu_double はそれぞれ単精度版および倍精度版です。
CPU版のKOKKOSパッケージ利用では、OpenMP と MPI によるハイブリッド並列での実行を行う場合は lmp_kokkos_omp をご利用ください。 MPI並列のみでの実行の場合は lmp_kokkos_mpi_only をご利用ください。
入力データによって変わる可能性があるため一概には言えないものの、KOKKOSパッケージによる性能向上はかなり期待できます。 特に、GPUでの利用においてはKOKKOS利用時の性能向上が高いケースが多いものと思われます。

バッチスクリプトでの実行例

以下では並列化手法や利用パッケージの違いにおける、バッチスクリプトの例を示します。なお、実行オプション等の詳細については、LAMMPSのオンラインマニュアルを参照ください。 なお、LAMMPSに限らず、一般には必要以上の計算リソース(例えばコア数やGPU数)を指定するとかえって性能が低下する場合がありますので、十分ご注意ください。

CPU版(INTELパッケージ利用)

以下にバッチスクリプトのサンプルを示します。

#!/bin/csh
#PBS -q APC
#PBS -N title
#PBS -l select=1:ncpus=8:mpiprocs=4

source /etc/profile.d/modules.csh
module load lammps/2408.1
setenv OMP_NUM_THREADS 2

cd $PBS_O_WORKDIR

mpirun -np 4 lmp_intel_cpu -sf intel -in input_file

この例では、OMPスレッド数 2 および MPIプロセス数 4 であり、全体で実行プロセス数 8 (2 x 4) を指定しています。 また、高速化のために -sf オプションにてINTELパッケージを指定しています。

CPU版(KOKKOSパッケージ利用)

以下にバッチスクリプトのサンプルを示します。

#!/bin/csh
#PBS -q APC
#PBS -N title
#PBS -l select=1:ncpus=8:mpiprocs=4

source /etc/profile.d/modules.csh
module load lammps/2408.1

cd $PBS_O_WORKDIR

mpirun -np 4 lmp_kokkos_omp -k on t 2 -sf kk -in input_file

この例では、OMPスレッド数 2 および MPIプロセス数 4 であり、全体で実行プロセス数 8 (2 x 4) を指定しています。 また、高速化のために -sf オプションにてKOKKOSパッケージを指定しています。
INTELパッケージとはOMPスレッド数の指定方法が異なります

OMPでの並列は行わず、MPI並列のみで同じく全体で8並列で実行する場合は以下になります。

(途中省略)
#PBS -l select=1:ncpus=8:mpiprocs=8
(途中省略)
mpirun -np 8 lmp_kokkos_mpi_only -k on -sf kk -in input_file

GPU版(GPUパッケージ利用:1枚のGPUにて1プロセスで実行する場合)

以下にバッチスクリプトのサンプルを示します。 1枚のGPUを使用する場合、ngpus は 1 としてください。

#!/bin/csh
#PBS -q APG
#PBS -N title
#PBS -l select=1:ncpus=1:mpiprocs=1:ngpus=1

source /etc/profile.d/modules.csh
module load lammps/2408.1

cd $PBS_O_WORKDIR

lmp_intel_gpu -sf gpu -pk gpu 1 -in input_file

GPU版(GPUパッケージ利用:1枚のGPUにて2プロセスで実行する場合)

以下にバッチスクリプトのサンプルを示します。 1枚のGPUを使用する場合、ngpus は 1 としてください。

#!/bin/csh
#PBS -q APG
#PBS -N title
#PBS -l select=1:ncpus=2:mpiprocs=2:ngpus=1

source /etc/profile.d/modules.csh
module load lammps/2408.1

cd $PBS_O_WORKDIR

mpirun -np 2 lmp_intel_gpu -sf gpu -pk gpu 1 -in input_file

GPU版(GPUパッケージ利用:同一ノード内の2枚のGPUを使って計算を行う場合)

現行システムでは1ノードに2枚のGPUを搭載しています。これら2枚のGPUを使って計算を行うことも可能です。 ただし、2枚のGPUを使用することで、場合によってはかえって性能が低下してしまう場合もありますのでご注意ください。 以下にバッチスクリプトのサンプルを示します。なお、この場合2枚のGPUを使用するため ngpus は 2 としてください。

#!/bin/csh
#PBS -q APG
#PBS -N title
#PBS -l select=1:ncpus=2:mpiprocs=2:ngpus=2

source /etc/profile.d/modules.csh
module load lammps/2408.1

cd $PBS_O_WORKDIR

mpirun -np 2 lmp_intel_gpu -sf gpu -pk gpu 2 -in input_file

GPU版(KOKKOSパッケージ利用:1枚のGPUにて1プロセスで実行する場合)

以下にバッチスクリプトのサンプルを示します。 1枚のGPUを使用する場合、ngpus は 1 としてください。

#!/bin/csh
#PBS -q APG
#PBS -N title
#PBS -l select=1:ncpus=1:ngpus=1

source /etc/profile.d/modules.csh
module load lammps/2408.1

cd $PBS_O_WORKDIR

lmp_kokkos_gpu -k on g 1 -sf kk -pk kokkos -in input_file

GPU版(KOKKOSパッケージ利用:1枚のGPUにて2プロセスで実行する場合)

以下にバッチスクリプトのサンプルを示します。 1枚のGPUを使用する場合、ngpus は 1 としてください。

#!/bin/csh
#PBS -q APG
#PBS -N title
#PBS -l select=1:ncpus=2:mpiprocs=2:ngpus=1

source /etc/profile.d/modules.csh
module load lammps/2408.1

cd $PBS_O_WORKDIR

mpirun -np 2 lmp_kokkos_gpu -k on g 1 -sf kk -pk kokkos -in input_file

対応モジュール

以下のモジュールが利用できます。

AMOEBA ASPERE ATC AWPMD BOCS BODY
BPM BROWNIAN CG-DNA CG-SPICA CLASS2 COLLOID
COLVARS COMPRESS CORESHELL DIELECTRICDIFFRACTIONDIPOLE
DPD-BASICDPD-MESO DPD-REACT DPD-SMOOTHDRUDE EFF
ELECTRODEEXTRA-COMMANDEXTRA-COMPUTEEXTRA-DUMPEXTRA-FIX EXTRA-MOLECULE
EXTRA-PAIRFEP GPU★ GRANULAR H5MD INTEL
INTERLAYERKOKKOS★★ KSPACE LATBOLTZ LEPTON MACHDYN
MANIFOLD MANYBODY MC MDI MEAN MESONT
MGPT MISC ML-IAP ML-RANN ML-SNAP ML-UF3
MOFFF MOLECULE MOLFILE NETCDF OPENMP OPT
ORIENT PERI PHONON PLUGIN PLUMED POEMS
PTM PYTHON QEQ QMMM QTB REACTION
REAXFF REPLICA RIGID SHOCK SMTBQ SPH
SPIN SRD TALLY UEF VORONOI YAFF

※)★:GPU版のみ    ★★:2024.8のみ

マニュアル

関連サイト

LAMMPS(公式ホームページ)