]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Enable MPI timer features when MPI is not present.
authorDavid Wells <wellsd2@rpi.edu>
Thu, 17 Aug 2017 23:11:53 +0000 (19:11 -0400)
committerDavid Wells <wellsd2@rpi.edu>
Fri, 18 Aug 2017 22:24:40 +0000 (18:24 -0400)
All of the relevant functions have redefinitions in the case that MPI is not
available.

include/deal.II/base/timer.h
source/base/timer.cc

index 1c766e6278c3b1b9a5a4065bc86b2c2478509d3d..6a6c671b70a9466963e850d4971fc7e7e0ffeb92 100644 (file)
 #include <deal.II/base/thread_management.h>
 #include <deal.II/base/utilities.h>
 
-#ifdef DEAL_II_WITH_MPI
-#  include <mpi.h>
-#endif
-
 #include <string>
 #include <list>
 #include <map>
@@ -81,7 +77,6 @@ public:
    */
   Timer ();
 
-#ifdef DEAL_II_WITH_MPI
   /**
    * Constructor that takes an MPI communicator as input. A timer constructed
    * this way will sum up the CPU times over all processors in the MPI network
@@ -94,8 +89,6 @@ public:
    * only works if you stop() the timer before querying for the wall time. The
    * time for the MPI operations are not included in the timing but may slow
    * down your program.
-   *
-   * This constructor is only available if deal.II is compiled with MPI support.
    */
   Timer (MPI_Comm mpi_communicator,
          const bool sync_wall_time = false);
@@ -127,7 +120,6 @@ public:
   template <class StreamType>
   void print_total_data(StreamType &stream) const;
 
-#endif
 
   /**
    * Re-start the timer at the point where it was stopped. This way a
@@ -242,7 +234,6 @@ private:
    */
   MPI_Comm            mpi_communicator;
 
-#ifdef DEAL_II_WITH_MPI
   /**
    * Store whether the wall time is synchronized between machines.
    */
@@ -263,7 +254,6 @@ private:
    * number of MPI processes in the MPI_Comm for the total run time.
    */
   Utilities::MPI::MinMaxAvg mpi_total_data;
-#endif
 };
 
 
@@ -556,7 +546,6 @@ public:
                const enum OutputFrequency output_frequency,
                const enum OutputType      output_type);
 
