我正在尝试编译this code,但是在构建文件夹中运行cmake ..
时,出现消息:
-寻找Fortran sgemm-寻找Fortran sgemm-找不到-寻找pthread.h-寻找pthread.h-找到-执行测试CMAKE_HAVE_LIBC_PTHREAD-执行测试CMAKE_HAVE_LIBC_PTHREAD-成功-找到的线程:TRUE-寻找Fortran dgemm-寻找Fortran dgemm-找到-找到了BLAS:/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Accelerate.framework-寻找Fortran Cheev-寻找Fortran Cheev-找到-找到具有LAPACK API的库。
显示CMake无法找到sgemm
LAPACK例程。这很奇怪,因为后来CMake说它已经通过Accelerate Framework找到了BLAS和LAPACK。
我的环境是:
并且编译器是通过HomeBrew安装的GNU GCC 9.3.0:
/usr/local/bin/gcc-9
/usr/local/bin/gfortran
如果能帮助我知道问题出在哪里以及如何解决,我将不胜感激。
一个可能的原因可能是以下原因:
查看您所引用的存储库中的CMakeLists.txt
,有关Accelerate Framework的整个部分均commented out:
# if(APPLE)
# # message(STATUS "Trying to find Accelerate library")
# # find_library(BLAS_LIBRARIES Accelerate HINTS /System/Library/Frameworks/Accelerate.framework)
# # MARK_AS_ADVANCED(BLAS_LIBRARIES)
# # set(BLAS_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -framework accelerate")
# # find_path(LAPACK_INCLUDE_DIRS
# # NAMES clapack.h
# # PATHS ${BLAS_INCLUDE_DIRS}
# # NO_DEFAULT_PATH
# # )
# # set(LAPACK_HEADER ${LAPACK_INCLUDE_DIRS}/clapack.h)
# # set(LAPACK_SUFFIX "_")
# # set(LAPACK_PREFIX)
# # message(STATUS "Using Accelerate framework on macOS")
# message("using the local blas library")
# # option(BLAS_VERBOSE "Print some additional information during BLAS libraries detection" ON)
# set(BLAS_DIR "./mathlibs/src/blas/")
# set(BLA_VENDOR "Generic")
# set(ACCELERATE_LIBS "-framework Accelerate")
# BLAS_Accelerate_LIBRARY:FILEPATH=/System/Library/Frameworks/Accelerate.framework
一种替代解决方案可能是尝试使用OpenBLAS的Homebrew
版本编译代码。