mindspore::registry

接口汇总

类名

描述

NodeParserRegistry

扩展Node解析的注册类。

REG_NODE_PARSER

注册扩展Node解析。

ModelParserRegistry

扩展Model解析的注册类。

REG_MODEL_PARSER

注册扩展Model解析。

PassBase

Pass的基类。

PassPosition

扩展Pass的运行位置。

PassRegistry

扩展Pass注册构造类。

REG_PASS

注册扩展Pass。

REG_SCHEDULED_PASS

注册扩展Pass的调度顺序。

RegisterKernel

算子注册实现类。

KernelReg

算子注册构造类。

REGISTER_KERNEL

注册算子。

REGISTER_CUSTOM_KERNEL

注册Custom算子注册。

RegisterKernelInterface

算子扩展能力注册实现类。

KernelInterfaceReg

算子扩展能力注册构造类。

REGISTER_KERNEL_INTERFACE

注册算子扩展能力。

REGISTER_CUSTOM_KERNEL_INTERFACE

注册Custom算子扩展能力。

NodeParserRegistry

#include <node_parser_registry.h>

NodeParserRegistry类用于注册及获取NodeParser类型的共享智能指针。

NodeParserRegistry

NodeParserRegistry(converter::FmkType fmk_type, const std::string &node_type,
                   const converter::NodeParserPtr &node_parser);

构造函数。

  • 参数

    • fmk_type: 框架类型,具体见FmkType说明。

    • node_type: 节点的类型。

    • node_parser: NodeParser类型的共享智能指针实例, 具体见NodeParserPtr说明。

~NodeParserRegistry

~NodeParserRegistry = default;

析构函数。

公有成员函数

GetNodeParser

static converter::NodeParserPtr GetNodeParser(converter::FmkType fmk_type, const std::string &node_type);

静态方法,获取NodeParser类型的共享智能指针实例。

  • 参数

    • fmk_type: 框架类型,具体见FmkType说明。

    • node_type: 节点的类型。

REG_NODE_PARSER

#include <node_parser_registry.h>

#define REG_NODE_PARSER(fmk_type, node_type, node_parser)

注册NodeParser宏。

  • 参数

    • fmk_type: 框架类型,具体见FmkType说明。

    • node_type: 节点的类型。

    • node_parser: NodeParser类型的共享智能指针实例, 具体见NodeParserPtr说明。

ModelParserCreator

#include <model_parser_registry.h>

typedef converter::ModelParser *(*ModelParserCreator)()

创建ModelParser的函数原型声明。

ModelParserRegistry

#include <model_parser_registry.h>

ModelParserRegistry类用于注册及获取ModelParserCreator类型的函数指针。

ModelParserRegistry

ModelParserRegistry(FmkType fmk, ModelParserCreator creator)

构造函数,构造ModelParserRegistry对象,进行Model解析注册。

  • 参数

    • fmk: 框架类型,具体见FmkType说明。

    • creator: ModelParserCreator类型的函数指针, 具体见ModelParserCreator说明。

~ModelParserRegistry

~ModelParserRegistry()

析构函数。

公有成员函数

GetModelParser

static ModelParser *GetModelParser(FmkType fmk)

获取ModelParserCreator类型的函数指针。

  • 参数

    • fmk: 框架类型,具体见FmkType说明。

REG_MODEL_PARSER

#include <model_parser_registry.h>

#define REG_MODEL_PARSER(fmk, parserCreator)

注册ModelParserCreator类。

  • 参数

    • fmk: 框架类型,具体见FmkType说明。

    • creator: ModelParserCreator类型的函数指针, 具体见ModelParserCreator说明。

用户自定义的ModelParser,框架类型必须满足设定支持的框架类型FmkType

PassBase

#include <pass_base.h>

PassBase定义了图优化的基类,以供用户继承并自定义图优化算法。

PassBase

PassBase(const std::string &name = "PassBase")

构造函数,构造PassBase类对象。

  • 参数

    • name: PassBase类对象的标识,需保证唯一性。

~PassBase

virtual ~PassBase() = default;

析构函数。

公有成员函数

Execute

virtual bool Execute(const api::FuncGraphPtr &func_graph) = 0;

对图进行操作的接口函数。

  • 参数

    • func_graph: FuncGraph的指针类对象。

