开发者
资源
[object Object][object Object]

下文基于一个Hello World打印样例来讲解如何通过bisheng命令行编译AI CPU算子。

hello_world.aicpu文件内容如下:

[object Object]

Host侧使用内核调用符<<<...>>>进行AI CPU算子的调用, main.asc示例代码如下:

[object Object]

开发者可以使用bisheng命令行将hello_world.aicpu与main.asc分别编译成.o,再链接成为可执行文件,编译命令如下:

  • 编译hello_world.aicpu时,通过-I指定依赖头文件所在路径;通过--cce-aicpu-laicpu_api为Device链接依赖的库libaicpu_api.a,通过--cce-aicpu-L指定libaicpu_api.a的库路径。
  • 编译main.asc时,通过--npu-arch编译选项指定对应的架构版本号。

${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,安装后文件默认存储路径为:/usr/local/Ascend/cann。

[object Object]

上文我们通过一个入门示例介绍了使用bisheng命令行编译生成可执行文件的示例。除此之外,使用bisheng命令行也支持编译生成AI CPU算子的动态库与静态库,用户可在asc代码中通过内核调用符<<<...>>>调用AI CPU算子的核函数,并在编译asc代码源文件生成可执行文件的时候,链接AI CPU动态库或者静态库,注意:若单独编译AI CPU算子代码生成动态库、静态库时,需要手动链接

  • 编译生成算子动态库

    [object Object]
  • 编译生成算子静态库

    [object Object]
[object Object]

AI CPU算子常用的编译选项说明如下:

[object Object][object Object]

[object Object][object Object]

项目中可以使用CMake来更简便地使用毕昇编译器编译AI CPU算子,生成可执行文件、动态库、静态库或二进制文件。

仍以中介绍的Hello World打印样例为例,除了代码实现文件,还需要在工程目录下准备一个CMakeLists.txt。

[object Object]

CMakeLists.txt内容如下:

[object Object]

如果需要CMake编译编译生成动态库、静态库,下面提供了更详细具体的编译示例:

  • 编译.cpp文件生成动态库

    [object Object]
  • 编译.asc文件与.aicpu文件生成静态库

    [object Object]

下文列出了使用CMake编译时常用的变量配置说明、常用的链接库。

表 1 常用的变量配置说明

[object Object][object Object]

[object Object]

表 2 常用的链接库(在使用高阶API时,必须链接以下库,因为这些库是高阶API功能所依赖的。在其他场景下,可以根据具体需求选择是否链接这些库。)

[object Object][object Object]

[object Object]

表 3 编译AI CPU算子需要手动链接的库

[object Object][object Object]

[object Object]