From a99f36d4a1189c06deccb992ce88b2844490253a Mon Sep 17 00:00:00 2001 From: KyleKlenk <kyle.c.klenk@gmail.com> Date: Mon, 2 May 2022 14:17:35 -0600 Subject: [PATCH] fixed output timings giving wrong output fixed program segfaulting on one cpu --- build/makefile | 8 ++++---- build/source/actors/FileAccessActor.h | 17 ++++++++++------- build/source/actors/HRUActor.h | 7 +++++++ build/source/actors/JobActor.h | 7 ++++++- build/source/actors/SummaActor.h | 4 ++++ build/source/actors/global.h | 2 +- 6 files changed, 32 insertions(+), 13 deletions(-) diff --git a/build/makefile b/build/makefile index 1b3442e..ab14e95 100644 --- a/build/makefile +++ b/build/makefile @@ -22,10 +22,10 @@ FLAGS_SUMMA = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC FLAGS_ACTORS = -O3 # # Debug runs -# FLAGS_NOAH = -p -g -O0 -ffree-form -ffree-line-length-none -fmax-errors=0 -fbacktrace -Wno-unused -Wno-unused-dummy-argument -fPIC -# FLAGS_COMM = -p -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC -# FLAGS_SUMMA = -p -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC -# FLAGS_ACTORS = -g -O0 -Wall +# FLAGS_NOAH = -pg -g -O0 -ffree-form -ffree-line-length-none -fmax-errors=0 -fbacktrace -Wno-unused -Wno-unused-dummy-argument -fPIC +# FLAGS_COMM = -pg -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC +# FLAGS_SUMMA = -pg -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC +# FLAGS_ACTORS = -pg -g -O0 -Wall #======================================================================== diff --git a/build/source/actors/FileAccessActor.h b/build/source/actors/FileAccessActor.h index c8d51e6..c3d1d59 100644 --- a/build/source/actors/FileAccessActor.h +++ b/build/source/actors/FileAccessActor.h @@ -134,8 +134,11 @@ behavior file_access_actor(stateful_actor<file_access_state>* self, int startGRU aout(self) << "Deallocating Structure" << std::endl; FileAccessActor_DeallocateStructures(self->state.handle_forcFileInfo, self->state.handle_ncid); - self->state.readDuration = self->state.readDuration / 1000; - self->state.writeDuration = self->state.writeDuration / 1000; + self->state.readDuration = self->state.readDuration / 1000; // Convert to milliseconds + self->state.readDuration = self->state.readDuration / 1000; // Convert to seconds + + self->state.writeDuration = self->state.writeDuration / 1000; // Convert to milliseconds + self->state.writeDuration = self->state.writeDuration / 1000; // Convert to milliseconds self->send(self->state.parent, file_access_actor_done_v, self->state.readDuration, self->state.writeDuration); @@ -197,12 +200,12 @@ void initalizeFileAccessActor(stateful_actor<file_access_state>* self) { self->quit(); return; } + + // Initalize the output Structure + aout(self) << "Initalizing Output Structure" << std::endl; + Init_OutputStruct(self->state.handle_forcFileInfo, &self->state.outputStrucSize, + &self->state.numGRU, &self->state.err); - - // initalize vector for knowing if HRU output has init'd - for(int i = 0; i < self->state.numGRU; i++) { - self->state.outputFileInitHRU.push_back(false); - } self->send(self->state.parent, done_file_access_actor_init_v); // initalize the forcingFile array diff --git a/build/source/actors/HRUActor.h b/build/source/actors/HRUActor.h index bd0b999..81b085a 100644 --- a/build/source/actors/HRUActor.h +++ b/build/source/actors/HRUActor.h @@ -90,6 +90,13 @@ behavior hru_actor(stateful_actor<hru_state>* self, int refGRU, int indxGRU, self->state.end = std::chrono::high_resolution_clock::now(); self->state.duration += calculateTime(self->state.start, self->state.end); // Tell our parent we are done, convert all timings to seconds + + self->state.duration = self->state.duration / 1000; // Convert to milliseconds + self->state.initDuration = self->state.initDuration / 1000; // Convert to milliseconds + self->state.forcingDuration = self->state.forcingDuration / 1000; // Convert to milliseconds + self->state.runPhysicsDuration = self->state.runPhysicsDuration / 1000; // Convert to milliseconds + self->state.writeOutputDuration = self->state.writeOutputDuration / 1000; // Convert to milliseconds + self->send(self->state.parent, done_hru_v, self->state.indxGRU, diff --git a/build/source/actors/JobActor.h b/build/source/actors/JobActor.h index 63abb30..8dc2b6c 100644 --- a/build/source/actors/JobActor.h +++ b/build/source/actors/JobActor.h @@ -127,10 +127,12 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU, */ [=](done_file_access_actor_init) { // Init GRU Actors and the Output Structure - self->send(self->state.file_access_actor, initalize_outputStructure_v); + // self->send(self->state.file_access_actor, initalize_outputStructure_v); self->send(self, init_hru_v); }, + + [=](file_access_actor_done, double readDuration, double writeDuration) { int err = 0; if (debug) { @@ -151,6 +153,9 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU, self->state.end = std::chrono::high_resolution_clock::now(); self->state.duration = calculateTime(self->state.start, self->state.end); + + self->state.duration = self->state.duration / 1000; // Convert to milliseconds + aout(self) << "\nTotal Job Duration:\n"; aout(self) << " " << self->state.duration / 1000 << " Seconds\n"; aout(self) << " " << (self->state.duration / 1000) / 60 << " Minutes\n"; diff --git a/build/source/actors/SummaActor.h b/build/source/actors/SummaActor.h index 4bfe0e9..444bdc7 100644 --- a/build/source/actors/SummaActor.h +++ b/build/source/actors/SummaActor.h @@ -37,6 +37,10 @@ behavior summa_actor(stateful_actor<summa_manager>* self, int startGRU, int numG self->state.end = std::chrono::high_resolution_clock::now(); self->state.duration = calculateTime(self->state.start, self->state.end); + + self->state.duration = self->state.duration / 1000; // Convert to milliseconds + + aout(self) << "Total Program Duration:\n"; aout(self) << " " << self->state.duration / 1000 << " Seconds\n"; aout(self) << " " << (self->state.duration / 1000) / 60 << " Minutes\n"; diff --git a/build/source/actors/global.h b/build/source/actors/global.h index 58135bc..b3104cb 100644 --- a/build/source/actors/global.h +++ b/build/source/actors/global.h @@ -18,7 +18,7 @@ double calculateTime(std::chrono::time_point<std::chrono::system_clock> start, double calculateTime(std::chrono::time_point<std::chrono::system_clock> start, std::chrono::time_point<std::chrono::system_clock> end) { - return std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count(); + return std::chrono::duration_cast<std::chrono::microseconds>(end - start).count(); } -- GitLab