PassBasePtr

#include <pass_base.h>

PassBase类的共享智能指针类型。

using PassBasePtr = std::shared_ptr<PassBase>

PassPosition

#include <pass_registry.h>

enum类型变量,定义扩展Pass的运行位置。

enum PassPosition {
  POSITION_BEGIN = 0,    // 扩展Pass运行于内置融合Pass前
  POSITION_END = 1       // 扩展Pass运行于内置融合Pass后
};

PassRegistry

#include <pass_registry.h>

PassRegistry类用于注册及获取Pass类实例。

PassRegistry

PassRegistry(const std::string &pass_name, const PassBasePtr &pass)

构造函数,构造PassRegistry对象,进行注册Pass。

  • 参数

    • pass_name: Pass的命名标识,保证唯一性。

    • pass: PassBase类实例。

PassRegistry(PassPosition position, const std::vector<std::string> &names)

构造函数,构造PassRegistry对象,指定扩展Pass的运行位置及其运行顺序。

  • 参数

    • position: 扩展Pass的运行位置,具体见PassPosition说明。

    • names: 用户指定在该运行位置处,调用Pass的命名标识,命名标识的顺序即为指定Pass的调用顺序。

~PassRegistry

~PassRegistry()

析构函数。

公有成员函数

GetOuterScheduleTask

static std::vector<std::string> GetOuterScheduleTask(PassPosition position)

获取指定位置处,外部设定的调度任务。

  • 参数

    • position: 扩展Pass的运行位置,具体见PassPosition说明。

GetPassFromStoreRoom

static PassBasePtr GetPassFromStoreRoom(const std::string &pass_name)

获取PassBase实例,根据指定的Pass命名标识。

  • 参数

    • pass_name: Pass的命名标识。

REG_PASS

#include <pass_registry.h>

#define REG_PASS(name, pass)

注册Pass宏。

  • 参数

    • name: Pass的命名标识,保证唯一性。

    • pass: PassBase类实例。

REG_SCHEDULED_PASS

#include <pass_registry.h>

#define REG_SCHEDULED_PASS(position, names)

指定扩展Pass的运行位置及其运行顺序。

  • 参数

    • position: 扩展Pass的运行位置,具体见PassPosition说明。

    • names: 用户指定在该运行位置处,调用Pass的命名标识,命名标识的顺序即为指定Pass的调用顺序。

MindSpore Lite开放了部分内置Pass,请见以下说明。用户可以在names参数中添加内置Pass的命名标识,以在指定运行处调用内置Pass。

  • ConstFoldPass: 将输入均是常量的节点进行离线计算,导出的模型将不含该节点。特别地,针对shape算子,在inputShape给定的情形下,也会触发预计算。

  • DumpGraph: 导出当前状态下的模型。请确保当前模型为NHWC或者NCHW格式的模型,例如卷积算子等。

  • ToNCHWFormat: 将当前状态下的模型转换为NCHW的格式,例如,四维的图输入、卷积算子等。

  • ToNHWCFormat: 将当前状态下的模型转换为NHWC的格式,例如,四维的图输入、卷积算子等。

  • DecreaseTransposeAlgo: transpose算子的优化算法,删除冗余的transpose算子。

ToNCHWFormatToNHWCFormat需配套使用。在开放的运行位置处,用户所得到的模型已统一为NHWC的格式,用户也需确保在当前运行位置处返回之时,模型也是NHWC的格式。

例: 指定names为{“ToNCHWFormat”, “UserPass”,”ToNHWCFormat”}。

KernelDesc

#include <registry/register_kernel.h>

struct类型结构体,定义扩展kernel的基本属性。

struct KernelDesc {
  DataType data_type;        // kernel的计算数据类型
  int type;                  // 算子的类型
  std::string arch;          // 设备标识
  std::string provider;      // 用户标识
};

RegisterKernel

#include <registry/register_kernel.h>

CreateKernel

using CreateKernel = std::function<std::shared_ptr<kernel::Kernel>(
  const std::vector<MSTensor> &inputs, const std::vector<MSTensor> &outputs, const schema::Primitive *primitive,
  const mindspore::Context *ctx)>

