[exo] Renaming FuseConv2DAddSubPass to FuseBiasAddPass (#8441)
author윤현식/On-Device Lab(SR)/Principal Engineer/삼성전자 <hyunsik.yoon@samsung.com>
Thu, 24 Oct 2019 06:28:22 +0000 (15:28 +0900)
committer박세희/On-Device Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Thu, 24 Oct 2019 06:28:22 +0000 (15:28 +0900)
Supporting BiasAdd is needed for more ops (other than Conv2D) so pass is renamed into more general term.

Signed-off-by: Hyun Sik Yoon <hyunsik.yoon@samsung.com>
compiler/exo/src/Knob.lst
compiler/exo/src/Pass/FuseBiasAddPass.cpp [moved from compiler/exo/src/Pass/FuseConv2DAddSubPass.cpp with 99% similarity]
compiler/exo/src/Pass/FuseBiasAddPass.h [moved from compiler/exo/src/Pass/FuseConv2DAddSubPass.h with 73% similarity]
compiler/exo/src/Pass/FuseBiasAddPass.test.cpp [moved from compiler/exo/src/Pass/FuseConv2DAddSubPass.test.cpp with 96% similarity]
compiler/exo/src/Passes.h
compiler/exo/src/TFLOptimize.cpp

index 949f38e..41fbad8 100644 (file)
@@ -32,5 +32,5 @@ KNOB_BOOL(ConvertTensorBroadcast, true, Resolve loco::TensorBroadcast)
 KNOB_BOOL(ConvertTensorTranspose, true, Resolve loco::TensorTranspose)
 
 // Optimization pass
-KNOB_BOOL(UseFuseConv2DAddSubPass, true, Fuse TFLAdd or TFLSub into TFLConv2D)
+KNOB_BOOL(UseFuseBiasAddPass, true, Fuse TFLAdd or TFLSub into TFLConv2D)
 KNOB_BOOL(UseFuseReluPass, true, Fuse TFLAdd or TFLSub into TFLConv2D or so)
similarity index 99%
rename from compiler/exo/src/Pass/FuseConv2DAddSubPass.cpp
rename to compiler/exo/src/Pass/FuseBiasAddPass.cpp
index 7cde00b..ef34cdc 100644 (file)
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "FuseConv2DAddSubPass.h"
+#include "FuseBiasAddPass.h"
 
 #include "Dialect/IR/TFLNodes.h"
 #include "Dialect/IR/TFLDialect.h"
@@ -296,7 +296,7 @@ struct Performer final : public locoex::TFLNodeMutableVisitor<void>
 namespace exo
 {
 
-bool FuseConv2DAddSubPass::run(loco::Graph *g)
+bool FuseBiasAddPass::run(loco::Graph *g)
 {
   Collector collector;
 
similarity index 73%
rename from compiler/exo/src/Pass/FuseConv2DAddSubPass.h
rename to compiler/exo/src/Pass/FuseBiasAddPass.h
index a828b95..0288ec8 100644 (file)
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef __PASS_FUSE_CONV2D_ADDSUB_PASS_H__
-#define __PASS_FUSE_CONV2D_ADDSUB_PASS_H__
+#ifndef __PASS_FUSE_BIASADD_PASS_H__
+#define __PASS_FUSE_BIASADD_PASS_H__
 
 #include <logo/Pass.h>
 
@@ -23,7 +23,10 @@ namespace exo
 {
 
 /**
- * @brief Class to fuse TFLAdd or TFLSub that follows TFLConv2D
+ * @brief Class to fuse TFLAdd or TFLSub into Bias input of the following ops:
+ *    - TFLConv2D, TFLDepthwiseConv2D
+ *    - TODO Consider to add FullyConnected, LSTM-related op (see Toco's impelementation
+ *      in ConvertLstmCellOperator)
  *
  * Case 1. Conv2D and TFLAdd
  *
@@ -47,13 +50,13 @@ namespace exo
  * @note TFLSub, of which x() == TFLConv2D and y() == TFLConst, will be fused.
  *       If x() == TFLConst and y() == TFLConv2D, it won't be fused.
  */
-struct FuseConv2DAddSubPass final : public logo::Pass
+struct FuseBiasAddPass final : public logo::Pass
 {
-  const char *name(void) const final { return "exo::FuseConv2DAddSubPass"; }
+  const char *name(void) const final { return "exo::FuseBiasAddPass"; }
 
   bool run(loco::Graph *g) final;
 };
 
 } // namespace exo
 
-#endif // __PASS_FUSE_CONV2D_ADDSUB_PASS_H__
+#endif // __PASS_FUSE_BIASADD_PASS_H__
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "FuseConv2DAddSubPass.h"
+#include "FuseBiasAddPass.h"
 
 #include "Dialect/IR/TFLNodes.h"
 #include "TestGraph.h"
@@ -104,7 +104,7 @@ TEST(FuseConv2DBiasAddPassTest, Conv2D_Add_01_basic)
   {
     exo::test::TypeShapeReadyPhase test_phase;
 
-    test_phase.add_pass<exo::FuseConv2DAddSubPass>();
+    test_phase.add_pass<exo::FuseBiasAddPass>();
     test_phase.run(g.graph());
   }
 
@@ -156,7 +156,7 @@ TEST(FuseConv2DBiasAddPassTest, Conv2D_Add_02_TFLAdd_y_is_scalar)
   {
     exo::test::TypeShapeReadyPhase test_phase;
 
-    test_phase.add_pass<exo::FuseConv2DAddSubPass>();
+    test_phase.add_pass<exo::FuseBiasAddPass>();
     test_phase.run(g.graph());
   }
 
@@ -199,7 +199,7 @@ TEST(FuseConv2DBiasAddPassTest, Conv2D_Sub_01_basic)
   {
     exo::test::TypeShapeReadyPhase test_phase;
 
-    test_phase.add_pass<exo::FuseConv2DAddSubPass>();
+    test_phase.add_pass<exo::FuseBiasAddPass>();
     test_phase.run(g.graph());
   }
 
@@ -242,7 +242,7 @@ TEST(FuseConv2DBiasAddPassTest, Conv2D_Sub_02_fusing_will_not_performed)
   {
     exo::test::TypeShapeReadyPhase test_phase;
 
-    test_phase.add_pass<exo::FuseConv2DAddSubPass>();
+    test_phase.add_pass<exo::FuseBiasAddPass>();
     test_phase.run(g.graph());
   }
 
@@ -290,7 +290,7 @@ TEST(FuseConv2DBiasAddPassTest, Regression_Conv2D_Add_fused_action_00)
   {
     exo::test::TypeShapeReadyPhase test_phase;
 
-    test_phase.add_pass<exo::FuseConv2DAddSubPass>();
+    test_phase.add_pass<exo::FuseBiasAddPass>();
     test_phase.run(g.graph());
   }
 
@@ -331,7 +331,7 @@ TEST(FuseConv2DBiasAddPassTest, Regression_Conv2D_Add_fused_action_01)
   {
     exo::test::TypeShapeReadyPhase test_phase;
 
-    test_phase.add_pass<exo::FuseConv2DAddSubPass>();
+    test_phase.add_pass<exo::FuseBiasAddPass>();
     test_phase.run(g.graph());
   }
 
index 955ccf3..702bfdb 100644 (file)
@@ -20,7 +20,7 @@
 // Please add in alphabetical order
 
 #include "Pass/FoldTransposeOfConst.h"
-#include "Pass/FuseConv2DAddSubPass.h"
+#include "Pass/FuseBiasAddPass.h"
 #include "Pass/FuseReluPass.h"
 #include "Pass/MergeConcatNodesPass.h"
 #include "Pass/ShapeInferencePass.h"
index 1a7d5b9..b44b78f 100644 (file)
@@ -37,9 +37,9 @@ void optimize(loco::Graph *g)
 
     phase.emplace_back(stdex::make_unique<FoldTransposeOfConst>());
 
-    if (get<Knob::UseFuseConv2DAddSubPass>())
+    if (get<Knob::UseFuseBiasAddPass>())
     {
-      phase.emplace_back(stdex::make_unique<FuseConv2DAddSubPass>());
+      phase.emplace_back(stdex::make_unique<FuseBiasAddPass>());
     }
 
     if (get<Knob::UseFuseReluPass>())