forked from shedsaw/exciting-plus-rgvw-mod
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmake.inc.summit.ibm.cpu
133 lines (104 loc) · 4.64 KB
/
make.inc.summit.ibm.cpu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#==============================================================================
# Exciting-Plus make.inc file for Summit (OLCF) with IBM XL compilers
# Last edited: May 6, 2020 (WYP)
#==============================================================================
MAKE = make
COMPILER = ibm
# Compiler switch to turn on the preprocessor
CPP_OPTS = -qpreprocess
# Add your custom preprocessor defines here
#CPP_OPTS +=
# Common compile time options
F90_OPTS = $(CPP_OPTS)
# Add your common compile time options here
F90_OPTS += -qsuppress=1501-510 # Remove "compilation successful messages"
#==============================================================================
# MPI
#==============================================================================
F90 = mpifort
CC = mpicc
CXX = mpic++
MPI_CPP_OPTS = -WF,-qfpp,-D_MPI_
CPP_OPTS += $(MPI_CPP_OPTS)
#==============================================================================
# OpenMP
#==============================================================================
# These are passed at compile time and link time
# Don't forget to `export OMP_STACKSIZE=2G` at runtime
OMP_OPTS = -qsmp=omp:auto
#==============================================================================
# Serial compiler (for utilities)
#==============================================================================
F90SERIAL = xlf90_r
F90_OPTS_SERIAL = $(filter-out $(OMP_OPTS),$(filter-out $(MPI_CPP_OPTS),$(F90_OPTS)))
#==============================================================================
# Compiler and linker options
#==============================================================================
# Debugging
#F90_OPTS += -g
#F90_LINK_OPTS = $(F90_OPTS)
#EXE_SFX = dbg
# Debugging with extra checks
# (Don't forget to enable core dump generation using `ulimit -c unlimited`)
#F90_OPTS += -g -O0 -qsource -qcheck -qsigtrap -qstackprotect=all -qlinedebug -qfullpath -qtbtable=full -qflag=w:w
#F90_LINK_OPTS = $(F90_OPTS)
#EXE_SFX = dbgchk
# Optimization level 2 plus automatic ESSL, automatic OpenMP, loop unrolling,
# interprocedural analyzer
# Make sure to enable ESSL (see BLAS and LAPACK section)
F90_OPTS += -g2 -O2 -qipa -qarch=pwr9 -qtune=pwr9:smt4 -qunroll -qessl
F90_LINK_OPTS = $(F90_OPTS) -qpic
EXE_SFX = opt
# Profiling
#F90_OPTS += -pg -g2 -O2 -qipa -qarch=pwr9 -qtune=pwr9:smt4 -qunroll -qessl
# Make sure to enable ESSL (see BLAS and LAPACK section)
#F90_LINK_OPTS = $(F90_OPTS) -qpic
#EXE_SFX = prof
# Fully optimized build
# Note: With XL 16.1.1-3, '-Ofast' gives weird results
# (30 extra electrons in the ground state for La2CuO4)
# TODO: investigate whether newer versions still has this bug
# Make sure to enable ESSL (see BLAS and LAPACK section)
#F90_OPTS += -g2 -Ofast -qipa -qarch=pwr9 -qtune=pwr9:smt4 -qunroll -qessl
#F90_LINK_OPTS = $(F90_OPTS) -qpic
#EXE_SFX = fast
# Profiling, fully optimized
# Note: DO NOT USE, see above
#F90_OPTS += -pg -g2 -Ofast -qipa -qarch=pwr9 -qtune=pwr9:smt4 -qunroll -qessl
#F90_LINK_OPTS = $(F90_OPTS) -qpic
#EXE_SFX = fastprof
#==============================================================================
# BLAS and LAPACK
#==============================================================================
# Use IBM ESSL
# Make sure to `module load essl`
ESSL_PATH = ${OLCF_ESSL_ROOT}/lib64
LAPACK_LIB = -L$(ESSL_PATH) -lessl
#==============================================================================
# HDF5
#==============================================================================
# To disable, comment these three lines
# Make sure to `module load hdf5`
HDF5_INC = -I${OLCF_HDF5_ROOT}/include
HDF5_LIB = -L${OLCF_HDF5_ROOT}/lib -lhdf5_fortran -lhdf5_cpp -lhdf5_hl -lhdf5 -ldl
HDF5_CPP_OPTS = -WF,-qfpp,-D_HDF5_
CPP_OPTS += $(HDF5_CPP_OPTS)
F90_OPTS += $(HDF5_INC)
#==============================================================================
# Other libraries (retained here for historical purposes)
#==============================================================================
# ==- compile with libXC support ===
#CPP_OPTS := $(CPP_OPTS) -D_LIBXC_
#XC_LIB =
# ==- compile with NFFT support ===
#CPP_OPTS := $(CPP_OPTS) -D_NFFT_
#NFFT_INC = -I$(HOME)/local/include
#NFFT_LIB = $(HOME)/local/lib/libnfft3.a $(HOME)/local/lib/libfftw3.a
# === compile with Madness API ===
#CPP_OPTS := $(CPP_OPTS) -D_MAD_
#MADNESS_INC = -I$(HOME)/local/include
#MADNESS_LIB = -L$(HOME)/local/lib/ -lMADmra -lMADlinalg -lMADtensor -lMADmisc -lMADmuparser -lMADtinyxml -lMADworld -lmpichcxx -lstdc++
#==============================================================================
# List all libraries to link
#==============================================================================
LIBS = $(LAPACK_LIB) $(HDF5_LIB)