算子API的一般定义形式为“两段式接口”,以NN类算子接口定义为例:
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。
aclnnXxxGetWorkspaceSize(...) aclnnXxx(...) aclnnXxx(...)