Skip to content

Instantly share code, notes, and snippets.

@jarvist
Created March 20, 2014 13:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jarvist/9663999 to your computer and use it in GitHub Desktop.
Save jarvist/9663999 to your computer and use it in GitHub Desktop.
Working (?) flags.mk file for compiling LMF March 2014 release (http://ccpforge.cse.rl.ac.uk/gf/project/lmf/frs/?action=FrsReleaseView&release_id=355) on Federoa / Xeon with GNU libraries (removed hard coded links to Intel MKL etc.)
# On Fedora, required sudo yum install libgomp lapack lapack-devel blas blas-devel tcsh
# LibXC compiled & installed by hand. There's also a version in the distribution repository.
#
# usage: flags.py [gcc|cray|intel] [dbg|opt] [mpi] [cuda] [elpa] [ls++] > flags.mk
#        scons -Y path/to/lm-x.xxy [-j nprocs] [build_target]
#
# default args: gcc opt
#
#
# the following is produced by:
#     ../genflags.py
#
LIBXCPATH="/opt/etsf/"
cc      = gcc
cflags  = -O3 -march=native -pipe
fc      = gfortran
fflags  = -O3 -march=native -pipe -I$(LIBXCPATH)/include
# The flag to set destination path for .mod files.
modflag = -J
# The flag enabling OpenMP.
omp     = -fopenmp
# The nvidia/cuda compiler. Not necessary unless you want to play with it.
nvcc    = nvcc -O3 -arch=sm_35 --ftz true --prec-div false --prec-sqrt false
# All general linking related flags (library and run paths, libs etc...)
ldflags = -lpthread  -L$(LIBXCPATH)/lib -lxc -llapack -lblas -lfftw3
# Nb: linking order matters, for blas + lapack
# The C++ compiler to be used if necessary for glue code.
cxx     = g++
# Preprocessing flags for the custom ccomp fortran preprocessor. Used for all .f and .F* files except for the ecalj/qsgw package. The C preprocessor called from the compiler script is used there.
ppflags = -dunix -dAUTO-ARRAY -dF90 -dNOQUAD -dBLAS -dBLAS3 -dLAPACK -dFFTW -dFFTW3 -dFORTRAN2003
# Kernigham & Ritchie archaic C compiler used only to compile ccomp. Beware the HECToR/cray architecture is messed up! The executables produced by this compiler NEED to run on the compilation node. This is usually not the case if the default C compiler is used.
knrcc   = gcc
# Flags for the ecalj/qsgw package (compiler flags as well as preprocessing definitions).
ecaljfl = -ffixed-line-length-132 -DEXPAND_ISWAP -DEXPAND_VDV -DCOMMONLL -DUSE_X0KBLAS -DX0KBLAS_DIV -DMbytes_X0KBLAS_DIV=2 -DNWORD_RECORDSIZE=1 -DEXPAND_SORTEA
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment