Compiling LAMMPS: Difference between revisions
No edit summary |
No edit summary |
||
Line 24: | Line 24: | ||
{{Cmd|~/packages/bin/python2.7 ./Make.py -j 8 -colvars make{{=}}g++ -a lib-colvars|~/packages/bin/python2.7 ./Make.py -j 8 -meam make{{=}}gfortran -a lib-meam|~/packages/bin/python2.7 ./Make.py -j 8 -poems make{{=}}g++ -a lib-poems|~/packages/bin/python2.7 ./Make.py -j 8 -qmmm make{{=}}gfortran -a lib-qmmm|~/packages/bin/python2.7 ./Make.py -j 8 -reax make{{=}}gfortran -a lib-reax }} | {{Cmd|~/packages/bin/python2.7 ./Make.py -j 8 -colvars make{{=}}g++ -a lib-colvars|~/packages/bin/python2.7 ./Make.py -j 8 -meam make{{=}}gfortran -a lib-meam|~/packages/bin/python2.7 ./Make.py -j 8 -poems make{{=}}g++ -a lib-poems|~/packages/bin/python2.7 ./Make.py -j 8 -qmmm make{{=}}gfortran -a lib-qmmm|~/packages/bin/python2.7 ./Make.py -j 8 -reax make{{=}}gfortran -a lib-reax }} | ||
=== Standalone | === Standalone Binary (Executable) === | ||
{{Cmd|make -j7 auto|cp src/lmp_auto /home/bgo/shared/gnu-openmpi/bin/lmp}} | {{Cmd|make -j7 auto|cp src/lmp_auto /home/bgo/shared/gnu-openmpi/bin/lmp}} | ||
=== Shared | === 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! | |||
{{Cmd|make clean-all|make -j7 mode{{=}}shlib auto}} | |||
=== Static Library === | |||
{{Cmd|make clean-all|make -j7 mode{{=}} | {{Cmd|make clean-all|make -j7 mode{{=}}lib auto}} | ||
}} |
Revision as of 15:19, 2 January 2017
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
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
Standalone Binary (Executable)
user $
make -j7 auto
user $
cp src/lmp_auto /home/bgo/shared/gnu-openmpi/bin/lmp
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