【发布时间】:2023-01-27 03:23:20
【问题描述】:
我刚开始使用 libtorch,似乎遇到了一个相当严重的链接器问题。以前,我至少能够使用 torch(其他人创建的)构建其他项目,但现在我已经尝试创建自己的简单文件,似乎没有任何东西可以构建了。
我已经在我的根目录中手动安装了最新的 MacOS 版本: /用户/jlenz/libtorch/share/cmake/火炬
我正在使用 CLion 并具有以下 CmakeLists.txt:
cmake_minimum_required(VERSION 3.23)
project(midi_plugin)
set(CMAKE_CXX_STANDARD 17)
add_executable(midi_plugin main.cpp)
set(CMAKE_PREFIX_PATH "~/libtorch/share/cmake")
find_package(Torch REQUIRED)
target_link_libraries(midi_plugin "${TORCH_LIBRARIES}")
值得注意的一件事是,虽然 cmake“成功”构建,但它在过程中显示了这一点:
-- MKL_ARCH: intel64
-- MKL_ROOT /Users/jlenz/opt/miniconda3
-- MKL_LINK: dynamic
-- MKL_INTERFACE_FULL: intel_ilp64
-- MKL_THREADING: intel_thread
-- MKL_MPI: mpich
一旦我尝试构建项目(这只是包含 torch 的“hello world”),我收到以下错误:
FAILED: midi_plugin
: && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk -mmacosx-version-min=12.5 -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/midi_plugin.dir/main.cpp.o -o midi_plugin -Wl,-rpath,/Users/jlenz/libtorch/lib /Users/jlenz/libtorch/lib/libc10.dylib /Users/jlenz/libtorch/lib/libkineto.a /Users/jlenz/libtorch/lib/libtorch.dylib /Users/jlenz/libtorch/lib/libtorch_cpu.dylib /Users/jlenz/libtorch/lib/libc10.dylib -lmkl_intel_ilp64 -lmkl_core -lmkl_intel_thread && :
ld: library not found for -lmkl_intel_ilp64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
有人知道如何解决这个问题吗?我曾尝试与一位经常使用 libtorch 的同事一起解决这个问题,但他也无法确定问题所在。提前谢谢了。
【问题讨论】:
-
如果你打算使用 miniconda 的 MKL,你也应该使用 miniconda 的 libtorch。
-
如果 MKL 是 PyTorch 的可选依赖项,您可以在 CMake 配置命令行中设置
-DCMAKE_DISABLE_FIND_PACKAGE_MKL=ON。如果您这样做,请从一个干净的构建目录开始。 -
@AlexReinking 在我的 cmake 脚本中,我从不指定在哪里可以找到 MKL,在我的同事中也是如此。知道为什么它会出现在那里(而不是我的 torch 目录)吗?或者我是否需要它?
-
torch 包正在寻找 MKL 作为依赖项。我不知道您的火炬构建是否绝对需要它,或者它是否正在寻找它作为可选功能。
标签: c++ cmake pytorch clion libtorch