类名 | 描述 |
---|---|
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算子扩展能力。 |
#include <node_parser_registry.h>
NodeParserRegistry类用于注册及获取NodeParser类型的共享智能指针。
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 = default;
析构函数。
static converter::NodeParserPtr GetNodeParser(converter::FmkType fmk_type, const std::string &node_type);
静态方法,获取NodeParser类型的共享智能指针实例。
参数
fmk_type
: 框架类型,具体见FmkType说明。
node_type
: 节点的类型。
#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说明。
#include <model_parser_registry.h>
typedef converter::ModelParser *(*ModelParserCreator)()
创建ModelParser的函数原型声明。
#include <model_parser_registry.h>
ModelParserRegistry类用于注册及获取ModelParserCreator类型的函数指针。
ModelParserRegistry(FmkType fmk, ModelParserCreator creator)
构造函数,构造ModelParserRegistry对象,进行Model解析注册。
参数
fmk
: 框架类型,具体见FmkType说明。
creator
: ModelParserCreator类型的函数指针, 具体见ModelParserCreator说明。
~ModelParserRegistry()
析构函数。
static ModelParser *GetModelParser(FmkType fmk)
获取ModelParserCreator类型的函数指针。
参数
fmk
: 框架类型,具体见FmkType说明。#include <model_parser_registry.h>
#define REG_MODEL_PARSER(fmk, parserCreator)
注册ModelParserCreator类。
参数
fmk
: 框架类型,具体见FmkType说明。
creator
: ModelParserCreator类型的函数指针, 具体见ModelParserCreator说明。
用户自定义的ModelParser,框架类型必须满足设定支持的框架类型FmkType。
#include <pass_base.h>
PassBase定义了图优化的基类,以供用户继承并自定义图优化算法。
PassBase(const std::string &name = "PassBase")
构造函数,构造PassBase类对象。
参数
name
: PassBase类对象的标识,需保证唯一性。virtual ~PassBase() = default;
析构函数。
virtual bool Execute(const api::FuncGraphPtr &func_graph) = 0;
对图进行操作的接口函数。
参数
func_graph
: FuncGraph的指针类对象。#include <pass_base.h>
PassBase类的共享智能指针类型。
using PassBasePtr = std::shared_ptr<PassBase>
#include <pass_registry.h>
enum类型变量,定义扩展Pass的运行位置。
enum PassPosition {
POSITION_BEGIN = 0, // 扩展Pass运行于内置融合Pass前
POSITION_END = 1 // 扩展Pass运行于内置融合Pass后
};
#include <pass_registry.h>
PassRegistry类用于注册及获取Pass类实例。
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()
析构函数。
static std::vector<std::string> GetOuterScheduleTask(PassPosition position)
获取指定位置处,外部设定的调度任务。
参数
position
: 扩展Pass的运行位置,具体见PassPosition说明。static PassBasePtr GetPassFromStoreRoom(const std::string &pass_name)
获取PassBase实例,根据指定的Pass命名标识。
参数
pass_name
: Pass的命名标识。#include <pass_registry.h>
#define REG_PASS(name, pass)
注册Pass宏。
参数
name
: Pass的命名标识,保证唯一性。
pass
: PassBase类实例。
#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算子。
ToNCHWFormat
与ToNHWCFormat
需配套使用。在开放的运行位置处,用户所得到的模型已统一为NHWC的格式,用户也需确保在当前运行位置处返回之时,模型也是NHWC的格式。例: 指定names为{"ToNCHWFormat", "UserPass","ToNHWCFormat"}。
#include <registry/register_kernel.h>
struct类型结构体,定义扩展kernel的基本属性。
struct KernelDesc {
DataType data_type; // kernel的计算数据类型
int type; // 算子的类型
std::string arch; // 设备标识
std::string provider; // 用户标识
};
#include <registry/register_kernel.h>
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)>
创建算子的函数原型声明。
参数
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的说明。
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的说明。
static CreateKernel GetCreator(const schema::Primitive *primitive, KernelDesc *desc);
获取算子的创建函数。
参数
primitive
: 算子经由flatbuffers反序化为Primitive后的结果。
desc
: 算子的基本属性,具体见KernelDesc说明。
#include <registry/register_kernel.h>
~KernelReg() = default
析构函数。
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的说明。
#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的说明。
#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的说明。
#include <registry/register_kernel_interface.h>
定义创建算子的函数指针类型。
using KernelInterfaceCreator = std::function<std::shared_ptr<kernel::KernelInterface>()>;
#include <registry/register_kernel_interface.h>
算子扩展能力注册实现类。
static Status CustomReg(const std::string &provider, const std::string &op_type, const KernelInterfaceCreator creator)
Custom算子的扩展能力注册。
参数
provider
: 生产商,由用户自定义。
op_type
: 算子类型,由用户自定义。
creator
: KernelInterface的创建函数,详细见KernelInterfaceCreator的说明。
static Status Reg(const std::string &provider, int op_type, const KernelInterfaceCreator creator)
算子的扩展能力注册。
参数
provider
: 生产商,由用户自定义。
op_type
: 算子类型,定义在ops.fbs中,编绎时会生成到ops_generated.h,该文件可以在发布件中获取。
creator
: KernelInterface的创建函数,详细见KernelInterfaceCreator的说明。
static std::shared_ptr<kernel::KernelInterface> GetKernelInterface(const std::string &provider, const schema::Primitive *primitive, const kernel::Kernel *kernel)
获取注册的算子扩展能力。
参数
provider
:生产商名,由用户自定义。
primitive
:算子经过flatbuffers反序化后的结果,存储算子属性。
kernel
:算子的内核,不传的话默认为空,为空时必须保证primitive非空有效。
#include <registry/register_kernel_interface.h>
算子扩展能力注册构造类。
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的说明。
#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的说明。
#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的说明。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。