我正在尝试将BLAS++与OpenBLAS结合使用。在Linux上一切都很好,但是现在我想让我的库更加跨平台。
我有一个最小的CMakeLists.txt
cmake_minimum_required(VERSION 3.12)
project(test)
find_package(Git REQUIRED)
function(update_git_submodule dir)
execute_process(
COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive -- ${dir}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT)
if(NOT GIT_SUBMOD_RESULT EQUAL "0")
message(FATAL_ERROR "When updating submodule ${dir}")
endif()
endfunction()
set(BLASPP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/blaspp)
update_git_submodule(${BLASPP_DIR})
add_subdirectory(${BLASPP_DIR})
BLAS++是一个git子模块。它成功地克隆了CMake,而不是让BLAS++搜索任何BLAS实现。然而,问题在于它找不到OpenBLAS:
BLAS++ requires a BLAS library and none was found. Ensure that it is accessible in environment variables $CPATH, $LIBRARY_PATH, and $LD_LIBRARY_PATH.
我尝试在powershell中将所有变量都设置为share\cmake
文件夹,同时也将其设置为CMake变量,但没有任何效果。另外,当在BLA_VENDOR
中指定CMake时,它将找不到OpenBLAS。
下面是我对OpenBLAS所做的工作:我克隆了从github回购 (在实际项目之外),构建并安装了它。现在我有了CMake的构建目录,其中包含编译的OpenBLAS文件和C:\Program (X86)中的文件。在后者中,有一个文件夹share\cmake
,它包含所有的CMake脚本,包括OpenBLASConfig.cmake
,以便能够找到OpenBLAS。CMake现在必须找到那些脚本,但看起来并非如此。
问题在于我如何让CMake在C:\Program Files(x86)\OpenBLAS\share\cmake
中进行全局搜索
有什么想法吗?提前感谢!
编辑
--debug-find
打印以下内容:
Call Stack (most recent call first):
CMakeLists.txt:4 (find_package)
-- Found Git: C:/Program Files/Git/cmd/git.exe (found version "2.36.1.windows.1")
CMake Debug Log at CMakeLists.txt:4 (find_package):
find_package considered the following paths for FindGit.cmake:
The file was found at
C:/Program Files/CMake/share/cmake-3.23/Modules/FindGit.cmake
-- Using CMAKE_INSTALL_PREFIX = C:/Program Files (x86)/test
CMake Error at external/blaspp/CMakeLists.txt:97 (set_property):
set_property could not find CACHE variable CMAKE_BUILD_TYPE. Perhaps it
has not yet been created.
-- Looking for a CUDA compiler
-- Looking for a CUDA compiler - NOTFOUND
-- Not building CUDA support in BLAS++
-- Looking for HIP/ROCm
CMake Debug Log at external/blaspp/CMakeLists.txt:293 (find_package):
find_package considered the following paths for Findrocblas.cmake:
C:/Program Files/CMake/share/cmake-3.23/Modules/Findrocblas.cmake
The file was not found.
<PackageName>_ROOT CMake variable [CMAKE_FIND_USE_PACKAGE_ROOT_PATH].
none
CMAKE_PREFIX_PATH variable [CMAKE_FIND_USE_CMAKE_PATH].
none
CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH variables
[CMAKE_FIND_USE_CMAKE_PATH].
none
Env variable rocblas_DIR [CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH].
none
CMAKE_PREFIX_PATH env variable [CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH].
none
CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH env variables
[CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH].
none
Paths specified by the find_package HINTS option.
none
Standard system environment variables
[CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH].
C:/Program Files/PowerShell/7
C:/Windows/System32
C:/Windows
C:/Windows/System32/wbem
C:/Windows/System32/WindowsPowerShell/v1.0
C:/Windows/System32/OpenSSH
C:/Program Files (x86)/NVIDIA Corporation/PhysX/Common
C:/Program Files/NVIDIA Corporation/NVIDIA NvDLISR
C:/Program Files/Microsoft SQL Server/150/Tools/Binn
C:/Program Files/Git/cmd
C:/Program Files/dotnet
C:/Program Files/gs/gs9.56.1
C:/Program Files (x86)/TeX2img
C:/Program Files/Neovim
C:/Program Files/treesitter
C:/Program Files/ImageMagick-7.1.0-Q16-HDRI
C:/Program Files/LLVM
C:/texlive/2022/bin/win32
C:/Program Files/CMake
C:/Program Files/fzf
C:/Program Files (x86)/pkg-config
C:/Program Files (x86)/glib
C:/Program Files (x86)/gettext-runtime
C:/Users/steve/miniconda3
C:/Users/steve/miniconda3/Library/mingw-w64
C:/Users/steve/miniconda3/Library/usr
C:/Users/steve/miniconda3/Library
C:/Users/steve/miniconda3/Scripts
C:/Users/steve/scoop/shims
C:/Users/steve/AppData/Local/Microsoft/WindowsApps
C:/Users/steve/.dotnet/tools
CMake User Package Registry [CMAKE_FIND_USE_PACKAGE_REGISTRY].
none
CMake variables defined in the Platform file
[CMAKE_FIND_USE_CMAKE_SYSTEM_PATH].
C:/Program Files
C:/Program Files (x86)
C:/Program Files (x86)/test
CMake System Package Registry
[CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY].
none
Paths specified by the find_package PATHS option.
none
find_package considered the following locations for rocblas's Config
module:
C:/Program Files/PowerShell/7/rocblasConfig.cmake
C:/Program Files/PowerShell/7/rocblas-config.cmake
C:/Windows/System32/rocblasConfig.cmake
C:/Windows/System32/rocblas-config.cmake
C:/Windows/rocblasConfig.cmake
C:/Windows/rocblas-config.cmake
C:/Windows/System32/wbem/rocblasConfig.cmake
C:/Windows/System32/wbem/rocblas-config.cmake
C:/Windows/System32/WindowsPowerShell/v1.0/rocblasConfig.cmake
C:/Windows/System32/WindowsPowerShell/v1.0/rocblas-config.cmake
C:/Windows/System32/OpenSSH/rocblasConfig.cmake
C:/Windows/System32/OpenSSH/rocblas-config.cmake
C:/Program Files (x86)/NVIDIA Corporation/PhysX/Common/rocblasConfig.cmake
C:/Program Files (x86)/NVIDIA Corporation/PhysX/Common/rocblas-config.cmake
C:/Program Files/Microsoft SQL Server/150/Tools/Binn/rocblasConfig.cmake
C:/Program Files/Microsoft SQL Server/150/Tools/Binn/rocblas-config.cmake
C:/Program Files/Git/cmd/rocblasConfig.cmake
C:/Program Files/Git/cmd/rocblas-config.cmake
C:/Program Files/dotnet/rocblasConfig.cmake
C:/Program Files/dotnet/rocblas-config.cmake
C:/Program Files/gs/gs9.56.1/rocblasConfig.cmake
C:/Program Files/gs/gs9.56.1/rocblas-config.cmake
C:/Program Files (x86)/TeX2img/rocblasConfig.cmake
C:/Program Files (x86)/TeX2img/rocblas-config.cmake
C:/Program Files/Neovim/rocblasConfig.cmake
C:/Program Files/Neovim/rocblas-config.cmake
C:/Program Files/treesitter/rocblasConfig.cmake
C:/Program Files/treesitter/rocblas-config.cmake
C:/Program Files/ImageMagick-7.1.0-Q16-HDRI/rocblasConfig.cmake
C:/Program Files/ImageMagick-7.1.0-Q16-HDRI/rocblas-config.cmake
C:/Program Files/LLVM/rocblasConfig.cmake
C:/Program Files/LLVM/rocblas-config.cmake
C:/texlive/2022/bin/win32/rocblasConfig.cmake
C:/texlive/2022/bin/win32/rocblas-config.cmake
C:/Program Files/CMake/rocblasConfig.cmake
C:/Program Files/CMake/rocblas-config.cmake
C:/Program Files/fzf/rocblasConfig.cmake
C:/Program Files/fzf/rocblas-config.cmake
C:/Program Files (x86)/pkg-config/rocblasConfig.cmake
C:/Program Files (x86)/pkg-config/rocblas-config.cmake
C:/Program Files (x86)/glib/rocblasConfig.cmake
C:/Program Files (x86)/glib/rocblas-config.cmake
C:/Program Files (x86)/gettext-runtime/rocblasConfig.cmake
C:/Program Files (x86)/gettext-runtime/rocblas-config.cmake
C:/Users/steve/miniconda3/rocblasConfig.cmake
C:/Users/steve/miniconda3/rocblas-config.cmake
C:/Users/steve/miniconda3/Library/rocblasConfig.cmake
C:/Users/steve/miniconda3/Library/rocblas-config.cmake
C:/Users/steve/miniconda3/Library/cmake/rocblasConfig.cmake
C:/Users/steve/miniconda3/Library/cmake/rocblas-config.cmake
C:/Users/steve/miniconda3/Scripts/rocblasConfig.cmake
C:/Users/steve/miniconda3/Scripts/rocblas-config.cmake
C:/Users/steve/scoop/shims/rocblasConfig.cmake
C:/Users/steve/scoop/shims/rocblas-config.cmake
C:/Users/steve/AppData/Local/Microsoft/WindowsApps/rocblasConfig.cmake
C:/Users/steve/AppData/Local/Microsoft/WindowsApps/rocblas-config.cmake
C:/Program Files/rocblasConfig.cmake
C:/Program Files/rocblas-config.cmake
C:/Program Files/CMake/rocblasConfig.cmake
C:/Program Files/CMake/rocblas-config.cmake
C:/Program Files (x86)/rocblasConfig.cmake
C:/Program Files (x86)/rocblas-config.cmake
The file was not found.
-- Not building HIP/ROCm support in BLAS++
-- Found OpenMP_C: -openmp (found version "2.0")
-- Found OpenMP_CXX: -openmp (found version "2.0")
-- Found OpenMP: TRUE (found version "2.0")
CMake Debug Log at external/blaspp/CMakeLists.txt:329 (find_package):
find_package considered the following paths for FindOpenMP.cmake:
The file was found at
C:/Program Files/CMake/share/cmake-3.23/Modules/FindOpenMP.cmake
-- blaspp_id = ab91e06
-- Looking for BLAS libraries and options
Skipping threaded MKL for non-GNU, non-Intel compiler with OpenMP
←[1mdefault (no library)←[22m
libs:
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mIntel MKL lp64, sequential, gfortran←[22m
libs: -lmkl_gf_lp64 -lmkl_sequential -lmkl_core
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mIntel MKL ilp64, sequential, gfortran←[22m
libs: -lmkl_gf_ilp64 -lmkl_sequential -lmkl_core
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mIntel MKL lp64, sequential, ifort←[22m
libs: -lmkl_intel_lp64 -lmkl_sequential -lmkl_core
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mIntel MKL ilp64, sequential, ifort←[22m
libs: -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mIBM ESSL int (lp64), multi-threaded, with OpenMP←[22m
libs: -lesslsmp
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mIBM ESSL int64 (ilp64), multi-threaded, with OpenMP←[22m
libs: -lesslsmp6464
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mIBM ESSL int (lp64), sequential←[22m
libs: -lessl
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mIBM ESSL int64 (ilp64), sequential←[22m
libs: -lessl6464
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mOpenBLAS←[22m
libs: -lopenblas
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mApple Accelerate←[22m
libs: -framework Accelerate
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mgeneric←[22m
libs: -lblas
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mAMD ACML threaded←[22m
libs: -lacml_mp
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[1mAMD ACML sequential←[22m
libs: -lacml
-DBLAS_FORTRAN_ADD_ ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_LOWER ←[31m no (didn't link: routine not found)←[39m
-DBLAS_FORTRAN_UPPER ←[31m no (didn't link: routine not found)←[39m
←[31m BLAS library not found.←[39m
CMake Error at external/blaspp/CMakeLists.txt:374 (message):
BLAS++ requires a BLAS library and none was found. Ensure that it is
accessible in environment variables $CPATH, $LIBRARY_PATH, and
$LD_LIBRARY_PATH.
-- Configuring incomplete, errors occurred!
发布于 2022-09-15 19:18:54
BLAS++并不是在CMake包中寻找BLAS库,它只是在寻找一个可以链接到的库,例如,在Unix上,类似于-lblas
这样的库在编译器的库搜索路径中与libblas.so
或libblas.a
匹配。
您可以在调用CMake时对整个路径进行硬编码,类似于
cmake -DBLAS_LIBRARIES=/path/to/openblas/lib/libopenblas.so ..
我不太熟悉如何在Windows上的CMake中指定这一点。
顺便说一句,您可以通过设置←[31m
来消除color=no
的ANSI颜色代码。
https://stackoverflow.com/questions/72939981
复制相似问题