...
Code Block |
---|
# Load intel compilers and mpi modules cd CONQUEST-release/src # Create and edit system/system.make for XC lib and include paths, and FFT & blas libraries. # Add correct flag (-qopenmp for Intel) for OpenMP to compile and link arguments # Set MULT_KERN to ompGemm make |
Sample build script for libxc and Conquest:
Code Block |
---|
#!/bin/bash BASE=$PWD source /opt/intel/compiler/2023.2.1/env/vars.sh rm -rf libxc-6.2.2 tar xfp libxc-6.2.2.tar.gz cd libxc-6.2.2 MPI=impi-2021.10.0 MPI=hpcx-2.18 if [[ "$MPI" =~ ^impi ]]; then source /opt/intel/mpi/2021.10.0/env/vars.sh export MPIFC=mpiifort export CC=mpiicc export FC=$MPIFC elif [[ "$MPI" =~ ^hpcx ]]; then module use <path>$MPI/modulefiles module load hpcx export OMPI_CC=icc export OMPI_CXX=icpc export OMPI_FC=ifort export OMPI_F90=ifort export MPIFC=mpif90 export CC=mpicc export FC=mpif90 fi rm -rf $BASE/libxc-6.2.2-$MPI ./configure --prefix=$BASE/libxc-6.2.2-$MPI make -j 16 install |
Modify src/system/system.make.:
Code Block |
---|
# This # Set compilers FC=$(MPIFC) F77=$(FC) # Linking flags LINKFLAGS= -L/usr/local/lib ARFLAGS= # Compilation flags # NB for gcc10 you need to add -fallow-argument-mismatch COMPFLAGS= -O3 $(XC_COMPFLAGS) COMPFLAGS_F77= $(COMPFLAGS) # Set BLAS and LAPACK libraries # MacOS X # BLAS= -lvecLibFort # Intel MKL use the Intel tool # Generic # BLAS= -llapack -lblas # Full library call; remove scalapack if using dummy diag module LIBS= -qmkl=sequential -lmkl_scalapack_lp64 -lmkl_blacs_$(WHICHMPI)_lp64 $(XC_LIB) # LIBS= $(FFT_LIB) $(XC_LIB) -lscalapack $(BLAS) # LibXC compatibility (LibXC below) or Conquest XC library # Conquest XC library #XC_LIBRARY = CQ #XC_LIB = #XC_COMPFLAGS =is a system.make file for the UCL Kathleen machine. See # https://www.rc.ucl.ac.uk/docs/Clusters/Kathleen/ for details # Set compilers FC=$(MPIFC) # OpenMP flags # Set this to "OMPFLAGS= " if compiling without openmp # Set this to "OMPFLAGS= -qopenmp" if compiling with openmp OMPFLAGS= -qopenmp # Set this to "OMP_DUMMY = DUMMY" if compiling without openmp # Set this to "OMP_DUMMY = " if compiling with openmp OMP_DUMMY = # Set BLAS and LAPACK libraries # MacOS X # BLAS= -lvecLibFort # Intel MKL use the Intel tool # Generic #BLAS= -llapack -lblas # LibXC compatibility # Choose LibXC version: v4 (deprecated) or v5/6 (v5 and v6 have the same interface) # XC_LIBRARY = LibXC_v4 XC_DIR = <path>/libxc-6.2.2-$(MPI) XC_LIBRARY = LibXC_v5 XC_LIB = -L$(XC_DIR)/lib -lxcf90 -lxc XC_COMPFLAGS = -I$(XC_DIR)/include # Set FFT library FFT_LIB=-lfftw3lmkl_rt FFT_OBJ=fft_fftw3.o # Full library call; remove scalapack if using dummy diag module # If using OpenMPI, use -lscalapack-openmpi instead. LIBS= -qmkl=sequential -lmkl_scalapack_lp64 -lmkl_blacs_$(WHICHMPI)_lp64 -liomp5 $(XC_LIB) # Compilation flags # NB for gcc10 you need to add -fallow-argument-mismatch COMPFLAGS= -xHOST -O3 -g $(OMPFLAGS) $(XC_COMPFLAGS) # Linking flags # Matrix multiplication kernel type MULT_KERN = defaultompGemm # Use dummy DiagModule or not DIAG_DUMMY = |
Build Conquest:
Code Block |
---|
#!/bin/bash BASE=$PWD source /opt/intel/compiler/2023.2.1/env/vars.sh export MPI=hpcx-2.18 export MPI=impi-2021.10.0 MPI=hpcx-2.18 if [[ "$MPI" =~ ^impi ]]; then source /opt/intel/mpi/2021.10.0/env/vars.sh export MPIFC=mpiifort export CC=mpiicc export FC=$MPIFC export WHICHMPI=intelmpi elif [[ "$MPI" =~ ^hpcx ]]; then module use <path>/$MPI/modulefiles module load hpcx export OMPI_CC=icc export OMPI_CXX=icpc export OMPI_FC=ifort export OMPI_F90=ifort export MPIFC=mpif90 export CC=mpicc export FC=mpif90 export WHICHMPI=openmpi fi cd src export MPI make clean make cd $BASE/bin mv Conquest Conquest-$MPI-j 16 |
Build error:
If you encounter a Fortran module error with pseudo_tm_info.f90
, modify src/Makefile as shown below.
...