目的
本文目的是记录在C++中使用libtorch编译代码的过程中所遇到的问题。
环境信息如下表所示:
项目 | 详细 |
---|---|
芯片 | Apple M1 Pro |
MacOS | Sonoma 14.2 |
IDE | Visual Studio Code v1.85.1 |
CMake | v3.22.2 |
libtorch | v2.3.0 |
代码
代码目录结构:
test.cpp内容:
#include <torch/torch.h> #include <iostream> int main() { torch::Tensor tensor = torch::eye(3); std::cout << tensor << std::endl; }
CMakeLists.txt内容:
cmake_minimum_required(VERSION 3.0) project(libtorch_test) set(CMAKE_CXX_STANDARD 17) set(SOURCE_DIR src) add_executable(libtorch_test ${SOURCE_DIR}/test.cpp) # libtorch set(Torch_DIR ${PROJECT_SOURCE_DIR}/third_party/libtorch/share/cmake/Torch) find_package(Torch REQUIRED) message(STATUS "Torch version: ${Torch_VERSION}") # link libtorch target_link_libraries(libtorch_test ${TORCH_LIBRARIES})
编译脚本:
cd build cmake .. make
执行:
./libtorch_test
问题
执行阶段报错信息如下所示:
从信息中可知,问题原因是在库文件搜索路径中无法找到libomp.dylib,从而导致执行失败。
解决方法
第一步:使用homebrew安装libomp。安装完成后,libomp位于/opt/homebrew/opt/libomp路径下。
第二步:在/usr/local/bin路径下,建立指向/opt/homebrew/opt/libomp/lib/libomp.dylib的符号链接。
扩展思考
本人最初的思路是想在CMakeLists.txt中增加库文件的搜索路径,但是没有成功。如果有人知道如何指定库文件的搜索路径,请留言赐教。谢谢!