首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用CMake编译Eigen + Intel

用CMake编译Eigen + Intel
EN

Stack Overflow用户
提问于 2017-11-23 08:21:25
回答 1查看 2.3K关注 0票数 2

我想使用带有Eigen3的Intel库(包括Pardiso解决程序)。当我在CMake中手动指定编译器选项时,我会让它正常工作(为此,我遵循了英特尔链接线顾问)。但是我知道在FindBLAS.cmakeBLA_VENDOR环境变量之间有一种预先定义的方式,特别是使用由特征修改的FindBLAS.cmake。只是我被困在这里了。我该怎么写我的CMakeLists.txt呢?

我应该清空在集群上使用最新版本的Eigen3版本,所以已经在主文件夹中的一个重要位置“安装”了它。也是在简单使用之后

代码语言:javascript
复制
cmake /path/to/eigen3 -DCMAKE_INSTALL_PREFIX:PATH=$HOME/opt
make install

我没有得到第三方CMake文件。

编辑

我找到了一个可行的解决方案:

代码语言:javascript
复制
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上装猪是不够的。也就是说,应该下载/克隆特征并将CMake指向下载位置。

EN

回答 1

Stack Overflow用户

发布于 2021-10-04 16:09:52

回答这个问题可能有点晚了,但是对于最近的CMake版本,您可以使用以下内容。这可能是一个更清洁的解决方案。

代码语言:javascript
复制
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中)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47450636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档