Skip to content

Instantly share code, notes, and snippets.

@DaisukeMiyamoto
Last active April 19, 2020 11:32
Show Gist options
  • Save DaisukeMiyamoto/c06ec6405be495725ee6457e763d3e97 to your computer and use it in GitHub Desktop.
Save DaisukeMiyamoto/c06ec6405be495725ee6457e763d3e97 to your computer and use it in GitHub Desktop.
Run LAMMPS on AWS ParallelCluster

LAMMPS on AWS ParallelCluster

set up parallelcluster

set up parallelcluster with following conditions

  • OS: CentOS
  • Scheduler: SGE
[aws]
aws_region_name = us-east-1

[global]
update_check = true
sanity_check = true
cluster_template = benchmark

[aliases]
ssh = ssh {CFN_USER}@{MASTER_IP} {ARGS} -i ~/.ssh/<key-name>.pem -o StrictHostKeyChecking=no

[cluster benchmark]
key_name = <key-name>

base_os = centos7
scheduler = sge

cluster_type = spot
master_instance_type = c5.large
compute_instance_type = c5.2xlarge
disable_hyperthreading = true

initial_queue_size = 0
max_queue_size = 100

vpc_settings = default

tags = {"Project": "ParallelCluster-Benchmark"}

[vpc default]
vpc_id = <vpc-id>
master_subnet_id = <subnet-id>
compute_subnet_id = <subnet-id>

create cluster

$ pcluster create <cluster-name>

ssh to the cluster

$ pcluster ssh <cluster-name>

Install LAMMPS

download source code

cd /shared
git clone https://github.com/lammps/lammps
cd lammps/src

modify src/MAKE/Makefile.mpi for using C++11

CCFLAGS = -g -O3 -std=c++11

build

module load openmpi/4.0.2
make mpi

submit job

write job script

  • lammps.sh
#!/bin/bash
#$ -pe mpi 8
#$ -cwd

module load openmpi/4.0.2
mpirun -np 8 /shared/lammps/src/lmp_mpi -in /shared/lammps/bench/in.lj

submit job

qsub lammps.sh
  • result:
[centos@ip-10-0-2-243 ~]$ cat lammps.sh.o1 
LAMMPS (15 Apr 2020)
Lattice spacing in x,y,z = 1.6796 1.6796 1.6796
Created orthogonal box = (0 0 0) to (33.5919 33.5919 33.5919)
  2 by 2 by 2 MPI processor grid
Created 32000 atoms
  create_atoms CPU = 0.0194724 secs
Neighbor list info ...
  update every 20 steps, delay 0 steps, check no
  max neighbors/atom: 2000, page size: 100000
  master list distance cutoff = 2.8
  ghost atom cutoff = 2.8
  binsize = 1.4, bins = 24 24 24
  1 neighbor lists, perpetual/occasional/extra = 1 0 0
  (1) pair lj/cut, perpetual
      attributes: half, newton on
      pair build: half/bin/atomonly/newton
      stencil: half/bin/3d/newton
      bin: standard
Setting up Verlet run ...
  Unit style    : lj
  Current step  : 0
  Time step     : 0.005
Per MPI rank memory allocation (min/avg/max) = 3.225 | 3.225 | 3.225 Mbytes
Step Temp E_pair E_mol TotEng Press 
       0         1.44   -6.7733681            0   -4.6134356   -5.0197073 
     100    0.7574531   -5.7585055            0   -4.6223613   0.20726105 
Loop time of 0.244358 on 8 procs for 100 steps with 32000 atoms

Performance: 176789.467 tau/day, 409.235 timesteps/s
97.1% CPU use with 8 MPI tasks x no OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.18706    | 0.18883    | 0.19089    |   0.3 | 77.27
Neigh   | 0.02895    | 0.029198   | 0.029399   |   0.1 | 11.95
Comm    | 0.019182   | 0.021492   | 0.023476   |   0.9 |  8.80
Output  | 7.851e-05  | 8.1539e-05 | 8.7115e-05 |   0.0 |  0.03
Modify  | 0.0029185  | 0.0029449  | 0.0029883  |   0.0 |  1.21
Other   |            | 0.001817   |            |       |  0.74

Nlocal:    4000 ave 4033 max 3962 min
Histogram: 1 0 1 1 0 2 1 0 0 2
Nghost:    5756.75 ave 5804 max 5724 min
Histogram: 1 1 1 1 2 0 1 0 0 1
Neighs:    150354 ave 152935 max 147476 min
Histogram: 1 0 0 1 2 1 1 0 1 1

Total # of neighbors = 1202833
Ave neighs/atom = 37.5885
Neighbor list builds = 5
Dangerous builds not checked
Total wall time: 0:00:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment