Compiling LAMMPS

From HPC Wiki
Revision as of 16:21, 2 January 2017 by Bgo (talk | contribs)
Jump to:navigation Jump to:search

Flory.usm.edu

Compiling LAMMPS on flory.usm.edu cluster

Initial setup

user $source /home/bgo/shared/bin/selector-compiler -gq
user $source /home/bgo/shared/bin/selector-mpi -ofq
user $export CFLAGS="-O3 -pipe --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=15360 -march=core2 -mcx16 -msahf -mmovbe -maes -mpclmul -mpopcnt -mabm -mbmi -mavx -mtune=generic"
user $export CXXFLAGS="${CFLAGS}"
user $export FCFLAGS="${CFLAGS}"
user $export FFLAGS="${CFLAGS}"

Configure LAMMPS for compilation

The new Make.py of LAMMPS requires python2.7, so I installed it in my home directory.

Check the flags at the end of the first Make.py line. The python script does not accept CCFLAG parameters like '--param l1-cache-line-size=64', and also expects the parameters to NOT have a '-' in front. Therefore, the CFLAGS environmental variable can not be directly used here.


{{Cmd|cd src|~/packages/bin/python2.7 ./Make.py -png yes -jpg yes -s ffmpeg gzip exceptions -fft fftw3 dir=/home/bgo/shared/gnu-openmpi -a file -m none -mpi mpi dir=/home/bgo/shared/gnu-openmpi -cc /home/bgo/shared/gnu-openmpi/bin/mpiCC -flags CCFLAGS add 12 O3 march=core2 mcx16 msahf mmovbe maes mpclmul mpopcnt mabm mbmi mavx mtune=generic -j 8|make yes-all|make no-{GPU,KIM,KOKKOS,VORONOI} no-USER-{ATC,AWPMD,OMP,QUIP,H5MD,SMD,VTK} }}

The CCFLAGS parameters, which could not be specified on the command line, can be manually added to MAKE/MINE/Makefile.auto file.

Compiling LAMMPS Libraries

user $~/packages/bin/python2.7 ./Make.py -j 8 -colvars make=g++ -a lib-colvars
user $~/packages/bin/python2.7 ./Make.py -j 8 -meam make=gfortran -a lib-meam
user $~/packages/bin/python2.7 ./Make.py -j 8 -poems make=g++ -a lib-poems
user $~/packages/bin/python2.7 ./Make.py -j 8 -qmmm make=gfortran -a lib-qmmm
user $~/packages/bin/python2.7 ./Make.py -j 8 -reax make=gfortran -a lib-reax

Compiling LAMMPS

Standalone Binary (Executable)

user $make clean-all
user $make -j7 auto
user $cp src/lmp_auto /home/bgo/shared/gnu-openmpi/bin/lmp

Shared Library

Each user that wants to use LAMMPS as a library should use their own lammps src. They can compile their own programs like mpic++ -I/home/bgo/lammps/src -c simple.cpp

Add -L/home/bgo/packages/lib to FFT_PATH in MAKE/MINE/Makefile.auto so that libpython2.7.so can be found when linking. Any of the _PATH variables will work, I just chose FFT_PATH because that was closest to where my cursor was at the time!

user $make clean-all
user $make -j7 mode=shlib auto

Static Library

user $make clean-all
user $make -j7 mode=lib auto