diff --git a/build/includes/summa_actor/summa_actor.hpp b/build/includes/summa_actor/summa_actor.hpp index ef055779247059dac9f2022e191bb92b05ff4ea3..c87c6a52e41ad70717c6efb0676c19f8472e6f57 100644 --- a/build/includes/summa_actor/summa_actor.hpp +++ b/build/includes/summa_actor/summa_actor.hpp @@ -12,16 +12,15 @@ namespace caf { struct job_timing_info { - std: - std::chrono::time_point<std::chrono::system_clock> start; - std::chrono::time_point<std::chrono::system_clock> end; - double summa_actor_duration; - + std::vector<double> job_duration; + std::vector<double> job_read_duration; + std::vector<double> job_write_duration; }; struct summa_actor_state { // Timing Information For Summa-Actor TimingInfo summa_actor_timing; + struct job_timing_info timing_info_for_jobs; // Program Parameters int startGRU; // starting GRU for the simulation diff --git a/build/source/actors/summa_actor/summa_actor.cpp b/build/source/actors/summa_actor/summa_actor.cpp index 10049d764c4409f1ee9c40b55870754ad86e35bf..7f941abbd568abee6e0aacf782120b471529a794 100644 --- a/build/source/actors/summa_actor/summa_actor.cpp +++ b/build/source/actors/summa_actor/summa_actor.cpp @@ -40,14 +40,31 @@ behavior summa_actor(stateful_actor<summa_actor_state>* self, int startGRU, int return { [=](done_job, int numFailed, double job_duration, double read_duration, double write_duration) { self->state.numFailed += numFailed; - aout(self) << "Job Done\n"; + + self->state.timing_info_for_jobs.job_duration.push_back(job_duration); + self->state.timing_info_for_jobs.job_read_duration.push_back(read_duration); + self->state.timing_info_for_jobs.job_write_duration.push_back(write_duration); + if (self->state.numGRU <= 0) { self->state.summa_actor_timing.updateEndPoint("total_duration"); + + for (std::vector<int>::size_type i = 0; i < self->state.timing_info_for_jobs.job_duration.size(); i++) { + aout(self) << "\n________________Job " << i + 1 << " Info_______________\n"; + aout(self) << "Job Duration = " << self->state.timing_info_for_jobs.job_duration[i] << "\n"; + aout(self) << "Job Read Duration = " << self->state.timing_info_for_jobs.job_read_duration[i] << "\n"; + aout(self) << "Job Write Duration = " << self->state.timing_info_for_jobs.job_write_duration[i] << "\n"; + } aout(self) << "\n________________SUMMA_ACTOR TIMING INFO________________\n"; aout(self) << "Total Duration = " << self->state.summa_actor_timing.getDuration("total_duration").value_or(-1.0) << " Seconds\n"; aout(self) << "Total Duration = " << self->state.summa_actor_timing.getDuration("total_duration").value_or(-1.0) / 60 << " Minutes\n"; aout(self) << "Total Duration = " << (self->state.summa_actor_timing.getDuration("total_duration").value_or(-1.0) / 60) / 60 << " Hours\n\n"; + aout(self) << "Total Read Duration = " << std::accumulate(self->state.timing_info_for_jobs.job_read_duration.begin(), + self->state.timing_info_for_jobs.job_read_duration.end(), + 0.0) << "Seconds \n"; + aout(self) << "Total Write Duration = " << std::accumulate(self->state.timing_info_for_jobs.job_write_duration.begin(), + self->state.timing_info_for_jobs.job_write_duration.end(), + 0.0) << "Seconds \n"; aout(self) << "Program Finished \n"; self->send(self->state.parent, done_batch_v, self->state.summa_actor_timing.getDuration("total duration").value_or(-1.0));