首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake找不到OneAPI库mkl_gf_lp64和mkl_gnu_thread

CMake找不到OneAPI库mkl_gf_lp64和mkl_gnu_thread
EN

Stack Overflow用户
提问于 2022-04-12 08:44:35
回答 1查看 483关注 0票数 0

我正在尝试将最初为Intel编写的源代码改编为最新的OneAPI,并在MacOS下编译它。

我对CMakeLists进行了修改,以找到这样的OneAPI库:

代码语言:javascript
复制
    option (USE_ONEAPI "Enable MKL solver support via OneAPI Base Toolkit" ON)
    ...
    if (USE_ONEAPI)
    message(STATUS "Seeking OneAPI libraries...")
    list(APPEND MKL_LIBS "mkl_core" "mkl_gf_lp64" "mkl_gnu_thread" "pthread")
    foreach (f ${MKL_LIBS})
        if (INTEL_ONEAPI_DIR)
            # user provided OneAPI directory
            set(oneapiMklDir "${INTEL_ONEAPI_DIR}/mkl/latest")
            message(STATUS "    Seeking for ${f} in custom path: ${oneapiMklDir}...")
            find_library (${f}_LIB ${f} PATH "${INTEL_ONEAPI_DIR}/mkl/lib/intel64/" DOC "MKLPARDISO (library)")
            include_directories ("${INTEL_ONEAPI_DIR}/mkl/include")
        else ()
            set(oneapiDir "/opt/intel/oneapi")
            set(oneapiMklDir "${oneapiDir}/mkl/latest")
            message(STATUS "    Seeking for ${f} in default path: ${oneapiMklDir}...")
            find_library (${f}_LIB ${f} HINTS "${oneapiMklDir}/lib" DOC "MKLPARDISO (library)")
            include_directories ("${oneapiMklDir}/include")
        endif ()
        if (${${f}_LIB} STREQUAL "${f}_LIB-NOTFOUND")
            message (FATAL_ERROR "OneAPI ${f} library not found")
        else()
            message (STATUS "OK: ${f} library successfully found")
        endif ()
        list (APPEND EXT_LIBS ${${f}_LIB})
    endforeach ()
    list (APPEND MODULE_LIST "MKLPARDISO")
    endif ()

这就是结果:

代码语言:javascript
复制
-- Seeking OneAPI libraries...
--     Seeking for mkl_core in default path: /opt/intel/oneapi/mkl/latest...
-- OK: mkl_core_LIB library successfully found
--     Seeking for mkl_gf_lp64 in default path: /opt/intel/oneapi/mkl/latest...
CMake Error at CMakeLists.txt:379 (message):
OneAPI mkl_gf_lp64 library not found

我不知道为什么CMake没有找到这些库。它们是否安装了OneAPI base和HPC工具包?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-01 21:20:06

这很可能是老生常谈,你已经找到了解决办法,但既然我正在讨论一个问题,我想我会回答下一个人。

不包括mkl_gf_lp64,但mkl_intel_lp64包含。这两者并不相等,所以您可能需要mkl_intel_thread。

您还可以使用oneAPI链接顾问来准确地确定您需要什么。

https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html

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

https://stackoverflow.com/questions/71839592

复制
相关文章

相似问题

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