int main()

in nmt/nmt.cc [86:233]


int main(int argc, char **argv)
{
  Runtime::set_top_level_task_id(TOP_LEVEL_TASK_ID);
  {
    TaskVariantRegistrar registrar(TOP_LEVEL_TASK_ID, "top_level");
    registrar.add_constraint(ProcessorConstraint(Processor::LOC_PROC));
    //registrar.set_inner();
    Runtime::preregister_task_variant<top_level_task>(registrar, "top_level");
  }

  // DNN_INIT_TASK
  {
    TaskVariantRegistrar registrar(CUDNN_INIT_TASK_ID, "cudnn_init_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<DnnHandle, init_cudnn>(registrar, "cudnn_init_task");
  }
  //
  {
    TaskVariantRegistrar registrar(WORD_INIT_TASK_ID, "word_init_task(dummy)");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<RnnModel::word_init_task>(registrar, "word_init_task(dummy)");
  }
  // Word Embedding task
  {
    TaskVariantRegistrar registrar(EMBED_INIT_TASK_ID, "embed_init_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<OpMeta*, Embed::init_task>(registrar, "embed_init_task");
  }
  {
    TaskVariantRegistrar registrar(EMBED_FWD_TASK_ID, "embed_fwd_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<Embed::forward_task>(registrar, "embed_fwd_task");
  }
  {
    TaskVariantRegistrar registrar(EMBED_BWD_TASK_ID, "embed_bwd_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<Embed::backward_task>(registrar, "embed_bwd_task");
  }
  // LSTM task
  {
    TaskVariantRegistrar registrar(LSTM_INIT_TASK_ID, "lstm_init_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<OpMeta*, LSTM::init_task>(registrar, "lstm_init_task");
  }
  {
    TaskVariantRegistrar registrar(LSTM_FWD_TASK_ID, "lstm_fwd_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<LSTM::forward_task>(registrar, "lstm_fwd_task");
  }
  {
    TaskVariantRegistrar registrar(LSTM_BWD_TASK_ID, "lstm_bwd_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<LSTM::backward_task>(registrar, "lstm_bwd_task");
  }
  // Rnn Linear task
  {
    TaskVariantRegistrar registrar(RNN_LINEAR_INIT_TASK_ID, "linear_init_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<OpMeta*, Linear::init_task>(registrar, "linear_init_task");
  }
  {
    TaskVariantRegistrar registrar(RNN_LINEAR_FWD_TASK_ID, "linar_fwd_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<Linear::forward_task>(registrar, "linear_fwd_task");
  }
  {
    TaskVariantRegistrar registrar(RNN_LINEAR_BWD_TASK_ID, "linear_bwd_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<Linear::backward_task>(registrar, "linear_bwd_task");
  }
  {
    TaskVariantRegistrar registrar(RNN_LINEAR_BWD2_TASK_ID, "linear_bwd2_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<Linear::backward2_task>(registrar, "linear_bwd2_task");
  }
  // Softmax (Data Parallel Implementation) task
  {
    TaskVariantRegistrar registrar(RNN_SOFTMAXDP_INIT_TASK_ID, "softmaxDP_init_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<OpMeta*, SoftmaxDP::init_task>(registrar, "softmaxDP_init_task");
  }
  {
    TaskVariantRegistrar registrar(RNN_SOFTMAXDP_FWD_TASK_ID, "softmaxDP_fwd_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<SoftmaxDP::forward_task>(registrar, "softmaxDP_fwd_task");
  }
  {
    TaskVariantRegistrar registrar(RNN_SOFTMAXDP_BWD_TASK_ID, "softmaxDP_bwd_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<SoftmaxDP::backward_task>(registrar, "softmaxDP_bwd_task");
  }
  // Params related tasks
  {
    TaskVariantRegistrar registrar(PARAMS_INIT_TASK_ID, "params_init_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<RnnModel::params_init_task>(registrar, "params_init_task");
  }
  {
    TaskVariantRegistrar registrar(ZERO_1D_INIT_TASK_ID, "zero_1d_init_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<RnnModel::zero_1d_init_task>(registrar, "zero_1d_init_task");
  }
  {
    TaskVariantRegistrar registrar(ZERO_2D_INIT_TASK_ID, "zero_2d_init_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<RnnModel::zero_2d_init_task>(registrar, "zero_2d_init_task");
  }
  {
    TaskVariantRegistrar registrar(ZERO_3D_INIT_TASK_ID, "zero_3d_init_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<RnnModel::zero_3d_init_task>(registrar, "zero_3d_init_task");
  }
  {
    TaskVariantRegistrar registrar(PARAMS_UPD_TASK_ID, "params_upd_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<RnnModel::params_update_task>(registrar, "params_upd_task");
  }
  // Dummy tasks
  {
    TaskVariantRegistrar registrar(DUMMY_TASK_ID, "dummy_task");
    registrar.add_constraint(ProcessorConstraint(Processor::TOC_PROC));
    registrar.set_leaf();
    Runtime::preregister_task_variant<RnnModel::dummy_task>(registrar, "dummy_task");
  }

  Runtime::add_registration_callback(update_mappers);
  return Runtime::start(argc, argv);
}