CMake在macOS上找不到LAPACK sgemm

问题描述 投票:0回答:1

我正在尝试编译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。

我的环境是:

  • CMake 3.17.0
  • macOS Catalina 10.15.4

并且编译器是通过HomeBrew安装的GNU GCC 9.3.0:

  • /usr/local/bin/gcc-9
  • /usr/local/bin/gfortran

如果能帮助我知道问题出在哪里以及如何解决,我将不胜感激。

P.S。相关讨论/代码hereherehere

macos cmake lapack blas accelerate-framework
1个回答
0
投票

一个可能的原因可能是以下原因:

查看您所引用的存储库中的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版本编译代码。

© www.soinside.com 2019 - 2024. All rights reserved.