两段式接口
单算子API执行的算子接口一般定义为“两段式接口”,以NN类算子接口定义为例:
1 2 |
aclnnStatus aclnnXxxGetWorkspaceSize(const aclTensor *src, ..., aclTensor *out, ..., uint64_t workspaceSize, aclOpExecutor **executor); aclnnStatus aclnnXxx(void* workspace, int64 workspaceSize, aclOpExecutor* executor, aclrtStream stream); |
其中aclnnXxxGetWorkspaceSize为第一段接口,主要用于计算本次API调用计算过程中需要多少的workspace内存。获取到本次API计算需要的workspace大小后,按照workspaceSize大小申请昇腾AI处理器内存,然后调用第二段接口aclnnXxx。
- workspace是指除输入/输出外,API在昇腾AI处理器上完成计算所需要的临时内存。
- 第二段接口aclnnXxx(...)不能重复调用,如下调用方式会出现异常:
aclnnXxxGetWorkspaceSize(...) aclnnXxx(...) aclnnXxx(...)
父主题: 基本概念