-#ifdef DEAL_II_WITH_MPI
   /**
    * Constructor that takes an MPI communicator as input. A timer constructed
    * this way will sum up the CPU times over all processors in the MPI network
@@ -613,11 +602,6 @@ public:
                const enum OutputFrequency output_frequency,
                const enum OutputType      output_type);
 
-
-
-
-#endif
-
   /**
    * Destructor. Calls print_summary() in case the option for writing the
    * summary output is set.
@@ -760,8 +744,6 @@ void Timer::restart ()
 
 
 
-#ifdef DEAL_II_WITH_MPI
-
 inline
 const Utilities::MPI::MinMaxAvg &
 Timer::get_data() const
@@ -804,8 +786,6 @@ Timer::print_total_data(StreamType &stream) const
          << statistic.min_index << ", avg=" << statistic.avg << std::endl;
 }
 
-#endif
-
 
 
 inline
index e6e43482066cda5806a5cfcdb6e5acc5fd2b55ce..0b3cc34f6e158d538d38ac7af8cfd3b1b733345e 100644 (file)
@@ -67,9 +67,6 @@ Timer::Timer()
 
 
 
-// in case we use an MPI compiler, use
-// the communicator given from input
-#ifdef DEAL_II_WITH_MPI
 Timer::Timer(MPI_Comm mpi_communicator,
              const bool sync_wall_time_)
   :
@@ -83,16 +80,13 @@ Timer::Timer(MPI_Comm mpi_communicator,
   mpi_communicator (mpi_communicator),
   sync_wall_time(sync_wall_time_)
 {
-#ifdef DEAL_II_WITH_MPI
   mpi_data.sum = mpi_data.min = mpi_data.max = mpi_data.avg = numbers::signaling_nan<double>();
   mpi_data.min_index = mpi_data.max_index = numbers::invalid_unsigned_int;
   mpi_total_data.sum = mpi_total_data.min = mpi_total_data.max = mpi_total_data.avg = 0.;
   mpi_total_data.min_index = mpi_total_data.max_index = 0;
-#endif
 
   start();
 }
-#endif
 
 
 
@@ -130,8 +124,7 @@ namespace
 
 void Timer::start ()
 {
-  running    = true;
-
+  running = true;
 #ifdef DEAL_II_WITH_MPI
   if (sync_wall_time)
     {
@@ -187,7 +180,6 @@ double Timer::stop ()
 #  error Unsupported platform. Porting not finished.
 #endif
 
-#ifdef DEAL_II_WITH_MPI
       this->mpi_data = Utilities::MPI::min_max_avg (last_lap_time,
                                                     mpi_communicator);
       if (sync_wall_time && Utilities::MPI::job_supports_mpi())
@@ -200,10 +192,6 @@ double Timer::stop ()
       accumulated_cpu_time += last_lap_cpu_time;
       this->mpi_total_data = Utilities::MPI::min_max_avg (accumulated_wall_time,
                                                           mpi_communicator);
-#else
-      accumulated_wall_time += last_lap_time;
-      accumulated_cpu_time += last_lap_cpu_time;
-#endif
     }
   return accumulated_cpu_time;
 }
@@ -298,12 +286,10 @@ void Timer::reset ()
   accumulated_cpu_time = 0.;
   accumulated_wall_time = 0.;
   running         = false;
-#ifdef DEAL_II_WITH_MPI
   mpi_data.sum = mpi_data.min = mpi_data.max = mpi_data.avg = numbers::signaling_nan<double>();
   mpi_data.min_index = mpi_data.max_index = numbers::invalid_unsigned_int;
   mpi_total_data.sum = mpi_total_data.min = mpi_total_data.max = mpi_total_data.avg = 0.;
   mpi_total_data.min_index = mpi_total_data.max_index = 0;
-#endif
 }
 
 
@@ -317,10 +303,8 @@ TimerOutput::TimerOutput (std::ostream &stream,
   output_frequency (output_frequency),
   output_type (output_type),
   out_stream (stream, true),
-  output_is_enabled (true)
-#ifdef DEAL_II_WITH_MPI
-  , mpi_communicator (MPI_COMM_SELF)
-#endif
+  output_is_enabled (true),
+  mpi_communicator (MPI_COMM_SELF)
 {}
 
 
@@ -332,14 +316,11 @@ TimerOutput::TimerOutput (ConditionalOStream &stream,
   output_frequency (output_frequency),
   output_type (output_type),
   out_stream (stream),
-  output_is_enabled (true)
-#ifdef DEAL_II_WITH_MPI
-  , mpi_communicator (MPI_COMM_SELF)
-#endif
+  output_is_enabled (true),
+  mpi_communicator (MPI_COMM_SELF)
 {}
 
 
-#ifdef DEAL_II_WITH_MPI
 
 TimerOutput::TimerOutput (MPI_Comm      mpi_communicator,
                           std::ostream &stream,
@@ -367,7 +348,6 @@ TimerOutput::TimerOutput (MPI_Comm      mpi_communicator,
   mpi_communicator (mpi_communicator)
 {}
 
-#endif
 
 
 TimerOutput::~TimerOutput()
@@ -402,7 +382,6 @@ TimerOutput::enter_subsection (const std::string &section_name)
 
   if (sections.find (section_name) == sections.end())
     {
-#ifdef DEAL_II_WITH_MPI
       if (mpi_communicator != MPI_COMM_SELF)
         {
           // create a new timer for this section. the second argument
@@ -414,7 +393,6 @@ TimerOutput::enter_subsection (const std::string &section_name)
           // among all processes inside mpi_communicator.
           sections[section_name].timer = Timer(mpi_communicator, true);
         }
-#endif
 
 
       sections[section_name].total_cpu_time = 0;

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.