@@ -368,20 +368,8 @@ static void
368
368
writer << " }\n " ;
369
369
}
370
370
371
- void runtime::cpu::CPU_ExternalFunction::compile ( )
371
+ void runtime::cpu::CPU_ExternalFunction::register_common_passes (ngraph::pass::Manager& pass_manager )
372
372
{
373
- if (m_is_compiled)
374
- {
375
- return ;
376
- }
377
-
378
- m_mkldnn_emitter.reset (new MKLDNNEmitter ());
379
-
380
- ngraph::pass::Manager pass_manager;
381
-
382
- // nv_cwi is required only by some frontends
383
- // in which case they should run this pass(CPUWorkspaceInsertion) explicitly
384
- NodeVector nv_cwi;
385
373
pass_manager.register_pass <ngraph::pass::LikeReplacement>();
386
374
pass_manager.register_pass <ngraph::pass::NopElimination>();
387
375
// TODO (pruthvi): Enable all the disabeled RNN fusion graph pass after fixing
@@ -396,11 +384,25 @@ void runtime::cpu::CPU_ExternalFunction::compile()
396
384
pass_manager.register_pass <ngraph::pass::CoreFusion>();
397
385
pass_manager.register_pass <runtime::cpu::pass::CPUFusion>();
398
386
pass_manager.register_pass <runtime::cpu::pass::CPUCollapseDims>();
399
- pass_manager.register_pass <runtime::cpu::pass::CPUWorkspaceInsertion>(nv_cwi);
387
+ NodeVector nv_cwi; // We dont need CPUWorkspaceInsertion to return list of indices
388
+ pass_manager.register_pass <runtime::cpu::pass::CPUWorkspaceInsertion>(nv_cwi, false );
400
389
pass_manager.register_pass <runtime::cpu::pass::CPUAssignment>(this );
401
390
pass_manager.register_pass <runtime::cpu::pass::CPULayout>(this );
402
391
pass_manager.register_pass <runtime::cpu::pass::CPUPostLayoutOptimizations>();
403
392
pass_manager.register_pass <ngraph::pass::GetOutputElementElimination>();
393
+ }
394
+
395
+ void runtime::cpu::CPU_ExternalFunction::compile ()
396
+ {
397
+ if (m_is_compiled)
398
+ {
399
+ return ;
400
+ }
401
+
402
+ m_mkldnn_emitter.reset (new MKLDNNEmitter ());
403
+
404
+ ngraph::pass::Manager pass_manager;
405
+ register_common_passes (pass_manager);
404
406
unordered_map<Node*, Node*> node_function_map;
405
407
string common_function_string;
406
408
auto femitter = bind (&ngraph::runtime::cpu::CPU_ExternalFunction::emit_op_as_function,
@@ -1132,27 +1134,8 @@ void runtime::cpu::CPU_ExternalFunction::build()
1132
1134
m_mkldnn_emitter.reset (new MKLDNNEmitter ());
1133
1135
1134
1136
ngraph::pass::Manager pass_manager;
1137
+ register_common_passes (pass_manager);
1135
1138
1136
- // nv_cwi is required only by some frontends
1137
- // in which case they should run this pass(CPUWorkspaceInsertion) explicitly
1138
- NodeVector nv_cwi;
1139
- pass_manager.register_pass <ngraph::pass::NopElimination>();
1140
- // TODO (pruthvi): Enable all the disabeled RNN fusion graph pass after fixing
1141
- // failing mxnet unit tests.
1142
- // pass_manager.register_pass<runtime::cpu::pass::LSTMFusion>();
1143
- // pass_manager.register_pass<runtime::cpu::pass::RNNFusion>();
1144
- // pass_manager.register_pass<runtime::cpu::pass::ConcatInputs>();
1145
- pass_manager.register_pass <ngraph::pass::AlgebraicSimplification>();
1146
- pass_manager.register_pass <runtime::cpu::pass::CPUBatchFusion>();
1147
- pass_manager.register_pass <ngraph::pass::CommonSubexpressionElimination>();
1148
- pass_manager.register_pass <ngraph::pass::CoreFusion>();
1149
- pass_manager.register_pass <runtime::cpu::pass::CPUFusion>();
1150
- pass_manager.register_pass <runtime::cpu::pass::CPUCollapseDims>();
1151
- pass_manager.register_pass <runtime::cpu::pass::CPUWorkspaceInsertion>(nv_cwi);
1152
- pass_manager.register_pass <runtime::cpu::pass::CPUAssignment>(this );
1153
- pass_manager.register_pass <runtime::cpu::pass::CPULayout>(this );
1154
- pass_manager.register_pass <runtime::cpu::pass::CPUPostLayoutOptimizations>();
1155
- pass_manager.register_pass <ngraph::pass::GetOutputElementElimination>();
1156
1139
pass_manager.register_pass <ngraph::pass::Liveness>();
1157
1140
pass_manager.register_pass <ngraph::pass::MemoryLayout>(size_t (s_memory_pool_alignment), true );
1158
1141
pass_manager.run_passes (m_function, false );
0 commit comments