Просмотр исходного кода

Find{BLAS,LAPACK}: Add support for Elbrus Math Library

http://mossigplan.acm.org/EML_introduction_engl.pdf
Igor S. Gerasimov 5 лет назад
Родитель
Сommit
d6df83a690
2 измененных файлов с 59 добавлено и 0 удалено
  1. 30 0
      Modules/FindBLAS.cmake
  2. 29 0
      Modules/FindLAPACK.cmake

+ 30 - 0
Modules/FindBLAS.cmake

@@ -53,6 +53,8 @@ The following variables may be set to influence this module's behavior:
   * ``Arm_mp``
   * ``Arm_ilp64``
   * ``Arm_ilp64_mp``
+  * ``EML``
+  * ``EML_mt``
   * ``Generic``
 
   .. versionadded:: 3.6
@@ -74,6 +76,9 @@ The following variables may be set to influence this module's behavior:
   .. versionadded:: 3.19
     ``FlexiBLAS`` support.
 
+  .. versionadded:: 3.20
+    Elbrus Math Library support (``EML``, ``EML_mt``).
+
 ``BLA_F95``
   if ``ON`` tries to find the BLAS95 interfaces
 
@@ -983,6 +988,31 @@ if(BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
   endif()
 endif()
 
+# Elbrus Math Library?
+if(BLA_VENDOR MATCHES "EML" OR BLA_VENDOR STREQUAL "All")
+
+   set(BLAS_EML_LIB "eml")
+
+   # Check for OpenMP support, VIA BLA_VENDOR of eml_mt
+   if(BLA_VENDOR MATCHES "_mt")
+     set(BLAS_EML_LIB "${BLAS_EML_LIB}_mt")
+   endif()
+
+   if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${BLAS_EML_LIB}"
+      ""
+      ""
+      ""
+      )
+  endif()
+
+endif()
+
 # Generic BLAS library?
 if(BLA_VENDOR STREQUAL "Generic" OR BLA_VENDOR STREQUAL "All")
   if(NOT BLAS_LIBRARIES)

+ 29 - 0
Modules/FindLAPACK.cmake

@@ -43,6 +43,8 @@ The following variables may be set to influence this module's behavior:
   * ``Arm_mp``
   * ``Arm_ilp64``
   * ``Arm_ilp64_mp``
+  * ``EML``
+  * ``EML_mt``
   * ``Generic``
 
   .. versionadded:: 3.6
@@ -64,6 +66,9 @@ The following variables may be set to influence this module's behavior:
   .. versionadded:: 3.19
     ``FlexiBLAS`` support.
 
+  .. versionadded:: 3.20
+    Elbrus Math Library support (``EML``, ``EML_mt``).
+
 ``BLA_F95``
   if ``ON`` tries to find the BLAS95/LAPACK95 interfaces
 
@@ -515,6 +520,30 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE)
     )
   endif()
 
+  # Elbrus Math Library?
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR MATCHES "EML" OR BLA_VENDOR STREQUAL "All"))
+
+    set(LAPACK_EML_LIB "eml")
+
+    # Check for OpenMP support, VIA BLA_VENDOR of eml_mt
+    if(BLA_VENDOR MATCHES "_mt")
+     set(LAPACK_EML_LIB "${LAPACK_EML_LIB}_mt")
+    endif()
+
+    check_lapack_libraries(
+      LAPACK_LIBRARIES
+      LAPACK
+      cheev
+      ""
+      "${LAPACK_EML_LIB}"
+      ""
+      ""
+      ""
+      "${BLAS_LIBRARIES}"
+    )
+  endif()
+
   # Generic LAPACK library?
   if(NOT LAPACK_LIBRARIES
       AND (BLA_VENDOR STREQUAL "Generic"