فهرست منبع

Find{BLAS,LAPACK}: Add AOCL BLIS/libFLAME

The AMD Optimizing CPU Libraries (AOCL) provide forks of BLIS and
libFLAME that are optimized for AMD "Zen" core architectures.

Closes: #23605
Cordell Bloor 3 سال پیش
والد
کامیت
272fe88ac6
2فایلهای تغییر یافته به همراه60 افزوده شده و 0 حذف شده
  1. 37 0
      Modules/FindBLAS.cmake
  2. 23 0
      Modules/FindLAPACK.cmake

+ 37 - 0
Modules/FindBLAS.cmake

@@ -93,6 +93,11 @@ BLAS/LAPACK Vendors
 ``ACML``, ``ACML_MP``, ``ACML_GPU``
   AMD Core Math Library
 
+``AOCL``, ``AOCL_mt``
+  .. versionadded:: 3.27
+
+  AMD Optimizing CPU Libraries
+
 ``Apple``, ``NAS``
   Apple BLAS (Accelerate), and Apple NAS (vecLib)
 
@@ -848,6 +853,38 @@ if(BLA_VENDOR STREQUAL "FLAME" OR BLA_VENDOR STREQUAL "All")
   unset(_blas_flame_lib)
 endif()
 
+# AOCL's blis library? (https://developer.amd.com/amd-aocl/)
+if(BLA_VENDOR MATCHES "AOCL" OR BLA_VENDOR STREQUAL "All")
+  set(_blas_aocl_lib "blis")
+
+  if(_blas_sizeof_integer EQUAL 8)
+    set(_blas_aocl_subdir "ILP64")
+  else()
+    set(_blas_aocl_subdir "LP64")
+  endif()
+
+  # Check for multi-threaded support
+  if(BLA_VENDOR MATCHES "_mt")
+    string(APPEND _blas_aocl_lib "-mt")
+  endif()
+
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${_blas_aocl_lib}"
+      ""
+      ""
+      "${_blas_aocl_subdir}"
+      )
+  endif()
+
+  unset(_blas_aocl_lib)
+  unset(_blas_aocl_subdir)
+endif()
+
 # BLAS in the ATLAS library? (http://math-atlas.sourceforge.net/)
 if(BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All")
   if(NOT BLAS_LIBRARIES)

+ 23 - 0
Modules/FindLAPACK.cmake

@@ -561,6 +561,29 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE)
     endif()
   endif()
 
+  # AOCL? (https://developer.amd.com/amd-aocl/)
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR MATCHES "AOCL" OR BLA_VENDOR STREQUAL "All"))
+    if(_lapack_sizeof_integer EQUAL 8)
+      set(_lapack_aocl_subdir "ILP64")
+    else()
+      set(_lapack_aocl_subdir "LP64")
+    endif()
+
+    check_lapack_libraries(
+      LAPACK_LIBRARIES
+      LAPACK
+      cheev
+      ""
+      "flame"
+      "-fopenmp"
+      ""
+      "${_lapack_aocl_subdir}"
+      "${BLAS_LIBRARIES}"
+    )
+    unset(_lapack_aocl_subdir)
+  endif()
+
   # LAPACK in SCSL library? (SGI/Cray Scientific Library)
   if(NOT LAPACK_LIBRARIES
       AND (BLA_VENDOR MATCHES "SCSL" OR BLA_VENDOR STREQUAL "All"))