Skip to content

Run instructions

Sam Reeve edited this page Jan 26, 2021 · 7 revisions

CabanaMD compiles both a library (CabanaMD) and an executable (cbnMD).

Default runs

A LAMMPS style input file is the only required input. By default, CabanaMD runs with the default enabled Kokkos backend (https://github.com/kokkos/kokkos/wiki/Initialization):

mpiexec -n 10 build/bin/cbnMD -il input/in.lj

Both Lennard-Jones (LJ) and Behler-Parrinello style neural network potential (NNP) nickel examples are provided within the repository. Kokkos backends that are enabled, but not the default, can also be used with command line flags. For example, running LJ with OpenMP:

export OMP_NUM_THREADS=4
mpiexec -n 10 build/bin/cbnMD -il input/in.lj --device-type OPENMP

Running NNP with CUDA:

mpiexec -n 4 build/bin/cbnMD -il input/in.nnp --device-type CUDA

Command line options

All command line options can be shown with the -h flag:

mpiexec -n 1 build/bin/cbnMD -h


Options:
  -il [FILE] (OR)
  --input-lammps [FILE]:    Provide LAMMPS input file

  --device-type [TYPE]:     Kokkos device type to run with
                                (SERIAL, OPENMP, CUDA, HIP)
  --force-iteration [TYPE]: Specify iteration style for force calculations
                                (NEIGH_FULL, NEIGH_HALF)
  --neigh-parallel [TYPE]:  Specify neighbor parallelism and, if applicable, angular neighbor parallelism
                                (SERIAL, TEAM, TEAM_VECTOR)
  --neigh-type [TYPE]:      Specify Neighbor Routines implementation 
                                (VERLET_2D, VERLET_CSR, TREE_2D, TREE_CSR)
  --dumpbinary [N] [PATH]:  Request that binary output files PATH/output* be generated every N steps
                                (N = positive integer)
                                (PATH = location of directory)
  --correctness [N] [PATH] [FILE]: Request that correctness check against files PATH/output* be performed every N steps, correctness data written to FILE
                                (N = positive integer)
                                (PATH = location of directory)

This includes options for parallelism, and algorithms. Some options are not allowed or not applicable based on underlying optional libraries (see Build Instructions).

Run capabilities

Interatomic potentials:

Using Cabana::neighbor_parallel_for

  • Lennard-Jones
  • Neural network (Behler-Parrinello)

Neighbor List

Using Cabana::NeighborList

  • Verlet list
  • ArborX based tree list
  • Full or half lists
  • 2D or CSR (compressed sparse row) layouts

Integrator

Using Kokkos::parallel_for

  • NVE (constant energy velocity-Verlet)

Communication

Using Cabana::Distributor and Cabana::Halo

  • MPI

Binning

Using Cabana::LinkedCellList

  • Linked cell list spatial sort

Input:

  • Restricted LAMMPS input files
  • Command line options

Restrictions

While LAMMPS style input files are the main input to CabanaMD, most LAMMPS commands are not available. Warnings and errors are issued for those unsupported commands, but it should be noted that the ordering of LAMMPS commands is not enforced.