From 969e2584dbd7a45531eac6b31159f84a9d97ca72 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 27 Aug 2020 21:12:31 +0100 Subject: [Minor] Sigh, another workaround for broken blas --- cmake/Openblas.cmake | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'cmake') diff --git a/cmake/Openblas.cmake b/cmake/Openblas.cmake index 69f065d8f..2155b2955 100644 --- a/cmake/Openblas.cmake +++ b/cmake/Openblas.cmake @@ -27,5 +27,38 @@ IF(WITH_BLAS) ELSE() ADD_COMPILE_OPTIONS(-DHAVE_CBLAS_H) ENDIF() + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/sgemm.c" " +#include +enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102 }; +enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112 }; +extern void cblas_sgemm(const enum CBLAS_ORDER Order, + const enum CBLAS_TRANSPOSE TA, + const enum CBLAS_TRANSPOSE TB, + const int M, const int N, const int K, + const float alpha, const float *A, const int lda, + const float *B, const int ldb, const float beta, + float *C, const int ldc); +int main(int argc, char **argv) +{ + cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 0, 0, 0, NULL, 0, + NULL, 0, 0, NULL, 0); + return 0; +} +") + try_compile(HAVE_CBLAS_SGEMM + ${CMAKE_CURRENT_BINARY_DIR} + "${CMAKE_CURRENT_BINARY_DIR}/sgemm.c" + COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} + LINK_LIBRARIES ${BLAS_REQUIRED_LIBRARIES} + OUTPUT_VARIABLE SGEMM_ERR) + + # Cmake is just brain damaged + #CHECK_LIBRARY_EXISTS(${BLAS_REQUIRED_LIBRARIES} cblas_sgemm "" HAVE_CBLAS_SGEMM) + if(HAVE_CBLAS_SGEMM) + MESSAGE(STATUS "Blas has CBLAS sgemm") + ADD_COMPILE_OPTIONS(-DHAVE_CBLAS_SGEMM) + else() + MESSAGE(STATUS "Blas has -NOT- CBLAS sgemm, use internal workaround: ${SGEMM_ERR}") + endif() ADD_COMPILE_OPTIONS(-DHAVE_CBLAS) ENDIF(WITH_BLAS) \ No newline at end of file -- cgit v1.2.3