编译及运行应用

相关注意点如下:

  1. 模型构建,详细说明请参见模型构建
  2. 编译代码。
    可参考基于Caffe ResNet-50网络实现图片分类(同步推理)中的说明,主要步骤如下:
    1. 创建编译脚本。
      您可以从该基于Caffe ResNet-50网络实现图片分类(同步推理)样例中获取编译脚本CMakeLists.txt,在该编译脚本的基础上修改如下参数。
      • include_directories:添加头文件所在的目录。依赖的头文件请参见包含依赖的文件

        示例如下:

        include_directories(
                directoryPath1
                directoryPath2
        )
      • link_directories:添加库文件所在的目录。

        示例如下:

        link_directories(
                 directoryPath3 
                 directoryPath4
        )
      • add_executable:修改可执行文件的名称(例如:main)、添加*.cpp文件所在的目录。

        示例如下:

        add_executable(main
                directoryPath5
                directoryPath6)
      • target_link_libraries:修改可执行文件的名称(与 add_executable:修改可执行文件的...中保持一致)、添加可执行文件依赖的库文件。依赖的库文件与接口所在的头文件有关,请参见包含依赖的文件

        示例如下:

        target_link_libraries(main
                ascendcl
                libName1 
                libName2)

        编译基于AscendCL接口的代码逻辑时,请按照引用的头文件,依赖对应的dll文件,引用多余的dll文件可能导致后续版本升级时存在兼容性问题。

      • 编译选项,修改可执行文件的名称(与 add_executable:修改可执行文件的...中保持一致),以及可执行文件的安装目录。
        示例如下,表示main安装在${CMAKE_INSTALL_PREFIX}/out目录下,${CMAKE_INSTALL_PREFIX}变量定义的路径是相对路径,相对cmake命令执行的路径:
        set(CMAKE_RUNTIME_OUTPUT_DIRECTORY  "../../../out")
        install(TARGETS main DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
    2. 执行cmake命令编译代码、生成可执行文件。

      示例命令如下,其中,“../../../src”表示CMakeLists.txt文件所在的目录,请根据实际目录层级修改。

      • Debug模式时的编译命令如下:
        cmake ../../../src -DCMAKE_SKIP_RPATH=TRUE -G "Visual Studio 15 2017 Win64"
        cmake --build .
      • Release模式下的编译命令如下:
        cmake ../../../src -DCMAKE_SKIP_RPATH=TRUE -G "Visual Studio 15 2017 Win64" -DCMAKE_CONFIGURATION_TYPES=release
        cmake --build . --config release

      当前样例的编码字符集为ASCII,编译命令默认都是ASCII编码字符集,不支持Unicode编码字符集,如需支持Unicode编码字符集,需用户自行适配代码。

      关于cmake参数的详细介绍,请参见https://cmake.org/cmake/help/latest/guide/tutorial/index.html,选择对应的版本后再查看参数。

  3. 运行可执行文件。

    将AscendCL初始化配置文件(acl.json)所在的目录、可执行文件所在的目录、测试图片所在的目录、*.om文件所在的目录都上传到运行环境,以管理员身份登录运行环境,在cmd窗口中,切换到可执行文件main.exe所在的目录,运行可执行文件,示例命令如下:

    main.exe

    如果在AscendCL初始化阶段,在aclInit接口中传入空指针,则无需将AscendCL初始化配置文件(acl.json)所在的目录上传到运行环境

    如果运行应用出错,您可以参见问题定位进一步排查。