ifdef USE_THREAD ifeq ($(USE_THREAD), 0) USE_OPENMP = 0 else USE_OPENMP = 1 endif else USE_OPENMP = 1 endif ifeq ($(CORE), POWER10) ifneq ($(C_COMPILER), PGI) CCOMMON_OPT += -Ofast -mcpu=power10 -mtune=power10 -mvsx -fno-fast-math ifeq ($(F_COMPILER), IBM) FCOMMON_OPT += -O2 -qrecur -qnosave else FCOMMON_OPT += -O2 -frecursive -mcpu=power10 -mtune=power10 -fno-fast-math endif endif endif ifeq ($(CORE), POWER9) ifneq ($(C_COMPILER), PGI) CCOMMON_OPT += -Ofast -mvsx -fno-fast-math ifeq ($(C_COMPILER), GCC) ifneq ($(GCCVERSIONGT4), 1) $(warning your compiler is too old to fully support POWER9, getting a newer version of gcc is recommended) CCOMMON_OPT += -mcpu=power8 -mtune=power8 else CCOMMON_OPT += -mcpu=power9 -mtune=power9 endif else CCOMMON_OPT += -mcpu=power9 -mtune=power9 endif else CCOMMON_OPT += -fast -Mvect=simd -Mcache_align endif ifneq ($(F_COMPILER), PGI) ifeq ($(F_COMPILER), IBM) FCOMMON_OPT += -O2 -qrecur -qnosave else FCOMMON_OPT += -O2 -frecursive -fno-fast-math endif ifeq ($(C_COMPILER), GCC) ifneq ($(GCCVERSIONGT4), 1) $(warning your compiler is too old to fully support POWER9, getting a newer version of gcc is recommended) FCOMMON_OPT += -mcpu=power8 -mtune=power8 else FCOMMON_OPT += -mcpu=power9 -mtune=power9 endif else FCOMMON_OPT += -mcpu=power9 -mtune=power9 endif else FCOMMON_OPT += -O2 -Mrecursive endif endif ifeq ($(CORE), POWER8) ifneq ($(C_COMPILER), PGI) CCOMMON_OPT += -Ofast -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math else CCOMMON_OPT += -fast -Mvect=simd -Mcache_align endif ifneq ($(F_COMPILER), PGI) ifeq ($(OSNAME), AIX) ifeq ($(F_COMPILER), IBM) FCOMMON_OPT += -O2 -qrecur -qnosave else FCOMMON_OPT += -O1 -frecursive -mcpu=power8 -mtune=power8 -fno-fast-math endif else FCOMMON_OPT += -O2 -frecursive -mcpu=power8 -mtune=power8 -fno-fast-math endif else FCOMMON_OPT += -O2 -Mrecursive endif endif ifeq ($(USE_OPENMP), 1) ifneq ($(C_COMPILER), PGI) CCOMMON_OPT += -DUSE_OPENMP -fopenmp else CCOMMON_OPT += -DUSE_OPENMP -mp endif ifneq ($(F_COMPILER), PGI) FCOMMON_OPT += -DUSE_OPENMP -fopenmp else FCOMMON_OPT += -DUSE_OPENMP -mp endif endif # workaround for C->FORTRAN ABI violation in LAPACKE ifeq ($(F_COMPILER), GFORTRAN) FCOMMON_OPT += -fno-optimize-sibling-calls endif FLAMEPATH = $(HOME)/flame/lib #ifeq ($(CORE), CELL) #CELL_SDK_ROOT = /opt/IBM/cell-sdk-1.1/sysroot/usr #SPU_CC = spu-gcc #EXTRALIB += -lspe #endif ifeq ($(OSNAME), Linux) ifdef BINARY64 # COMPILER_PREFIX = powerpc64-linux- else # COMPILER_PREFIX = powerpc-linux- endif endif #Either uncomment below line or run make with `USE_MASS=1` to enable support of MASS library #USE_MASS = 1 ifeq ($(USE_MASS), 1) # Path to MASS libs, change it if the libs are installed at any other location MASSPATH = /opt/ibm/xlmass/8.1.5/lib COMMON_OPT += -mveclibabi=mass -ftree-vectorize -funsafe-math-optimizations -DUSE_MASS EXTRALIB += -L$(MASSPATH) -lmass -lmassvp8 -lmass_simdp8 endif ifdef BINARY64 ifeq ($(OSNAME), AIX) CCOMMON_OPT += -mpowerpc64 -maix64 ifeq ($(COMPILER_F77), g77) FCOMMON_OPT += -mpowerpc64 -maix64 endif ifeq ($(F_COMPILER), GFORTRAN) FCOMMON_OPT += -mpowerpc64 -maix64 endif ifeq ($(COMPILER_F77), xlf) FCOMMON_OPT += -q64 endif ARFLAGS = -X 64 ASFLAGS = -a64 endif else ifeq ($(OSNAME), AIX) CCOMMON_OPT += -Wa,-a32 ARFLAGS = -X 32 ASFLAGS = -a32 endif endif # CCOMMON_OPT += -maltivec -mabi=altivec LIBFLAME = -L$(FLAMEPATH) -llapack2flame -lflame-lapack -lflame-base $(LIBS) ifeq ($(OSNAME), Darwin) CCOMMON_OPT += -force_cpusubtype_ALL endif ifndef BINARY64 ifeq ($(OSNAME), Linux) ESSLPATH = -L/opt/ibmcmp/lib -L/opt/ibmcmp/xlf/11.1/lib -Wl,-rpath,/opt/ibmcmp/lib -Wl,-rpath,/opt/ibmcmp/xlf/11.1/lib -lxlf90_r -lxlomp_ser -lxlfmath -lxl -lpthread else ESSLPATH = -lxlf90_r endif LIBVECLIB = -framework VecLib ifndef SMP LIBATLAS = -L/usr/lib/atlas3.7.11 -lf77blas -latlas -lg2c -lm LIBESSL = -lessl $(ESSLPATH) ../../level1/others/libmisc.a -lm else LIBATLAS = -L/usr/lib/atlas3.7.11p -lptf77blas -latlas -lm -lpthread LIBESSL = -lesslsmp $(ESSLPATH) ../../level1/others/libmisc.a -lm endif else ifeq ($(OSNAME), Linux) ESSLPATH = -L/opt/ibmcmp/lib64 -Wl,-rpath,/opt/ibmcmp/lib64 -L/opt/ibmcmp/xlf/11.1/lib64 -Wl,-rpath,/opt/ibmcmp/xlf/11.1/lib64 -lxlf90_r -lxlomp_ser else ESSLPATH = -lxlf90_r endif LIBVECLIB = /System/Library/Frameworks/vecLib.framework/Versions/Current/vecLib ifndef SMP LIBATLAS = -L/usr/lib64/atlas3.7.11 -lf77blas -latlas -lg2c -lm LIBESSL = -lessl $(ESSLPATH) -lm else LIBATLAS = -L/usr/lib64/atlas3.7.11p -lptf77blas -latlas -lm -lpthread LIBESSL = -lesslsmp $(ESSLPATH) -lxlsmp -lm endif endif