Compiling LAMMPS: Difference between revisions

From HPC Wiki
Jump to:navigation Jump to:search
No edit summary
No edit summary
Line 1: Line 1:
= Flory.usm.edu =
= Flory.usm.edu =


Compiling LAMMPS on flory.usm.edu cluster
Compiling LAMMPS on {{C|flory.usm.edu}} cluster


== Initial setup ==
== Initial setup ==
Setup environment for using GNU compiler suite, Open MPI, and compilation flags suitable for this cluster and the version of GNU compiler currently installed.


{{Cmd|source /home/bgo/shared/bin/selector-compiler -gq|source /home/bgo/shared/bin/selector-mpi -ofq|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"|export CXXFLAGS{{=}}"${CFLAGS}"|export FCFLAGS{{=}}"${CFLAGS}"|export FFLAGS{{=}}"${CFLAGS}"}}
{{Cmd|source /home/bgo/shared/bin/selector-compiler -gq|source /home/bgo/shared/bin/selector-mpi -ofq|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"|export CXXFLAGS{{=}}"${CFLAGS}"|export FCFLAGS{{=}}"${CFLAGS}"|export FFLAGS{{=}}"${CFLAGS}"}}
For an explanation of {{C|selector-mpi}} and {{C|selector-compiler}} see [[Initial Setup]].


== Configure LAMMPS for compilation ==
== Configure LAMMPS for compilation ==


The new Make.py of LAMMPS requires python2.7, so I installed it in my home directory.
The {{C|Make.py}} script of LAMMPS requires python2.7.
 
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.


The python script does not accept CFLAG parameters like {{C|--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} }}
{{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.
The CFLAGS parameters that could not be specified on the command line can be manually added to {{C|MAKE/MINE/Makefile.auto}}.


== Compiling LAMMPS Libraries ==
== Compiling LAMMPS Libraries ==
Line 28: Line 31:
{{Cmd|make clean-all|make -j7 auto|cp src/lmp_auto /home/bgo/shared/gnu-openmpi/bin/lmp}}
{{Cmd|make clean-all|make -j7 auto|cp src/lmp_auto /home/bgo/shared/gnu-openmpi/bin/lmp}}


=== Shared Library ===
=== 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!


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!
==== Shared Library ====


{{Cmd|make clean-all|make -j7 mode{{=}}shlib auto}}
{{Cmd|make clean-all|make -j7 mode{{=}}shlib auto}}


=== Static Library ===
==== Static Library ====


{{Cmd|make clean-all|make -j7 mode{{=}}lib auto}}
{{Cmd|make clean-all|make -j7 mode{{=}}lib auto}}

Revision as of 16:46, 2 January 2017

Flory.usm.edu

Compiling LAMMPS on flory.usm.edu cluster

Initial setup

Setup environment for using GNU compiler suite, Open MPI, and compilation flags suitable for this cluster and the version of GNU compiler currently installed.

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}"

For an explanation of selector-mpi and selector-compiler see Initial Setup.

Configure LAMMPS for compilation

The Make.py script of LAMMPS requires python2.7.

The python script does not accept CFLAG 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 CFLAGS parameters that could not be specified on the command line can be manually added to MAKE/MINE/Makefile.auto.

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

Library

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!

Shared Library

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

Static Library

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