otsdaq  v1_01_02
 All Classes Namespaces Functions
MPIInitializer.cc
1 #include "otsdaq-core/MPICore/MPIInitializer.h"
2 
3 #include "otsdaq-core/MessageFacility/MessageFacility.h"
4 #include "otsdaq-core/Macros/CoutHeaderMacros.h"
5 #include "artdaq/BuildInfo/GetPackageBuildInfo.hh"
6 #include "fhiclcpp/make_ParameterSet.h"
7 
8 
9 
10 #include <iostream>
11 
12 
13 using namespace ots;
14 
15 //========================================================================================================================
16 MPIInitializer::MPIInitializer(void)
17  : local_group_comm_(0), rank_(0)
18 {
19 }
20 
21 //========================================================================================================================
22 void MPIInitializer::init(std::string name, artdaq::TaskType taskType)
23 {
24 
25  std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << "BEGIN" << std::endl;
26 
27  //artdaq::configureMessageFacility("boardreader");
28  //artdaq::configureMessageFacility(name.c_str());
29 
30  // initialization
31  //FIXME This was FUNNELED
32  int const wanted_threading_level { MPI_THREAD_MULTIPLE };
33 
34  //std::cout << __COUT_HDR_FL__ << "MPI INITIALIZER RETURNS: " << MPI_Init_thread(0, 0, wanted_threading_level, 0) << std::endl;
35  //std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << "I WAS STUCK" << std::endl;
36 
37 
38  //int const wanted_threading_level { MPI_THREAD_FUNNELED };
39 
40  //MPI_Comm local_group_comm;
41  //std::unique_ptr<artdaq::MPISentry> mpiSentry;
42 
43  try
44  {
45  //mpiSentry_.reset( new artdaq::MPISentry(0, 0, wanted_threading_level, artdaq::TaskType::BoardReaderTask, local_group_comm_) );
46  mpiSentry_.reset( new artdaq::MPISentry(0, 0, wanted_threading_level, taskType, local_group_comm_) );
47  }
48  catch (cet::exception& errormsg)
49  {
50  std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << "DIDN't FIND MPI!" << std::endl;
51 
52 // mf::LogError("BoardReaderMain") << errormsg ;
53 // mf::LogError("BoardReaderMain") << "MPISentry error encountered in BoardReaderMain; exiting...";
54  mf::LogError(name) << errormsg ;
55  mf::LogError(name) << "MPISentry error encountered in " << name << "; exiting...";
56  throw errormsg;
57  }
58 
59  rank_ = mpiSentry_->rank();
60 // std::string name = "BoardReader";
61  unsigned short port = 5100;
62 
63  //artdaq::setMsgFacAppName(name, port);
64  mf::LogDebug(name + "InterfaceManager") << "artdaq version " <<
65  artdaq::GetPackageBuildInfo::getPackageBuildInfo().getPackageVersion()
66  << ", built " <<
67  artdaq::GetPackageBuildInfo::getPackageBuildInfo().getBuildTimestamp();
68 
69  // create the BoardReaderApp
70  // artdaq::BoardReaderApp br_app(local_group_comm, name);
71  std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << "END" << std::endl;
72 }
73 
74 //========================================================================================================================
75 MPIInitializer::~MPIInitializer(void)
76 {
77  mpiSentry_.reset(nullptr);
78 }