创建算子的函数原型声明。

  • 参数

    • inputs: 算子输入MSTensor

    • outputs: 算子输出MSTensor

    • primitive: 算子经由flatbuffers反序化为Primitive后的结果。

    • ctx: 算子的上下文Context

公有成员函数

RegKernel

static Status RegKernel(const std::string &arch, const std::string &provider, DataType data_type, int type, const CreateKernel creator)

算子注册。

  • 参数

    • arch: 算子运行的平台,由用户自定义,如果算子是运行在CPU平台,或者算子运行完后的output tensor里的内存是在CPU平台上的,则此处也写CPU,MindSpore Lite内部会切成一个子图,在异构并行场景下有助于性能提升。

    • provider: 生产商名,由用户自定义。

    • data_type: 算子支持的数据类型,具体见DataType

    • op_type: 算子类型,定义在ops.fbs中,编绎时会生成到ops_generated.h,该文件可以在发布件中获取。

    • creator: 创建算子的函数指针,具体见CreateKernel的说明。

RegCustomKernel

static Status RegCustomKernel(const std::string &arch, const std::string &provider, DataType data_type, const std::string &type, const CreateKernel creator)

Custom算子注册。

  • 参数

    • arch: 算子运行的平台,由用户自定义,如果算子是运行在CPU平台,或者算子运行完后的output tensor里的内存是在CPU平台上的,则此处也写CPU,MindSpore Lite内部会切成一个子图,在异构并行场景下有助于性能提升。

    • provider: 生产商名,由用户自定义。

    • data_type: 算子支持的数据类型,具体见DataType

    • type: 算子类型,由用户自定义,确保唯一即可。

    • creator: 创建算子的函数指针,具体见CreateKernel的说明。

GetCreator

static CreateKernel GetCreator(const schema::Primitive *primitive, KernelDesc *desc);

获取算子的创建函数。

  • 参数

    • primitive: 算子经由flatbuffers反序化为Primitive后的结果。

    • desc: 算子的基本属性,具体见KernelDesc说明。

KernelReg

#include <registry/register_kernel.h>

~KernelReg

~KernelReg() = default

析构函数。

KernelReg

KernelReg(const std::string &arch, const std::string &provider, DataType data_type, int op_type, const CreateKernel creator)

构造函数,构造注册算子,进行算子注册。

  • 参数

    • arch: 算子运行的平台,由用户自定义,如果算子是运行在CPU平台,或者算子运行完后的output tensor里的内存是在CPU平台上的,则此处也写CPU,MindSpore Lite内部会切成一个子图,在异构并行场景下有助于性能提升。

    • provider: 生产商名,由用户自定义。

    • data_type: 算子支持的数据类型,具体见DataType

    • op_type: 算子类型,定义在ops.fbs中,编绎时会生成到ops_generated.h,该文件可以在发布件中获取。

    • creator: 创建算子的函数指针,具体见CreateKernel的说明。

KernelReg(const std::string &arch, const std::string &provider, DataType data_type, const std::string &op_type, const CreateKernel creator)

构造函数,构造注册Custom算子,进行算子注册。

  • 参数

    • arch: 算子运行的平台,由用户自定义,如果算子是运行在CPU平台,或者算子运行完后的output tensor里的内存是在CPU平台上的,则此处也写CPU,MindSpore Lite内部会切成一个子图,在异构并行场景下有助于性能提升。

    • provider: 生产商名,由用户自定义。

    • data_type: 算子支持的数据类型,具体见DataType

    • op_type: 算子类型,由用户自定义,确保唯一即可。

    • creator: 创建算子的函数指针,具体见CreateKernel的说明。

REGISTER_KERNEL

#define REGISTER_KERNEL(arch, provider, data_type, op_type, creator)

注册算子宏。

  • 参数

    • arch: 算子运行的平台,由用户自定义,如果算子是运行在CPU平台,或者算子运行完后的output tensor里的内存是在CPU平台上的,则此处也写CPU,MindSpore Lite内部会切成一个子图,在异构并行场景下有助于性能提升。

    • provider: 生产商名,由用户自定义。

    • data_type: 算子支持的数据类型,具体见DataType

    • op_type: 算子类型,定义在ops.fbs中,编绎时会生成到ops_generated.h,该文件可以在发布件中获取。

    • creator: 创建算子的函数指针,具体见CreateKernel的说明。

