昇腾社区首页
中文
注册

快速上手

本节介绍AscendNPU IR使用的环境配置与简单用例,方便用户快速验证环境信息,熟悉AscendNPU IR的使用。

AscendNPU IR安装和环境配置

  • AscendNPU IR跟随CANN软件包(Toolkit或NNAE)一起发布。参考《CANN 软件安装指南》安装完CANN包后,AscendNPU IR所在目录为:${INSTALL_DIR}/bisheng_toolkit/bishengir。

    ${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。

  • 编程开始前,需要配置AscendNPU IR二进制程序相关环境变量。
    CANN软件包提供进程级环境变量设置脚本,供用户在进程中引用,以自动完成环境变量设置。以下示例为root或非root用户默认安装路径,请以实际安装路径为准,执行命令参考如下。
    1
    2
    3
    4
    # 以root用户安装toolkit包后配置环境变量
    source /usr/local/Ascend/ascend-toolkit/set_env.sh 
    # 以非root用户安装toolkit包后配置环境变量
    source ${HOME}/Ascend/ascend-toolkit/set_env.sh 
    

AscendNPU IR编译示例

本示例简单演示如何将AscendNPU IR编译至可以在昇腾AI处理器上执行的二进制文件。

  1. 新建样例文件demo.mlir,写入以下内容。
    func.func @test_basic_kernel0(%valueA: memref<16xf16, #hivm.address_space<gm>>,
                                  %valueB: memref<16xf16, #hivm.address_space<gm>>,
                                  %valueC: memref<16xf16, #hivm.address_space<gm>>)
                                  attributes {hacc.entry}
    {
      %ubA = memref.alloc() : memref<16xf16, #hivm.address_space<ub>>
      hivm.hir.load ins(%valueA : memref<16xf16, #hivm.address_space<gm>>) outs(%ubA : memref<16xf16, #hivm.address_space<ub>>)
     
      %ubB = memref.alloc() : memref<16xf16, #hivm.address_space<ub>>
      hivm.hir.load ins(%valueB : memref<16xf16, #hivm.address_space<gm>>) outs(%ubB : memref<16xf16, #hivm.address_space<ub>>)
     
      %ubC = memref.alloc() : memref<16xf16, #hivm.address_space<ub>>
      hivm.hir.vadd ins(%ubA, %ubB: memref<16xf16, #hivm.address_space<ub>>, memref<16xf16, #hivm.address_space<ub>>) outs(%ubC: memref<16xf16, #hivm.address_space<ub>>)
      hivm.hir.store ins(%ubC : memref<16xf16, #hivm.address_space<ub>>) outs(%valueC : memref<16xf16, #hivm.address_space<gm>>)
      return
    }
  2. 在样例文件所在路径下,执行编译命令对IR执行编译。
    1
    bishengir-compile demo.mlir -o test
    

    编译成功后,会生成可执行文件test.o。

后续任务

AscendNPU IR能让Triton编写的高性能算子在昇腾AI处理器上高效运行,请参考Triton Ascend进行Triton算子开发。