Compile Eigen + Intel MKL with CMake
Compile Eigen + Intel MKL with CMake
我想与eigen3一起使用英特尔MKL库(包括pardiso求解器)。当我手动指定CMAKE中的编译器选项时,我会工作(因为我遵循了Intel Link Line Advisor)。但是我知道通过FindBLAS.cmake
以及BLA_VENDOR
环境变量有一种预先区分的方法,尤其是使用EIGEN修改的FindBLAS.cmake
。只有我一直坚持下去。我应该如何写我的CMakeLists.txt
?
我应该强调使用群集上的最新eigen3版本,因此请在我的家居中"安装"它。同样只使用
cmake /path/to/eigen3 -DCMAKE_INSTALL_PREFIX:PATH=$HOME/opt
make install
我没有得到第三方CMAKE文件。
编辑
我找到了一个似乎正常工作的解决方案:
cmake_minimum_required(VERSION 2.8.12)
project(main)
set(PROJECT_LIBS "")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# find Eigen3, use an environment variable that specifies the root of the Eigen download:
# export EIGENPATH="/path/to/clone/of/eigen3/"
list(APPEND CMAKE_MODULE_PATH "$ENV{EIGENPATH}/cmake/")
find_package(Eigen3 3.3.0)
include_directories(${EIGEN3_INCLUDE_DIRS})
# enable Intel-MKL (only for Intel compilers)
# NB requires correct specification of BLA_VENDOR, e.g.
# export BLA_VENDOR=Intel10_64lp_seq
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
find_package(BLAS)
include_directories(${BLAS_INCLUDE_DIRS})
set(PROJECT_LIBS ${BLAS_LIBRARIES})
add_definitions(-DEIGEN_USE_MKL_ALL)
endif()
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} ${PROJECT_LIBS})
请注意,重要的是要指出特征的"安装"对此解决方案不起作用,因为在这里pkg-config上的小猪在这里还不够。IE。一个人应该只下载/克隆特征并将CMAKE指向下载位置。
回答这一点可能有点晚了,但是对于最近的cmake版本,您可以使用以下内容。这可能是一个更干净的解决方案。
cmake_minimum_required(VERSION 2.8.3)
project(main)
set(CMAKE_CXX_STANDARD 14)
find_package(Eigen3 REQUIRED)
include_directories(
${EIGEN3_INCLUDE_DIRS}
)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
set(BLA_VENDOR Intel10_64lp)
add_definitions(-DEIGEN_USE_MKL_ALL)
endif()
find_pacakge(BLAS REQUIRED)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} Eigen3::Eigen ${BLAS_LIBRARIES})
确保您已经运行了oneapi/mkl设置vars脚本。
source /opt/intel/oneapi/setvars.sh
for oneapi(最好将其添加到.bashrc
)
相关文章:
- DLL Made with CMake 使程序崩溃
- VS2019 - Sudo Remote Debugging on Linux with Cmake project
- Cmake with Flex/Bison on windows
- OpenSSL with CMake - 未知选项: --sysroot 在构建 openSSL 时
- 解决方法:'can not be used when making a shared object; recompile with -fPIC'使用Cmake。使用普通的 g++ 工作
- 在Visual Studio中使用OpenMP with Clang和CMake
- Catch2 with CMake and Visual Studio
- libsqlite3.dylib link with CMake
- OpenMP 4.5 on Windows with Clang, CMake & Ninja
- Compile Eigen + Intel MKL with CMake
- CMake 64-bit with SFML 64-bit
- CMake trouble with Mingw
- LTO with LLVM and CMake
- 在 Windows 7 上安装 OpenCV 3.1.0 with CMake,opencv_ffmpeg.dll无效的
- CMake MacOS X bundle with BundleUtiliies for Qt application
- Qt WEBKIT with CMake
- Combining CMake option() with add_definitions()
- CMake with gmock
- hello StartupCommand PureMVC cpp with CMake
- CMake with cygwin " make[2]: *** No rule to make target 'cygwin' "