Version
函数功能
算子编译部署后,会自动生成单算子API(aclnnxxx)接口,接口中的输入输出参数和算子原型定义中保持一致。
新增可选输入时,为了保持原有单算子API(aclnnxxx)接口的兼容性,可以通过Version接口配置aclnn接口的版本号,版本号需要从1开始配,且应该连续配置(和可选属性统一编号)。配置后,自动生成的aclnn接口会携带版本号。高版本号的接口会包含低版本号接口的所有参数。如下样例所示的原型定义:
class AddCustom : public OpDef { public: explicit AddCustom(const char* name) : OpDef(name) { this->Input("x") .ParamType(DYNAMIC) .DataType({ge::DT_FLOAT16, ge::DT_FLOAT}) .Format({ge::FORMAT_ND, ge::FORMAT_ND}); this->Input("x1") .ParamType(OPTIONAL) .Version(1) .DataType({ge::DT_FLOAT16, ge::DT_FLOAT}) .Format({ge::FORMAT_ND, ge::FORMAT_ND}); this->Input("x2") .ParamType(OPTIONAL) .Version(2) .DataType({ge::DT_FLOAT16, ge::DT_FLOAT}) .Format({ge::FORMAT_ND, ge::FORMAT_ND}); this->Output("y") .ParamType(DYNAMIC) .DataType({ge::DT_FLOAT16, ge::DT_FLOAT}) .Format({ge::FORMAT_ND, ge::FORMAT_ND}); this->AICore().AddConfig("xxx"); } }; OP_ADD(AddCustom);
会自动生成3个版本的aclnn接口,定义如下:
aclnnStatus aclnnAddCustomGetWorkspaceSize( const aclTensorList *x, const aclTensorList *out, uint64_t *workspaceSize, aclOpExecutor **executor); aclnnStatus aclnnAddCustom( void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, const aclrtStream stream); aclnnStatus aclnnAddCustomV1GetWorkspaceSize( const aclTensorList *x, const aclTensor *x1Optional, const aclTensorList *out, uint64_t *workspaceSize, aclOpExecutor **executor); aclnnStatus aclnnAddCustomV1( void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, const aclrtStream stream); aclnnStatus aclnnAddCustomV2GetWorkspaceSize( const aclTensorList *x, const aclTensor *x1Optional, const aclTensor *x2Optional, const aclTensorList *out, uint64_t *workspaceSize, aclOpExecutor **executor); aclnnStatus aclnnAddCustomV2( void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, const aclrtStream stream);
函数原型
OpParamDef &Version(uint32_t version);
参数说明
参数 |
输入/输出 |
说明 |
---|---|---|
version |
输入 |
指定的版本号。 |
返回值说明
OpParamDef算子定义,OpParamDef请参考OpParamDef类。
约束说明
无
父主题: OpParamDef类