Loading... # 前言 c++想要配置libtorch还是挺坑的,特别是我用的cuda12.4,各种环境整合起来极其复杂,配起来这环境我头发都薅掉了一把😅 # 准备工作 ## 确认显卡环境支持 这篇文章建立在你的显卡支持cuda12.4环境的前提上,如果不支持,可以直接看踩坑点,或者直接叉掉. ![22c45884c427e98424cf90922c7b54a0.png](https://blog.hyiy.top/usr/uploads/2024/11/854143426.png) ## 下载安装 CUDA Toolkit [https://developer.nvidia.com/cuda-downloads](https://developer.nvidia.com/cuda-downloads) 安装过程自定义,音频驱动取消,其他全勾就行 > 如果你没安装vs2019+版本,就不要勾选vs相关选项 安装完毕之后去查看你的环境变量 ![image.png](https://blog.hyiy.top/usr/uploads/2024/11/1122556543.png) ## 下载安装 cuDNN [https://developer.nvidia.com/cudnn-downloads](https://developer.nvidia.com/cudnn-downloads) 安装过程默认 ## 下载安装 LibTorch ![bd9fb8cfac57aee117705ad00693029b.png](https://blog.hyiy.top/usr/uploads/2024/11/659050759.png) 我下载的是debug版本,release版本可以需要发布时再安装,使用cmake切换 # 运行代码/踩坑 新建一个项目文件夹,创建CMakeLIsts.txt ```cmak cmake_minimum_required(VERSION 3.29) project(torch_test) set(CMAKE_CXX_STANDARD 20) # 你的libtorch目录 set(CMAKE_PREFIX_PATH "F:/Engcode/c_c++/modules/libtorchd" ${CMAKE_PREFIX_PATH}) # 换成你的cuda目录 link_directories("C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/lib64") find_package(Torch REQUIRED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}") add_executable(torch_test main.cpp) target_link_libraries(torch_test "${TORCH_LIBRARIES}") if (MSVC) file(GLOB TORCH_DLLS "${TORCH_INSTALL_PREFIX}/lib/*.dll") add_custom_command(TARGET torch_test POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${TORCH_DLLS} $<TARGET_FILE_DIR:torch_test>) endif (MSVC) ``` ### 踩坑 这个时候你如果只看libtorch的官方文档 [https://pytorch.org/cppdocs/installing.html](https://pytorch.org/cppdocs/installing.html) 那你大概率只会得到如下的报错 ![8ecce799531f1318d3ec47125b0271f8.png](https://blog.hyiy.top/usr/uploads/2024/11/2350952345.png) ### 解决方案 下载cuda11.8 [https://developer.nvidia.com/cuda-11-8-0-download-archive](https://developer.nvidia.com/cuda-11-8-0-download-archive) 安装时选择自定义安装 除了`Nsight NVTX`以外的勾全去了 ![f021d4f97d57e268ea8df10a1259927d.png](https://blog.hyiy.top/usr/uploads/2024/11/851972200.png) ## 完成 ```cpp #include <torch/torch.h> #include <iostream> int main() { torch::Tensor tensor = torch::rand({2, 3}); std::cout << tensor << std::endl; } ``` ![035f8f440d3618a5f4bc48a69a114e73.png](https://blog.hyiy.top/usr/uploads/2024/11/87212447.png) 最后修改:2024 年 11 月 06 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏
1 条评论
写代码,写代码,写代码,那么我问你