评分并提供意见反馈 :
华为采用机器翻译与人工审校相结合的方式将此文档翻译成不同语言,希望能帮助您更容易理解此文档的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 华为对于翻译的准确性不承担任何责任,并建议您参考英文文档(已提供链接)。
原理
算子原型定义规定了在昇腾AI处理器上可运行算子的约束,主要体现算子的数学含义,包含定义算子输入、输出和属性信息,基本参数的校验和shape的推导,原型定义的信息会被注册到GE的算子原型库中。网络模型生成时,GE会调用算子原型库的校验接口进行基本参数的校验,校验通过后,会根据原型库中的推导函数推导每个节点的输出shape与dtype,进行输出tensor的静态内存的分配。
算子原型库在整个网络模型生成流程的作用如图8-1所示。
其中算子注册包括OP注册、InferShape与Verify的注册,注册的时候算子类型(OpType)作为Key。
- 首先GE接收到第三方框架的原始网络模型,并进行初始化,网络模型的拓扑图我们简称为图。
- 算子原型库管理模块从Host侧opp安装目录下的“opp/op_proto/”对应目录下加载算子原型库的so文件。
- 算子原型库管理模块根据so文件中的信息在OperatorFactory中进行算子信息注册,包括算子注册、InferShape注册、Verify注册,这三部分分别已算子类型(OpType)作为key注册到三个map文件中进行保存。
- 图准备阶段,GE向Graph发送调用InferShape的请求。
- Graph会遍历图中的所有节点的Infer方法,然后向OpDesc发送调用Infer方法的请求。
- 从OperatorFactory中根据OpType取出对应的InferShape函数与Verify函数。
- 执行Verify函数进行校验,如果校验成功,则继续往下执行,如果校验失败,则直接返回。
- 执行InferShape函数,进行输出tensor的shape推导。
- 向GE返回InferShape的结果,GE后续根据InferShape结果分配输出tensor的静态内存。
- GE进行其他处理。