REGISTER_CUSTOM_KERNEL

#define REGISTER_CUSTOM_KERNEL(arch, provider, data_type, op_type, creator)

注册Custom算子。

  • 参数

    • arch: 算子运行的平台,由用户自定义,如果算子是运行在CPU平台,或者算子运行完后的output tensor里的内存是在CPU平台上的,则此处也写CPU,MindSpore Lite内部会切成一个子图,在异构并行场景下有助于性能提升。

    • provider: 生产商名,由用户自定义。

    • data_type: 算子支持的数据类型,具体见DataType

    • op_type: 算子类型,由用户自定义,确保唯一即可。

    • creator: 创建算子的函数指针,具体见CreateKernel的说明。

KernelInterfaceCreator

#include <registry/register_kernel_interface.h>

定义创建算子的函数指针类型。

using KernelInterfaceCreator = std::function<std::shared_ptr<kernel::KernelInterface>()>;

RegisterKernelInterface

#include <registry/register_kernel_interface.h>

算子扩展能力注册实现类。

公有成员函数

CustomReg

static Status CustomReg(const std::string &provider, const std::string &op_type, const KernelInterfaceCreator creator)

Custom算子的扩展能力注册。

  • 参数

    • provider: 生产商,由用户自定义。

    • op_type: 算子类型,由用户自定义。

    • creator: KernelInterface的创建函数,详细见KernelInterfaceCreator的说明。

Reg

static Status Reg(const std::string &provider, int op_type, const KernelInterfaceCreator creator)

算子的扩展能力注册。

  • 参数

    • provider: 生产商,由用户自定义。

    • op_type: 算子类型,定义在ops.fbs中,编绎时会生成到ops_generated.h,该文件可以在发布件中获取。

    • creator: KernelInterface的创建函数,详细见KernelInterfaceCreator的说明。

GetKernelInterface

static std::shared_ptr<kernel::KernelInterface> GetKernelInterface(const std::string &provider, const schema::Primitive *primitive, const kernel::Kernel *kernel)

获取注册的算子扩展能力。

  • 参数

    • provider:生产商名,由用户自定义。

    • primitive:算子经过flatbuffers反序化后的结果,存储算子属性。

    • kernel:算子的内核,不传的话默认为空,为空时必须保证primitive非空有效。

KernelInterfaceReg

#include <registry/register_kernel_interface.h>

算子扩展能力注册构造类。

KernelInterfaceReg

KernelInterfaceReg(const std::string &provider, int op_type, const KernelInterfaceCreator creator)

构造函数,构造注册算子的扩展能力。

  • 参数

    • provider: 生产商,由用户自定义。

    • op_type: 算子类型,定义在ops.fbs中,编绎时会生成到ops_generated.h,该文件可以在发布件中获取。

    • creator: KernelInterface的创建函数,详细见KernelInterfaceCreator的说明。

KernelInterfaceReg(const std::string &provider, const std::string &op_type, const KernelInterfaceCreator creator)

构造函数,构造注册custom算子的扩展能力。

  • 参数

    • provider: 生产商,由用户自定义。

    • op_type: 算子类型,由用户自定义。

    • creator: KernelInterface的创建函数,详细见KernelInterfaceCreator的说明。

REGISTER_KERNEL_INTERFACE

#include <registry/register_kernel_interface.h>

注册KernelInterface的实现。

#define REGISTER_KERNEL_INTERFACE(provider, op_type, creator)
  • 参数

    • provider: 生产商,由用户自定义。

    • op_type: 算子类型,定义在ops.fbs中,编绎时会生成到ops_generated.h,该文件可以在发布件中获取。

    • creator: 创建KernelInterface的函数指针,具体见KernelInterfaceCreator的说明。

REGISTER_CUSTOM_KERNEL_INTERFACE

#include <registry/register_kernel_interface.h>

注册Custom算子对应的KernelInterface实现。

#define REGISTER_CUSTOM_KERNEL_INTERFACE(provider, op_type, creator)
  • 参数

    • provider: 生产商名,由用户自定义。

    • op_type: 算子类型,由用户自定义,确保唯一同时要与REGISTER_CUSTOM_KERNEL时注册的op_type保持一致。

    • creator: 创建算子的函数指针,具体见KernelInterfaceCreator的说明。