昇腾社区首页
中文
注册

编译与运行样例

前提说明

  • aclnn前缀的算子接口编译依赖开发套软件包Ascend-cann-toolkit与算子二进制软件包Ascend-cann-kernels,请确保已安装,安装指导参见undefined
  • 本样例以动态库编译为例,详细的编译和运行指导请参见undefined中“单算子调用>单算子API执行>调用NN/融合算子接口示例代码”。

编译前准备

本章以开发和运行环境合设场景为例,即带AI处理器的机器既作为开发环境又作为运行环境。该场景下,代码开发和代码运行在同一台机器上。这里以Add算子为例,其他算子的调用逻辑、流程、编译脚本与Add算子大致一样,请根据实际情况自行修改API调用脚本(*.cpp)和编译脚本(CMakeLists)。

  • 示例代码

    已知Add算子实现了张量加法运算,计算公式为:y=x[object Object]1[object Object]+αx[object Object]2[object Object]。您可以从undefined中“调用示例”获取示例代码,并将代码文件命名为“test_add.cpp”。

  • CMakeLists文件

    CMake文件示例如下,请根据实际情况修改:

    [object Object]

    对于集合通信和MatMul计算融合、并行的算子,统称为通算融合算子(简称MC2算子),包括AllGatherMatmul、AlltoAllAllGatherBatchMatMul、BatchMatMulReduceScatterAlltoAll、MatmulAllReduce、MatmulAllReduceAddRmsNorm、MatmulReduceScatter等。调用该类算子API时,一般会涉及多线程和HCCL(Huawei Collective Communication Library,集合通信库),因此CMake文件需要额外导入如下内容,否则无法成功编译。

    [object Object]

    其中“find_package(Threads REQUIRED)”是CMake用于查找线程库的命令,可自动链接线程库依赖的头文件或间接依赖的库文件。

编译与运行

  1. 提前准备好算子的调用代码(*.cpp)和编译脚本(CMakeLists.txt)。

  2. 配置环境变量。

    安装CANN软件后,使用CANN运行用户登录环境,执行如下命令生效环境变量。

    [object Object]

    其中${INSTALL_DIR}为CANN软件安装后文件存储路径,请根据实际情况替换。

  3. 编译并运行。

    • 进入CMakeLists.txt所在目录,执行如下命令,新建build目录存放生成的编译文件。

      [object Object]
    • 进入build目录,执行cmake命令编译,再执行make命令生成可执行文件。

      [object Object]

      编译成功后,会在build目录的bin文件夹下生成opapi_test可执行文件。

    • 进入bin目录,运行可执行文件opapi_test。

      [object Object]

      以Add算子的运行结果为例,运行后的结果示例如下:

      [object Object]