zoukankan      html  css  js  c++  java
  • 如何在Visual Studio 2019中启动并配置一个使用pyTorch的C++项目(Windows系统,CMAKE项目)

    首先感谢做这个视频的小哥:

    https://www.youtube.com/watch?v=6eTVqYGIWx0&t=165s&ab_channel=PythonEngineer

    写下文章备忘。

    首先打开VS后,新建一个CMAKE项目,起名为“demoPytorch”。(小哥说因为CMAKE配置pyTorch比较简单)

    在这个页面下载pyTorch:https://pytorch.org/get-started/locally/ 

    选择Windows、LibTorch、C++、显卡对应的CUDA版本.。然后选择debug版本下载。

    下载后解压。

    然后打开项目文件夹中的CMakeLists.txt文件(注意不是out文件夹),并加入下面这一行:

    find_package(Torch REQUIRED)

    告诉CMake我们需要Torch这个包。此时Ctrl+S保存,出现错误,无法找到这个包。

    点开下拉栏:

    点击管理配置。

    在CMake命令参数(CMake command argument)中写入:

    -DCMAKE_PREFIX_PATH="C:\Users\Think\Documents\Visual Studio 2019\libtorch"

    (填入解压后的pyTorch路径,注意换成双反斜\)

    告诉CMake在哪里可以找到pyTorch。

    输入后,Ctrl+S保存。如果你已经安装了CUDA,这时候应该显示CMake正常配置。如果没有安装CUDA,会报错,请下载安装CUDA后把CMake变量中的CUDA_SDK_ROOT_DIR设置为CUDA dev安装后的路径。

    之后,在cpp文件中加入:

    #include "torch/torch.h"

    现在include下应该有红线,我们需要到CMakeLists.txt中进行库链接。

    加入:

    target_link_libraries(demoPytorch "${TORCH_LIBRARIES}")

    Ctrl+S后,回到cpp文件,红线消失。

    验证一下是否配置成功,在cpp中把cout那一行改成:

        cout << torch::randn({3,2}) << endl;

    运行出错,提示找不到c10.dll文件。

    参考:https://pytorch.org/cppdocs/installing.html

    复制以下代码到CMakeLists.txt文件:

    # The following code block is suggested to be used on Windows.
    # According to https://github.com/pytorch/pytorch/issues/25457,
    # the DLLs need to be copied to avoid memory errors.
    if (MSVC)
      file(GLOB TORCH_DLLS "${TORCH_INSTALL_PREFIX}/lib/*.dll")
      add_custom_command(TARGET example-app
                         POST_BUILD
                         COMMAND ${CMAKE_COMMAND} -E copy_if_different
                         ${TORCH_DLLS}
                         $<TARGET_FILE_DIR:example-app>)
    endif (MSVC)

    注意把example-app改为自己的项目名。

    Ctrl+S后,等待CMake配置成功的提示,然后再次运行,成功:

     附上CMakeLists.txt文件:

    # CMakeList.txt: demoPytorch 的 CMake 项目,在此处包括源代码并定义
    # 项目特定的逻辑。
    #
    cmake_minimum_required (VERSION 3.8)
    
    find_package(Torch REQUIRED)
    
    # 将源代码添加到此项目的可执行文件。
    add_executable (demoPytorch "demoPytorch.cpp" "demoPytorch.h")
    target_link_libraries(demoPytorch "${TORCH_LIBRARIES}")
    
    if (MSVC)
      file(GLOB TORCH_DLLS "${TORCH_INSTALL_PREFIX}/lib/*.dll")
      add_custom_command(TARGET demoPytorch
                         POST_BUILD
                         COMMAND ${CMAKE_COMMAND} -E copy_if_different
                         ${TORCH_DLLS}
                         $<TARGET_FILE_DIR:demoPytorch>)
    endif (MSVC)
    
    # TODO: 如有需要,请添加测试并安装目标。

    .cpp文件:

     1 // demoPytorch.cpp: 定义应用程序的入口点。
     2 //
     3 
     4 #include "demoPytorch.h"
     5 #include "torch/torch.h"
     6 
     7 using namespace std;
     8 
     9 int main()
    10 {
    11     cout << torch::randn({3,2}) << endl;
    12     return 0;
    13 }
  • 相关阅读:
    Apache TomEE 入门指南
    Windows 7运行命令大全
    hibernate hql 大全
    maven常用命令
    php编译安装php-5.6
    nginx编译安装
    apache通过AD验证
    apache编译安装 httpd 2.2 httpd 2.4
    DC 辅域转主域
    tomcat安装配置
  • 原文地址:https://www.cnblogs.com/mrlonely2018/p/13828696.html
Copyright © 2011-2022 走看看