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