开发者
下载

头文件和库文件说明

环境要求

  • 通过aclnn API调用算子时,请提前安装CANN Toolkit包、ops算子包,具体操作参见CANN 软件安装
  • 通过PyTorch API调用算子时,请提前安装CANN Toolkit包、ops算子包、TorchNPU包(注意与Toolkit包版本配套),具体操作参见CANN 软件安装TorchNPU软件安装
  • 通过GE构图方式调用算子Ascend IR时,请提前安装CANN Toolkit包、ops算子包,具体操作参见CANN 软件安装

依赖文件列表

算子库中不同类型的接口定义在不同的路径下:
  • 调用算子aclnn API时,需include依赖的头文件和库文件,头文件默认在“${INSTALL_DIR}/include/”目录,库文件默认在“${INSTALL_DIR}/lib64/”目录,详细路径参见表1
  • 调用torch_extension API时,需导入如下模块,其中cann_ops_transformer定义在“${INSTALL_DIR}/python/site-packages/cann_ops_transformer”目录。
    import torch 
    import torch_npu
    import cann_ops_transformer
  • 调用Ascend IR算子时,其头文件路径为“${INSTALL_DIR}/opp/built-in/op_graph/inc/ops_proto_*.h”,库文件路径为“${INSTALL_DIR}/opp/built-in/op_graph/lib/libopgraph_*.so”,详细路径参见表1

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

表1 依赖文件列表

接口分类

用途

命名风格

依赖的头文件

依赖的库文件

公共接口

调用aclnn API依赖的公共Meta接口,如创建aclTensor、aclScalar、aclIntArray等。

以acl为前缀,要求大驼峰风格。

  • aclnn/acl_meta.h
  • aclnn/aclnn_base.h(仅包含aclnnInit和aclnnFinalize)

libnnopbase.so

算子接口(aclnn)

提供一套C API实现CANN算子调用,包括Math、NN、CV、Transformer等类算子。

以aclnn为前缀,一般分为两段式接口,其中“Xxx”表示算子名(要求大驼峰风格)。

  • 一阶段:aclnnXxxGetWorkspaceSize
  • 二阶段:aclnnXxx
  • 每类API依赖的头文件(推荐):aclnnop/aclnn_ops_math.h、aclnnop/aclnn_ops_nn.h、aclnnop/aclnn_ops_cv.h、aclnnop/aclnn_ops_transformer.h、aclnnop/aclnn_ops_ras.h
  • 每个API依赖的头文件:aclnnop/aclnn_*.h(*表示具体算子名)
  • aclnn API依赖的总库文件:libopapi.so(废弃)
  • 每类API依赖的库文件:libopapi_math.so、libopapi_nn.so、libopapi_cv.so、libopapi_transformer.solibopapi_ras.so

算子接口(torch_extension)

针对非PyTorch原生但常见的大模型算子,提供一套兼容PyTorch风格的API实现CANN算子调用。

以${op_name}为接口名,要求小写和下划线形式,调用方式推荐cann_ops_transformer.${op_name}。

定义在“${INSTALL_DIR}/python/site-packages/cann_ops_transformer”目录

Ascend IR算子规格

提供GE图场景下会用到的CANN算子规格信息,包括功能、数据类型、format等。

IR命名是大驼峰风格:XxxYyyZzz,例如AsinGrad。

  • ops_proto_math.h
  • ops_proto_nn.h
  • ops_proto_cv.h
  • ops_proto_transformer.h
  • ops_proto_legacy.h
  • libopgraph_math.so
  • libopgraph_nn.so
  • libopgraph_cv.so
  • libopgraph_transformer.so
  • libopgraph_legacy.so

附录>nnopbase接口>框架能力接口

提供开发aclnn API依赖的公共框架能力接口。

大驼峰风格

aclnn/opdev/*.h,具体文件名参见nnopbase接口列表

-

附录>nnopbase接口>基础张量操作接口

提供开发aclnn API依赖的Level0接口。

大驼峰风格

aclnn_kernels/*.h,具体文件名参见nnopbase接口列表

libopapi_math.so

附录>op_common接口

提供算子开发/调用过程中依赖的公共能力,例如日志获取、Tiling/InferShape开发相关接口。

大驼峰风格

  • op_common/log/*.h
  • op_common/op_host/*.h
  • op_common/op_graph/*.h
  • op_common/op_kernel/*.h

具体文件名参见op_common接口列表

-

  • 调用算子接口(aclnn)时,请注意依赖的头文件:
    • 引用每类总头文件后无需引用单API头文件。
    • 从CANN 7.0.0开始,算子头文件路径aclnnop/level2/aclnn_*.h废弃,请使用新头文件路径aclnnop/aclnn_*.h替代。
  • 调用算子接口(aclnn)时,请注意依赖的库文件:
    • 从CANN 9.0.0开始,libopapi.so废弃,请使用libopapi_*.so子库文件以提升算子编译效率。
    • 从CANN 8.5.0开始,libaclnn_ops_infer、libaclnn_ops_train、libaclnn_math、libaclnn_rand静态库(*.a)和动态库(*.so)废弃,请使用libopapi_*.so库文件。