You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Makefile.power 4.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. ifdef USE_THREAD
  2. ifeq ($(USE_THREAD), 0)
  3. USE_OPENMP = 0
  4. else
  5. USE_OPENMP = 1
  6. endif
  7. else
  8. USE_OPENMP = 1
  9. endif
  10. ifeq ($(CORE), POWER10)
  11. ifneq ($(C_COMPILER), PGI)
  12. CCOMMON_OPT += -Ofast -mcpu=power10 -mtune=power10 -mvsx -fno-fast-math
  13. FCOMMON_OPT += -O2 -frecursive -mcpu=power10 -mtune=power10 -fno-fast-math
  14. endif
  15. endif
  16. ifeq ($(CORE), POWER9)
  17. ifneq ($(C_COMPILER), PGI)
  18. CCOMMON_OPT += -Ofast -mvsx -fno-fast-math
  19. ifeq ($(C_COMPILER), GCC)
  20. ifneq ($(GCCVERSIONGT4), 1)
  21. $(warning your compiler is too old to fully support POWER9, getting a newer version of gcc is recommended)
  22. CCOMMON_OPT += -mcpu=power8 -mtune=power8
  23. else
  24. CCOMMON_OPT += -mcpu=power9 -mtune=power9
  25. endif
  26. else
  27. CCOMMON_OPT += -mcpu=power9 -mtune=power9
  28. endif
  29. else
  30. CCOMMON_OPT += -fast -Mvect=simd -Mcache_align
  31. endif
  32. ifneq ($(F_COMPILER), PGI)
  33. FCOMMON_OPT += -O2 -frecursive -fno-fast-math
  34. ifeq ($(C_COMPILER), GCC)
  35. ifneq ($(GCCVERSIONGT4), 1)
  36. $(warning your compiler is too old to fully support POWER9, getting a newer version of gcc is recommended)
  37. FCOMMON_OPT += -mcpu=power8 -mtune=power8
  38. else
  39. FCOMMON_OPT += -mcpu=power9 -mtune=power9
  40. endif
  41. else
  42. FCOMMON_OPT += -mcpu=power9 -mtune=power9
  43. endif
  44. else
  45. FCOMMON_OPT += -O2 -Mrecursive
  46. endif
  47. endif
  48. ifeq ($(CORE), POWER8)
  49. ifneq ($(C_COMPILER), PGI)
  50. CCOMMON_OPT += -Ofast -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math
  51. else
  52. CCOMMON_OPT += -fast -Mvect=simd -Mcache_align
  53. endif
  54. ifneq ($(F_COMPILER), PGI)
  55. ifeq ($(OSNAME), AIX)
  56. FCOMMON_OPT += -O1 -frecursive -mcpu=power8 -mtune=power8 -fno-fast-math
  57. else
  58. FCOMMON_OPT += -O2 -frecursive -mcpu=power8 -mtune=power8 -fno-fast-math
  59. endif
  60. else
  61. FCOMMON_OPT += -O2 -Mrecursive
  62. endif
  63. endif
  64. ifeq ($(USE_OPENMP), 1)
  65. ifneq ($(C_COMPILER), PGI)
  66. CCOMMON_OPT += -DUSE_OPENMP -fopenmp
  67. else
  68. CCOMMON_OPT += -DUSE_OPENMP -mp
  69. endif
  70. ifneq ($(F_COMPILER), PGI)
  71. FCOMMON_OPT += -DUSE_OPENMP -fopenmp
  72. else
  73. FCOMMON_OPT += -DUSE_OPENMP -mp
  74. endif
  75. endif
  76. # workaround for C->FORTRAN ABI violation in LAPACKE
  77. ifeq ($(F_COMPILER), GFORTRAN)
  78. FCOMMON_OPT += -fno-optimize-sibling-calls
  79. endif
  80. FLAMEPATH = $(HOME)/flame/lib
  81. #ifeq ($(CORE), CELL)
  82. #CELL_SDK_ROOT = /opt/IBM/cell-sdk-1.1/sysroot/usr
  83. #SPU_CC = spu-gcc
  84. #EXTRALIB += -lspe
  85. #endif
  86. ifeq ($(OSNAME), Linux)
  87. ifdef BINARY64
  88. # COMPILER_PREFIX = powerpc64-linux-
  89. else
  90. # COMPILER_PREFIX = powerpc-linux-
  91. endif
  92. endif
  93. #Either uncomment below line or run make with `USE_MASS=1` to enable support of MASS library
  94. #USE_MASS = 1
  95. ifeq ($(USE_MASS), 1)
  96. # Path to MASS libs, change it if the libs are installed at any other location
  97. MASSPATH = /opt/ibm/xlmass/8.1.5/lib
  98. COMMON_OPT += -mveclibabi=mass -ftree-vectorize -funsafe-math-optimizations -DUSE_MASS
  99. EXTRALIB += -L$(MASSPATH) -lmass -lmassvp8 -lmass_simdp8
  100. endif
  101. ifdef BINARY64
  102. ifeq ($(OSNAME), AIX)
  103. CCOMMON_OPT += -mpowerpc64 -maix64
  104. ifeq ($(COMPILER_F77), g77)
  105. FCOMMON_OPT += -mpowerpc64 -maix64
  106. endif
  107. ifeq ($(F_COMPILER), GFORTRAN)
  108. FCOMMON_OPT += -mpowerpc64 -maix64
  109. endif
  110. ifeq ($(COMPILER_F77), xlf)
  111. FCOMMON_OPT += -q64
  112. endif
  113. ARFLAGS = -X 64
  114. ASFLAGS = -a64
  115. endif
  116. else
  117. ifeq ($(OSNAME), AIX)
  118. CCOMMON_OPT += -Wa,-a32
  119. ARFLAGS = -X 32
  120. ASFLAGS = -a32
  121. endif
  122. endif
  123. # CCOMMON_OPT += -maltivec -mabi=altivec
  124. LIBFLAME = -L$(FLAMEPATH) -llapack2flame -lflame-lapack -lflame-base $(LIBS)
  125. ifeq ($(OSNAME), Darwin)
  126. CCOMMON_OPT += -force_cpusubtype_ALL
  127. endif
  128. ifndef BINARY64
  129. ifeq ($(OSNAME), Linux)
  130. 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
  131. else
  132. ESSLPATH = -lxlf90_r
  133. endif
  134. LIBVECLIB = -framework VecLib
  135. ifndef SMP
  136. LIBATLAS = -L/usr/lib/atlas3.7.11 -lf77blas -latlas -lg2c -lm
  137. LIBESSL = -lessl $(ESSLPATH) ../../level1/others/libmisc.a -lm
  138. else
  139. LIBATLAS = -L/usr/lib/atlas3.7.11p -lptf77blas -latlas -lm -lpthread
  140. LIBESSL = -lesslsmp $(ESSLPATH) ../../level1/others/libmisc.a -lm
  141. endif
  142. else
  143. ifeq ($(OSNAME), Linux)
  144. 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
  145. else
  146. ESSLPATH = -lxlf90_r
  147. endif
  148. LIBVECLIB = /System/Library/Frameworks/vecLib.framework/Versions/Current/vecLib
  149. ifndef SMP
  150. LIBATLAS = -L/usr/lib64/atlas3.7.11 -lf77blas -latlas -lg2c -lm
  151. LIBESSL = -lessl $(ESSLPATH) -lm
  152. else
  153. LIBATLAS = -L/usr/lib64/atlas3.7.11p -lptf77blas -latlas -lm -lpthread
  154. LIBESSL = -lesslsmp $(ESSLPATH) -lxlsmp -lm
  155. endif
  156. endif