Compiling SIESTA 3.2 on ARCHER
Instructions for compiling the SIESTA code on ARCHER (Cray XC30, Intel Xeon)
Module setup
Swap to the Intel compiler
module swap PrgEnv-cray PrgEnv-intel
Load the NetCDF and FFTW 3 modules:
module add cray-netcdf module add fftw
Configure the build
Set the compiler commands
export FC=ftn export MPIFC=ftn export FC_SERIAL=ifort
Configure the package:
cd siesta-3.2/Obj sh ../Src/obj_setup.sh
Create an arch.make file in Obj with the following content:
# This file is part of the SIESTA package.
#
# Copyright (c) Fundacion General Universidad Autonoma de Madrid:
# E.Artacho, J.Gale, A.Garcia, J.Junquera, P.Ordejon, D.Sanchez-Portal
# and J.M.Soler, 1996- .
#
# Use of this software constitutes agreement with the full conditions
# given in the SIESTA license, as signed by all legitimate users.
#
SIESTA_ARCH=archer-phase1-cray-xc30-intel-mpi
#
# For ARCHER Cray XC30 using the Intel Complier.
# On ARCHER this is compiled with the Intel compiler modules loaded and
# the NetCDF module loaded too.
#
FC=ftn
FPP=fpp
FC_ASIS=$(FC)
#
FFLAGS=-O3 -I$(MKLROOT)/include/intel64/lp64 -I$(MKLROOT)/include
FFLAGS_DEBUG= -g -O0
RANLIB=echo
COMP_LIBS=
#
NETCDF_LIBS=
NETCDF_INTERFACE=
FPPFLAGS_CDF=
#
KINDS=4 8
MPI_INTERFACE=libmpi_f90.a
MPI_LIBS=
MPI_INCLUDE=-I.
INCFLAGS=-I../Src/MPI/
FPPFLAGS_MPI=-DMPI -DFC_HAVE_FLUSH -DFC_HAVE_ABORT -DCDF
#
LIBS= $(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a $(MKLROOT)/lib/intel64/libmkl_blacs_intelmpi_lp64.a -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a $(MKLROOT)/lib/intel
64/libmkl_core.a $(MKLROOT)/lib/intel64/libmkl_sequential.a -Wl,--end-group
SYS=nag
DEFS= $(DEFS_CDF) $(DEFS_MPI)
FPPFLAGS= $(FPPFLAGS_CDF) $(FPPFLAGS_MPI)
#
#
# Important
# Compile atom.f and electrostatic.f without optimization.
# Make sure that the dependency is explicit, so that these
# lines work with VPATH
#
atom.o: atom.f
$(FC) -c $(FFLAGS_DEBUG) $<
#
electrostatic.o: electrostatic.f
$(FC) -c $(FFLAGS_DEBUG) $<
#
.F.o:
$(FPP) $(FPPFLAGS) $< $*.f ; mv $*.f aux_$*.f
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) -o $*.o aux_$*.f
rm -f aux_$*.f
.f.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $<
.F90.o:
$(FPP) $(FPPFLAGS) $< $*.f ; mv $*.f aux_$*.f90
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) -o $*.o aux_$*.f90
rm -f aux_$*.f90
.f90.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $<
#
Build the package
Then build the package:
make


