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.

CMakeLists.txt 3.6 kB

10 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. include_directories(${PROJECT_SOURCE_DIR})
  2. include_directories(${PROJECT_BINARY_DIR})
  3. list (REMOVE_ITEM FLOAT_TYPES "BFLOAT16")
  4. list (REMOVE_ITEM FLOAT_TYPES "HFLOAT16")
  5. set(LAPACK_SOURCES
  6. potrf/potrf_U_single.c
  7. potrf/potrf_L_single.c
  8. lauum/lauum_U_single.c
  9. lauum/lauum_L_single.c
  10. )
  11. # add a 'z' to filename for complex version
  12. set(LAPACK_MANGLED_SOURCES
  13. getf2/getf2_k.c
  14. lauu2/lauu2_U.c
  15. lauu2/lauu2_L.c
  16. potf2/potf2_U.c
  17. potf2/potf2_L.c
  18. )
  19. # sources that need TRANS set
  20. # this has a 'z' version
  21. set(TRANS_SOURCES
  22. getrs/getrs_single.c
  23. )
  24. # sources that need UNIT set
  25. # these do NOT have a z version
  26. set(UNIT_SOURCES
  27. trtri/trtri_U_single.c
  28. trtri/trtri_L_single.c
  29. )
  30. # these have a 'z' version
  31. set(UNIT_SOURCES2
  32. trti2/trti2_U.c
  33. trti2/trti2_L.c
  34. )
  35. if (NOT RELAPACK_REPLACE)
  36. GenerateNamedObjects("${LAPACK_SOURCES}")
  37. GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" false "" "" false 3)
  38. else()
  39. GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" false "" "" false 3)
  40. endif()
  41. GenerateNamedObjects("laswp/generic/laswp_k_4.c" "" "laswp_plus" false "" "" false 3)
  42. GenerateNamedObjects("laswp/generic/laswp_k_4.c" "MINUS" "laswp_minus" false "" "" false 3)
  43. foreach (float_type ${FLOAT_TYPES})
  44. if (${float_type} STREQUAL "HALF")
  45. continue()
  46. endif()
  47. GenerateNamedObjects("getrf/getrf_single.c" "UNIT" "getrf_single" false "" "" false ${float_type})
  48. endforeach ()
  49. # dynamic_arch laswp needs arch specific code ?
  50. #foreach(TARGET_CORE ${DYNAMIC_CORE})
  51. # set(TSUFFIX "_${TARGET_CORE}")
  52. #
  53. #GenerateNamedObjects("laswp/generic/laswp_k_4.c" "" "laswp_plus" false "" ${TSUFFIX} false 3)
  54. #GenerateNamedObjects("laswp/generic/laswp_k_4.c" "MINUS" "laswp_minus" false "" ${TSUFFIX} false 3)
  55. #endforeach ()
  56. if (USE_THREAD)
  57. if (USE_OPENMP)
  58. set(GETRF_SRC getrf/getrf_parallel_omp.c)
  59. else ()
  60. set(GETRF_SRC getrf/getrf_parallel.c)
  61. endif ()
  62. # these do not have 'z' versions
  63. set(PARALLEL_SOURCES
  64. lauum/lauum_U_parallel.c
  65. lauum/lauum_L_parallel.c
  66. potrf/potrf_U_parallel.c
  67. potrf/potrf_L_parallel.c
  68. )
  69. # this has a z version
  70. list(APPEND TRANS_SOURCES
  71. getrs/getrs_parallel.c
  72. )
  73. # these do NOT have a z version
  74. list(APPEND UNIT_SOURCES
  75. trtri/trtri_U_parallel.c
  76. trtri/trtri_L_parallel.c
  77. )
  78. foreach (float_type ${FLOAT_TYPES})
  79. GenerateNamedObjects("${GETRF_SRC}" "UNIT" "getrf_parallel" false "" "" false ${float_type})
  80. endforeach()
  81. GenerateNamedObjects("${PARALLEL_SOURCES}")
  82. endif ()
  83. foreach (float_type ${FLOAT_TYPES})
  84. if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX")
  85. foreach (trans_src ${TRANS_SOURCES})
  86. string(REGEX MATCH "[a-z]/([a-z]+_)([a-z]+)" op_name ${trans_src})
  87. string(REPLACE "/" "/z" ztrans_src ${trans_src})
  88. GenerateNamedObjects("${ztrans_src}" "TRANS=1" "${CMAKE_MATCH_1}N_${CMAKE_MATCH_2}" false "" "" false ${float_type})
  89. GenerateNamedObjects("${ztrans_src}" "TRANS=2" "${CMAKE_MATCH_1}T_${CMAKE_MATCH_2}" false "" "" false ${float_type})
  90. GenerateNamedObjects("${ztrans_src}" "TRANS=3" "${CMAKE_MATCH_1}R_${CMAKE_MATCH_2}" false "" "" false ${float_type})
  91. GenerateNamedObjects("${ztrans_src}" "TRANS=4" "${CMAKE_MATCH_1}C_${CMAKE_MATCH_2}" false "" "" false ${float_type})
  92. endforeach ()
  93. else ()
  94. GenerateCombinationObjects("${TRANS_SOURCES}" "TRANS" "N" "" 4 "" false ${float_type})
  95. endif ()
  96. endforeach ()
  97. GenerateCombinationObjects("${UNIT_SOURCES}" "UNIT" "N" "" 4)
  98. GenerateCombinationObjects("${UNIT_SOURCES2}" "UNIT" "N" "" 0 "" "" 3)
  99. add_library(lapack OBJECT ${OPENBLAS_SRC})
  100. if (USE_OPENMP)
  101. target_link_libraries(lapack OpenMP::OpenMP_C)
  102. endif()