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.

system.cmake 13 kB

7 years ago
7 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528
  1. ##
  2. ## Author: Hank Anderson <hank@statease.com>
  3. ## Description: Ported from OpenBLAS/Makefile.system
  4. ##
  5. set(NETLIB_LAPACK_DIR "${PROJECT_SOURCE_DIR}/lapack-netlib")
  6. # System detection, via CMake.
  7. include("${PROJECT_SOURCE_DIR}/cmake/system_check.cmake")
  8. if(CMAKE_CROSSCOMPILING AND NOT DEFINED TARGET)
  9. # Detect target without running getarch
  10. if (ARM64)
  11. set(TARGET "ARMV8")
  12. elseif(ARM)
  13. set(TARGET "ARMV7") # TODO: Ask compiler which arch this is
  14. else()
  15. message(FATAL_ERROR "When cross compiling, a TARGET is required.")
  16. endif()
  17. endif()
  18. # Other files expect CORE, which is actually TARGET and will become TARGET_CORE for kernel build. Confused yet?
  19. # It seems we are meant to use TARGET as input and CORE internally as kernel.
  20. if(NOT DEFINED CORE AND DEFINED TARGET)
  21. set(CORE ${TARGET})
  22. endif()
  23. # TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
  24. if (DEFINED TARGET_CORE)
  25. set(TARGET ${TARGET_CORE})
  26. endif ()
  27. # Force fallbacks for 32bit
  28. if (DEFINED BINARY AND DEFINED TARGET AND BINARY EQUAL 32)
  29. message(STATUS "Compiling a ${BINARY}-bit binary.")
  30. set(NO_AVX 1)
  31. if (${TARGET} STREQUAL "HASWELL" OR ${TARGET} STREQUAL "SANDYBRIDGE" OR ${TARGET} STREQUAL "SKYLAKEX")
  32. set(TARGET "NEHALEM")
  33. endif ()
  34. if (${TARGET} STREQUAL "BULLDOZER" OR ${TARGET} STREQUAL "PILEDRIVER" OR ${TARGET} STREQUAL "ZEN")
  35. set(TARGET "BARCELONA")
  36. endif ()
  37. if (${TARGET} STREQUAL "ARMV8" OR ${TARGET} STREQUAL "CORTEXA57" OR ${TARGET} STREQUAL "CORTEXA53")
  38. set(TARGET "ARMV7")
  39. endif ()
  40. endif ()
  41. if (DEFINED TARGET)
  42. if (${TARGET} STREQUAL "SKYLAKEX" AND NOT NO_AVX512)
  43. set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=skylake-avx512")
  44. endif()
  45. if (${TARGET} STREQUAL "HASWELL" AND NOT NO_AVX2)
  46. if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
  47. execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
  48. if (${GCC_VERSION} VERSION_GREATER 4.7 OR ${GCC_VERSION} VERSION_EQUAL 4.7)
  49. set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mavx2")
  50. endif()
  51. elseif (${CMAKE_C_COMPILER_ID} STREQUAL "CLANG")
  52. set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mavx2")
  53. endif()
  54. endif()
  55. endif()
  56. if (DEFINED TARGET)
  57. message(STATUS "Targeting the ${TARGET} architecture.")
  58. set(GETARCH_FLAGS "-DFORCE_${TARGET}")
  59. endif ()
  60. if (INTERFACE64)
  61. message(STATUS "Using 64-bit integers.")
  62. set(GETARCH_FLAGS "${GETARCH_FLAGS} -DUSE64BITINT")
  63. endif ()
  64. if (NOT DEFINED GEMM_MULTITHREAD_THRESHOLD)
  65. set(GEMM_MULTITHREAD_THRESHOLD 4)
  66. endif ()
  67. message(STATUS "GEMM multithread threshold set to ${GEMM_MULTITHREAD_THRESHOLD}.")
  68. set(GETARCH_FLAGS "${GETARCH_FLAGS} -DGEMM_MULTITHREAD_THRESHOLD=${GEMM_MULTITHREAD_THRESHOLD}")
  69. if (NO_AVX)
  70. message(STATUS "Disabling Advanced Vector Extensions (AVX).")
  71. set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_AVX")
  72. endif ()
  73. if (NO_AVX2)
  74. message(STATUS "Disabling Advanced Vector Extensions 2 (AVX2).")
  75. set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_AVX2")
  76. endif ()
  77. if (CMAKE_BUILD_TYPE STREQUAL "Debug")
  78. set(GETARCH_FLAGS "${GETARCH_FLAGS} ${CMAKE_C_FLAGS_DEBUG}")
  79. endif ()
  80. if (NOT DEFINED NO_PARALLEL_MAKE)
  81. set(NO_PARALLEL_MAKE 0)
  82. endif ()
  83. set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_PARALLEL_MAKE=${NO_PARALLEL_MAKE}")
  84. if (CMAKE_C_COMPILER STREQUAL loongcc)
  85. set(GETARCH_FLAGS "${GETARCH_FLAGS} -static")
  86. endif ()
  87. #if don't use Fortran, it will only compile CBLAS.
  88. if (ONLY_CBLAS)
  89. set(NO_LAPACK 1)
  90. else ()
  91. set(ONLY_CBLAS 0)
  92. endif ()
  93. # N.B. this is NUM_THREAD in Makefile.system which is probably a bug -hpa
  94. if (NOT CMAKE_CROSSCOMPILING)
  95. if (NOT DEFINED NUM_CORES)
  96. include(ProcessorCount)
  97. ProcessorCount(NUM_CORES)
  98. endif()
  99. endif()
  100. if (NOT DEFINED NUM_PARALLEL)
  101. set(NUM_PARALLEL 1)
  102. endif()
  103. if (NOT DEFINED NUM_THREADS)
  104. if (DEFINED NUM_CORES AND NOT NUM_CORES EQUAL 0)
  105. # HT?
  106. set(NUM_THREADS ${NUM_CORES})
  107. else ()
  108. set(NUM_THREADS 0)
  109. endif ()
  110. endif()
  111. if (${NUM_THREADS} LESS 2)
  112. set(USE_THREAD 0)
  113. elseif(NOT DEFINED USE_THREAD)
  114. set(USE_THREAD 1)
  115. endif ()
  116. if (USE_THREAD)
  117. message(STATUS "Multi-threading enabled with ${NUM_THREADS} threads.")
  118. endif ()
  119. include("${PROJECT_SOURCE_DIR}/cmake/prebuild.cmake")
  120. if (NOT DEFINED NEED_PIC)
  121. set(NEED_PIC 1)
  122. endif ()
  123. # OS dependent settings
  124. include("${PROJECT_SOURCE_DIR}/cmake/os.cmake")
  125. # Architecture dependent settings
  126. include("${PROJECT_SOURCE_DIR}/cmake/arch.cmake")
  127. # C Compiler dependent settings
  128. include("${PROJECT_SOURCE_DIR}/cmake/cc.cmake")
  129. if (NOT NOFORTRAN)
  130. # Fortran Compiler dependent settings
  131. include("${PROJECT_SOURCE_DIR}/cmake/fc.cmake")
  132. endif ()
  133. if (BINARY64)
  134. if (INTERFACE64)
  135. # CCOMMON_OPT += -DUSE64BITINT
  136. endif ()
  137. endif ()
  138. if (NEED_PIC)
  139. if (${CMAKE_C_COMPILER} STREQUAL "IBM")
  140. set(CCOMMON_OPT "${CCOMMON_OPT} -qpic=large")
  141. else ()
  142. set(CCOMMON_OPT "${CCOMMON_OPT} -fPIC")
  143. endif ()
  144. if (NOT NOFORTRAN)
  145. if (${F_COMPILER} STREQUAL "SUN")
  146. set(FCOMMON_OPT "${FCOMMON_OPT} -pic")
  147. else ()
  148. set(FCOMMON_OPT "${FCOMMON_OPT} -fPIC")
  149. endif ()
  150. endif()
  151. endif ()
  152. if (DYNAMIC_ARCH)
  153. set(CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_ARCH")
  154. if (DYNAMIC_OLDER)
  155. set(CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_OLDER")
  156. endif ()
  157. endif ()
  158. if (DYNAMIC_LIST)
  159. set(CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_LIST")
  160. foreach(DCORE ${DYNAMIC_LIST})
  161. set(CCOMMON_OPT "${CCOMMON_OPT} -DDYN_${DCORE}")
  162. endforeach ()
  163. endif ()
  164. if (NO_LAPACK)
  165. set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_LAPACK")
  166. #Disable LAPACK C interface
  167. set(NO_LAPACKE 1)
  168. endif ()
  169. if (NO_LAPACKE)
  170. set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_LAPACKE")
  171. endif ()
  172. if (NO_AVX)
  173. set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX")
  174. endif ()
  175. if (X86)
  176. set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX")
  177. endif ()
  178. if (NO_AVX2)
  179. set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX2")
  180. endif ()
  181. if (USE_THREAD)
  182. # USE_SIMPLE_THREADED_LEVEL3 = 1
  183. # NO_AFFINITY = 1
  184. set(CCOMMON_OPT "${CCOMMON_OPT} -DSMP_SERVER")
  185. if (MIPS64)
  186. if (NOT ${CORE} STREQUAL "LOONGSON3B")
  187. set(USE_SIMPLE_THREADED_LEVEL3 1)
  188. endif ()
  189. endif ()
  190. if (BIGNUMA)
  191. set(CCOMMON_OPT "${CCOMMON_OPT} -DBIGNUMA")
  192. endif ()
  193. endif ()
  194. if (NO_WARMUP)
  195. set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_WARMUP")
  196. endif ()
  197. if (CONSISTENT_FPCSR)
  198. set(CCOMMON_OPT "${CCOMMON_OPT} -DCONSISTENT_FPCSR")
  199. endif ()
  200. if (USE_TLS)
  201. set(CCOMMON_OPT "${CCOMMON_OPT} -DUSE_TLS")
  202. endif ()
  203. # Only for development
  204. # set(CCOMMON_OPT "${CCOMMON_OPT} -DPARAMTEST")
  205. # set(CCOMMON_OPT "${CCOMMON_OPT} -DPREFETCHTEST")
  206. # set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_SWITCHING")
  207. # set(USE_PAPI 1)
  208. if (USE_PAPI)
  209. set(CCOMMON_OPT "${CCOMMON_OPT} -DUSE_PAPI")
  210. set(EXTRALIB "${EXTRALIB} -lpapi -lperfctr")
  211. endif ()
  212. if (DYNAMIC_THREADS)
  213. set(CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_THREADS")
  214. endif ()
  215. set(CCOMMON_OPT "${CCOMMON_OPT} -DMAX_CPU_NUMBER=${NUM_THREADS}")
  216. set(CCOMMON_OPT "${CCOMMON_OPT} -DMAX_PARALLEL_NUMBER=${NUM_PARALLEL}")
  217. if (USE_SIMPLE_THREADED_LEVEL3)
  218. set(CCOMMON_OPT "${CCOMMON_OPT} -DUSE_SIMPLE_THREADED_LEVEL3")
  219. endif ()
  220. if (DEFINED LIBNAMESUFFIX)
  221. set(LIBPREFIX "libopenblas_${LIBNAMESUFFIX}")
  222. else ()
  223. set(LIBPREFIX "libopenblas")
  224. endif ()
  225. if (NOT DEFINED SYMBOLPREFIX)
  226. set(SYMBOLPREFIX "")
  227. endif ()
  228. if (NOT DEFINED SYMBOLSUFFIX)
  229. set(SYMBOLSUFFIX "")
  230. endif ()
  231. set(KERNELDIR "${PROJECT_SOURCE_DIR}/kernel/${ARCH}")
  232. # TODO: need to convert these Makefiles
  233. # include ${PROJECT_SOURCE_DIR}/cmake/${ARCH}.cmake
  234. if (${CORE} STREQUAL "PPC440")
  235. set(CCOMMON_OPT "${CCOMMON_OPT} -DALLOC_QALLOC")
  236. endif ()
  237. if (${CORE} STREQUAL "PPC440FP2")
  238. set(STATIC_ALLOCATION 1)
  239. endif ()
  240. if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
  241. set(NO_AFFINITY 1)
  242. endif ()
  243. if (NOT X86_64 AND NOT X86 AND NOT ${CORE} STREQUAL "LOONGSON3B")
  244. set(NO_AFFINITY 1)
  245. endif ()
  246. if (NO_AFFINITY)
  247. set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AFFINITY")
  248. endif ()
  249. if (FUNCTION_PROFILE)
  250. set(CCOMMON_OPT "${CCOMMON_OPT} -DFUNCTION_PROFILE")
  251. endif ()
  252. if (HUGETLB_ALLOCATION)
  253. set(CCOMMON_OPT "${CCOMMON_OPT} -DALLOC_HUGETLB")
  254. endif ()
  255. if (DEFINED HUGETLBFILE_ALLOCATION)
  256. set(CCOMMON_OPT "${CCOMMON_OPT} -DALLOC_HUGETLBFILE -DHUGETLB_FILE_NAME=${HUGETLBFILE_ALLOCATION})")
  257. endif ()
  258. if (STATIC_ALLOCATION)
  259. set(CCOMMON_OPT "${CCOMMON_OPT} -DALLOC_STATIC")
  260. endif ()
  261. if (DEVICEDRIVER_ALLOCATION)
  262. set(CCOMMON_OPT "${CCOMMON_OPT} -DALLOC_DEVICEDRIVER -DDEVICEDRIVER_NAME=\"/dev/mapper\"")
  263. endif ()
  264. if (MIXED_MEMORY_ALLOCATION)
  265. set(CCOMMON_OPT "${CCOMMON_OPT} -DMIXED_MEMORY_ALLOCATION")
  266. endif ()
  267. set(CCOMMON_OPT "${CCOMMON_OPT} -DVERSION=\"\\\"${OpenBLAS_VERSION}\\\"\"")
  268. set(REVISION "-r${OpenBLAS_VERSION}")
  269. set(MAJOR_VERSION ${OpenBLAS_MAJOR_VERSION})
  270. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CCOMMON_OPT}")
  271. if(NOT MSVC)
  272. set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${CCOMMON_OPT}")
  273. endif()
  274. # TODO: not sure what PFLAGS is -hpa
  275. set(PFLAGS "${PFLAGS} ${CCOMMON_OPT} -I${TOPDIR} -DPROFILE ${COMMON_PROF}")
  276. set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${FCOMMON_OPT}")
  277. # TODO: not sure what FPFLAGS is -hpa
  278. set(FPFLAGS "${FPFLAGS} ${FCOMMON_OPT} ${COMMON_PROF}")
  279. #For LAPACK Fortran codes.
  280. set(LAPACK_FFLAGS "${LAPACK_FFLAGS} ${CMAKE_Fortran_FLAGS}")
  281. set(LAPACK_FPFLAGS "${LAPACK_FPFLAGS} ${FPFLAGS}")
  282. #Disable -fopenmp for LAPACK Fortran codes on Windows.
  283. if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
  284. set(FILTER_FLAGS "-fopenmp;-mp;-openmp;-xopenmp=parallel")
  285. foreach (FILTER_FLAG ${FILTER_FLAGS})
  286. string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS})
  287. string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS})
  288. endforeach ()
  289. endif ()
  290. if ("${F_COMPILER}" STREQUAL "GFORTRAN")
  291. # lapack-netlib is rife with uninitialized warnings -hpa
  292. set(LAPACK_FFLAGS "${LAPACK_FFLAGS} -Wno-maybe-uninitialized")
  293. endif ()
  294. set(LAPACK_CFLAGS "${CMAKE_C_CFLAGS} -DHAVE_LAPACK_CONFIG_H")
  295. if (INTERFACE64)
  296. set(LAPACK_CFLAGS "${LAPACK_CFLAGS} -DLAPACK_ILP64")
  297. endif ()
  298. if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
  299. set(LAPACK_CFLAGS "${LAPACK_CFLAGS} -DOPENBLAS_OS_WINDOWS")
  300. endif ()
  301. if (${CMAKE_C_COMPILER} STREQUAL "LSB" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
  302. set(LAPACK_CFLAGS "${LAPACK_CFLAGS} -DLAPACK_COMPLEX_STRUCTURE")
  303. endif ()
  304. if (NOT DEFINED SUFFIX)
  305. set(SUFFIX o)
  306. endif ()
  307. if (NOT DEFINED PSUFFIX)
  308. set(PSUFFIX po)
  309. endif ()
  310. if (NOT DEFINED LIBSUFFIX)
  311. set(LIBSUFFIX a)
  312. endif ()
  313. if (DYNAMIC_ARCH)
  314. if (USE_THREAD)
  315. set(LIBNAME "${LIBPREFIX}p${REVISION}.${LIBSUFFIX}")
  316. set(LIBNAME_P "${LIBPREFIX}p${REVISION}_p.${LIBSUFFIX}")
  317. else ()
  318. set(LIBNAME "${LIBPREFIX}${REVISION}.${LIBSUFFIX}")
  319. set(LIBNAME_P "${LIBPREFIX}${REVISION}_p.${LIBSUFFIX}")
  320. endif ()
  321. else ()
  322. if (USE_THREAD)
  323. set(LIBNAME "${LIBPREFIX}_${LIBCORE}p${REVISION}.${LIBSUFFIX}")
  324. set(LIBNAME_P "${LIBPREFIX}_${LIBCORE}p${REVISION}_p.${LIBSUFFIX}")
  325. else ()
  326. set(LIBNAME "${LIBPREFIX}_${LIBCORE}${REVISION}.${LIBSUFFIX}")
  327. set(LIBNAME_P "${LIBPREFIX}_${LIBCORE}${REVISION}_p.${LIBSUFFIX}")
  328. endif ()
  329. endif ()
  330. set(LIBDLLNAME "${LIBPREFIX}.dll")
  331. set(LIBSONAME "${LIBNAME}.${LIBSUFFIX}.so")
  332. set(LIBDYNNAME "${LIBNAME}.${LIBSUFFIX}.dylib")
  333. set(LIBDEFNAME "${LIBNAME}.${LIBSUFFIX}.def")
  334. set(LIBEXPNAME "${LIBNAME}.${LIBSUFFIX}.exp")
  335. set(LIBZIPNAME "${LIBNAME}.${LIBSUFFIX}.zip")
  336. set(LIBS "${PROJECT_SOURCE_DIR}/${LIBNAME}")
  337. set(LIBS_P "${PROJECT_SOURCE_DIR}/${LIBNAME_P}")
  338. set(LIB_COMPONENTS BLAS)
  339. if (NOT NO_CBLAS)
  340. set(LIB_COMPONENTS "${LIB_COMPONENTS} CBLAS")
  341. endif ()
  342. if (NOT NO_LAPACK)
  343. set(LIB_COMPONENTS "${LIB_COMPONENTS} LAPACK")
  344. if (NOT NO_LAPACKE)
  345. set(LIB_COMPONENTS "${LIB_COMPONENTS} LAPACKE")
  346. endif ()
  347. if (BUILD_RELAPACK)
  348. set(LIB_COMPONENTS "${LIB_COMPONENTS} ReLAPACK")
  349. endif ()
  350. endif ()
  351. if (ONLY_CBLAS)
  352. set(LIB_COMPONENTS CBLAS)
  353. endif ()
  354. # For GEMM3M
  355. set(USE_GEMM3M 0)
  356. if (DEFINED ARCH)
  357. if (X86 OR X86_64 OR ${ARCH} STREQUAL "ia64" OR MIPS64)
  358. set(USE_GEMM3M 1)
  359. endif ()
  360. if (${CORE} STREQUAL "generic")
  361. set(USE_GEMM3M 0)
  362. endif ()
  363. endif ()
  364. #export OSNAME
  365. #export ARCH
  366. #export CORE
  367. #export LIBCORE
  368. #export PGCPATH
  369. #export CONFIG
  370. #export CC
  371. #export FC
  372. #export BU
  373. #export FU
  374. #export NEED2UNDERSCORES
  375. #export USE_THREAD
  376. #export NUM_THREADS
  377. #export NUM_CORES
  378. #export SMP
  379. #export MAKEFILE_RULE
  380. #export NEED_PIC
  381. #export BINARY
  382. #export BINARY32
  383. #export BINARY64
  384. #export F_COMPILER
  385. #export C_COMPILER
  386. #export USE_OPENMP
  387. #export CROSS
  388. #export CROSS_SUFFIX
  389. #export NOFORTRAN
  390. #export NO_FBLAS
  391. #export EXTRALIB
  392. #export CEXTRALIB
  393. #export FEXTRALIB
  394. #export HAVE_SSE
  395. #export HAVE_SSE2
  396. #export HAVE_SSE3
  397. #export HAVE_SSSE3
  398. #export HAVE_SSE4_1
  399. #export HAVE_SSE4_2
  400. #export HAVE_SSE4A
  401. #export HAVE_SSE5
  402. #export HAVE_AVX
  403. #export HAVE_VFP
  404. #export HAVE_VFPV3
  405. #export HAVE_VFPV4
  406. #export HAVE_NEON
  407. #export KERNELDIR
  408. #export FUNCTION_PROFILE
  409. #export TARGET_CORE
  410. #
  411. #export SGEMM_UNROLL_M
  412. #export SGEMM_UNROLL_N
  413. #export DGEMM_UNROLL_M
  414. #export DGEMM_UNROLL_N
  415. #export QGEMM_UNROLL_M
  416. #export QGEMM_UNROLL_N
  417. #export CGEMM_UNROLL_M
  418. #export CGEMM_UNROLL_N
  419. #export ZGEMM_UNROLL_M
  420. #export ZGEMM_UNROLL_N
  421. #export XGEMM_UNROLL_M
  422. #export XGEMM_UNROLL_N
  423. #export CGEMM3M_UNROLL_M
  424. #export CGEMM3M_UNROLL_N
  425. #export ZGEMM3M_UNROLL_M
  426. #export ZGEMM3M_UNROLL_N
  427. #export XGEMM3M_UNROLL_M
  428. #export XGEMM3M_UNROLL_N
  429. #if (USE_CUDA)
  430. # export CUDADIR
  431. # export CUCC
  432. # export CUFLAGS
  433. # export CULIB
  434. #endif