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 5.9 kB

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