From 0aec7d026da6221ffd6b8501d2e953720cace640 Mon Sep 17 00:00:00 2001 From: Kyle <kyle.c.klenk@gmail.com> Date: Thu, 7 Mar 2024 01:38:07 +0000 Subject: [PATCH] Add batch size setting to Job_Actor_Settings --- build/includes/global/settings_functions.hpp | 3 ++- build/source/actors/global/settings_functions.cpp | 3 +++ build/source/actors/job_actor/job_actor.cpp | 8 ++++---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/build/includes/global/settings_functions.hpp b/build/includes/global/settings_functions.hpp index 95a7695..5e6df55 100644 --- a/build/includes/global/settings_functions.hpp +++ b/build/includes/global/settings_functions.hpp @@ -85,7 +85,8 @@ File_Access_Actor_Settings readFileAccessActorSettings(std::string json_settings struct Job_Actor_Settings { std::string file_manager_path; int max_run_attempts; // maximum number of times to attempt to run each HRU in a job - bool data_assimilation_mode; + bool data_assimilation_mode; // All HRUs actors much finish before the next time step is started + int batch_size; // Initial condition for the number of HRUs to run in a batch }; template<class Inspector> diff --git a/build/source/actors/global/settings_functions.cpp b/build/source/actors/global/settings_functions.cpp index 2d3f4d3..bd9c5d2 100644 --- a/build/source/actors/global/settings_functions.cpp +++ b/build/source/actors/global/settings_functions.cpp @@ -102,6 +102,9 @@ Job_Actor_Settings readJobActorSettings(std::string json_settings_file) { job_actor_settings.data_assimilation_mode = getSettings(json_settings_file, parent_key, "data_assimilation_mode", job_actor_settings.data_assimilation_mode).value_or(false); + job_actor_settings.batch_size = getSettings(json_settings_file, parent_key, + "batch_size", job_actor_settings.batch_size).value_or(10); + return job_actor_settings; } diff --git a/build/source/actors/job_actor/job_actor.cpp b/build/source/actors/job_actor/job_actor.cpp index 1220813..96336f8 100644 --- a/build/source/actors/job_actor/job_actor.cpp +++ b/build/source/actors/job_actor/job_actor.cpp @@ -3,8 +3,7 @@ using json = nlohmann::json; using chrono_time = std::chrono::time_point<std::chrono::system_clock>; -bool batching = true; -int batch_size = 10; +int batch_size = 20; namespace caf { @@ -94,7 +93,7 @@ behavior job_actor(stateful_actor<job_state>* self, auto& gru_container = self->state.gru_container; // Spawn HRUs in batches or individually - if (batching) + if (self->state.job_actor_settings.batch_size > 1) spawnHRUBatches(self); else spawnHRUActors(self, false); @@ -384,7 +383,8 @@ void spawnHRUBatches(stateful_actor<job_state>* self) { int start_hru_local = 1; while (remaining_hru_to_batch > 0) { - int current_batch_size = std::min(batch_size, remaining_hru_to_batch); + int current_batch_size = std::min(self->state.job_actor_settings.batch_size, + remaining_hru_to_batch); auto gru_batch = self->spawn(hru_batch_actor, start_hru_local, start_hru_global, current_batch_size, self->state.hru_actor_settings, -- GitLab