|
1 | | -# C++ OP 开发(新增原生算子) |
| 1 | +# C++ OP 开发 |
2 | 2 |
|
3 | 3 | > 注:飞桨原生算子的开发范式正在进行重构与升级,升级后算子开发方式会大幅简化,我们会及时更新本文档内容,升级后的算子开发范式预计会在2.3版本正式上线。 |
4 | 4 |
|
@@ -590,28 +590,28 @@ void TraceKernel(const Context& dev_ctx, |
590 | 590 | 仍然以trace op为例,首先在`paddle/phi/ops/compat`目录下新建`trace_sig.cc`文件,用于放置这里的映射函数。 |
591 | 591 |
|
592 | 592 | - 由于函数式kernel的一个最重要的特别就是参数顺序和类型(顺序和类型是关键,变量名称不影响),我们需要定义一个函数来做一个从OpMaker中如何获取信息,并且按照顺序传递给新的kernel函数; 这个模块就是OpArgumentMapping, trace反向op的OpArgumentMapping定义如下, KernelSignature共包含4个内容 |
593 | | - 1. kernel名称,这个是我们给kernel注册的时候的名称 |
594 | | - 2. input list: 这个要和OpMaker(或者GradOpMaker)中定义的Key要完全一致 |
595 | | - 3. attribute list: 这个要和OpMaker(或者GradOpMaker)中定义的Key要完全一致 |
596 | | - 4. output list: 这个要和OpMaker(或者GradOpMaker)中定义的Key要完全一致 |
| 593 | + 1. kernel名称,这个是我们给kernel注册的时候的名称 |
| 594 | + 2. input list: 这个要和OpMaker(或者GradOpMaker)中定义的Key要完全一致 |
| 595 | + 3. attribute list: 这个要和OpMaker(或者GradOpMaker)中定义的Key要完全一致 |
| 596 | + 4. output list: 这个要和OpMaker(或者GradOpMaker)中定义的Key要完全一致 |
597 | 597 |
|
598 | 598 |
|
599 | | - ```cpp |
600 | | - #include "paddle/phi/core/compat/op_utils.h" |
| 599 | + ```cpp |
| 600 | + #include "paddle/phi/core/compat/op_utils.h" |
601 | 601 |
|
602 | | - namespace phi { |
| 602 | + namespace phi { |
603 | 603 |
|
604 | | - KernelSignature TraceGradOpArgumentMapping(const ArgumentMappingContext& ctx) { |
605 | | - return KernelSignature("trace_grad", |
606 | | - {GradVarName("Out"), "Input"}, |
607 | | - {"offset", "axis1", "axis2"}, |
608 | | - {GradVarName("Input")}); |
609 | | - } |
| 604 | + KernelSignature TraceGradOpArgumentMapping(const ArgumentMappingContext& ctx) { |
| 605 | + return KernelSignature("trace_grad", |
| 606 | + {GradVarName("Out"), "Input"}, |
| 607 | + {"offset", "axis1", "axis2"}, |
| 608 | + {GradVarName("Input")}); |
| 609 | + } |
610 | 610 |
|
611 | | - } // namespace phi |
| 611 | + } // namespace phi |
612 | 612 |
|
613 | | - PD_REGISTER_ARG_MAPPING_FN(trace_grad, phi::TraceGradOpArgumentMapping); |
614 | | - ``` |
| 613 | + PD_REGISTER_ARG_MAPPING_FN(trace_grad, phi::TraceGradOpArgumentMapping); |
| 614 | + ``` |
615 | 615 |
|
616 | 616 | >注:没有input list或attribute list的,相应花括号内留空,不能省略花括号 |
617 | 617 |
|
|
0 commit comments