加速库中定义了三种算子,即单算子(Operation)、图算子(GraphOperation)和自定义插件算子(PluginOperation)。
用户需要自行设计并定义图的结构,即图结构中节点(Node)的组合与依赖关系,包括节点对应的单算子、节点的输入tensor与输出tensor,并识别这些tensor为图的输入tensor、输出tensor和中间tensor。图输入tensor为用户使用图算子时需要从外部输入的所有tensor。图输出tensor为用户使用图算子时不会再进行下一步运算操作的所有tensor。图中间tensor为图算子运算中产生的临时tensor,该tensor既不为图的输入,也不为图的输出。
如图1所示,该示例图算子由两个节点组成,这两个节点均为Elewise_Add算子。a、b、c为图算子的三个输入tensor,output为图算子的输出tensor,a_add_b_output为图算子的中间tensor。其中,节点0的输入为a和b,输出为a_add_b_output,节点1的输入为a_add_b_output和c,输出为output。
这三种算子继承自同一个父类Operation,在使用时除了构造算子的操作步骤有所区别,其他步骤都基本一致。