diff --git a/src/load_balance_general.c b/src/load_balance_general.c index 81623769eeef26ef39d17a8469e98f260e6afae5..cc2376423bb8703be11c55582d5cad2b20eae1dd 100644 --- a/src/load_balance_general.c +++ b/src/load_balance_general.c @@ -14,6 +14,11 @@ /** * Displays provided worker data through master process. + * + * :param thread_args_ptr: Struct for processor values. + * :param process_num: Processor to update status of. + * :param process_load_status: Load value to display for processor. + * :param init_run: Bool indicating if this is an initialization run or not. Determines if terminal lines are overridden. */ void main_display_status(thread_struct* thread_args_ptr, int process_num, int process_load_status, int init_run) { int index; @@ -58,6 +63,8 @@ void main_display_status(thread_struct* thread_args_ptr, int process_num, int pr /** * Sends message to all worker processes that all work has been completed, and it's okay to terminate now. + * + * :param thread_args_ptr: Struct for processor values. */ void main_terminate_workers(thread_struct* thread_args_ptr) { int index; @@ -91,6 +98,9 @@ void main_terminate_workers(thread_struct* thread_args_ptr) { /** * Sends worker load status and rank to master process. + * + * :param process_rank: Id of process sending status update. + * :param process_load_status: Current value of load to display to console. */ void worker_send_status(int process_rank, int process_load_status) { int* send_array = calloc(2, sizeof(int)); @@ -98,6 +108,9 @@ void worker_send_status(int process_rank, int process_load_status) { log(""); log("FUNCTION worker_send_status()"); + sprintf(log_msg, " process_rank: %i", process_rank); + log(log_msg); free(log_msg); + log_msg = calloc(256, sizeof(char)); sprintf(log_msg, " process_load_status: %i", process_load_status); log(log_msg); free(log_msg); fflush(stdout); @@ -147,8 +160,10 @@ int worker_check_status() { /** * Attempts to receive work from given "possible donor" process (donor is determined by load balancing schema). - * * Does so by sending message to "possible donor" process, to initiate request. + * + * :param thread_args_ptr: Struct for processor values. + * :param possible_donor: Fellow worker thread to beg for work from. */ void worker_send_request(thread_struct* thread_args_ptr, int possible_donor) { int msg_status_flag = 0; @@ -199,6 +214,8 @@ void worker_send_request(thread_struct* thread_args_ptr, int possible_donor) { * * To handle request, either splits current work load in half (asking process gets the smaller portion if odd number) * or returns negative number if no work to send. + * + * :param thread_args_ptr: Struct for processor values. */ void worker_handle_request(thread_struct* thread_args_ptr) { int msg_status_flag = 0; diff --git a/src/load_balance_schemes.c b/src/load_balance_schemes.c index ee51fc85f0da099b1797c938767c3e3a43398023..d80e4ea8436c1a36db4a711a87a547aa488b9434 100644 --- a/src/load_balance_schemes.c +++ b/src/load_balance_schemes.c @@ -15,6 +15,8 @@ /** * Entrypoint for logic to run "Asynchronous Round Robin" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void arr_run(thread_struct* thread_args_ptr) { int process_rank = thread_args_ptr->thread_num; @@ -53,6 +55,8 @@ void arr_run(thread_struct* thread_args_ptr) { /** * Main processor logic for "Asynchronous Round Robin" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void arr_main(thread_struct* thread_args_ptr) { int index; @@ -130,6 +134,8 @@ void arr_main(thread_struct* thread_args_ptr) { /** * Worker processor logic for "Asynchronous Round Robin" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void arr_worker(thread_struct* thread_args_ptr) { int process_rank = thread_args_ptr->thread_num; @@ -236,18 +242,14 @@ void arr_worker(thread_struct* thread_args_ptr) { } } - // Work is complete. Stick around briefly to ensure all pending message requests are handled. - for (index = 0; index < 5; index++) { - worker_handle_request(thread_args_ptr); - sleep(1); - } - log("Finished ARR worker."); } /** * Entrypoint for logic to run "Global Round Robin" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void grr_run(int total_processors) { printf("Starting GRR load scheme."); @@ -258,6 +260,8 @@ void grr_run(int total_processors) { /** * Main processor logic for "Global Round Robin" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void grr_main(thread_struct* thread_args_ptr) { log("Starting GRR main."); @@ -268,6 +272,8 @@ void grr_main(thread_struct* thread_args_ptr) { /** * Worker processor logic for "Global Round Robin" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void grr_worker(thread_struct* thread_args_ptr) { log("Starting GRR worker."); @@ -278,6 +284,8 @@ void grr_worker(thread_struct* thread_args_ptr) { /** * Entrypoint for logic to run "Random Poling" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void rp_run(int total_processors) { log("Starting RP load scheme."); @@ -288,6 +296,8 @@ void rp_run(int total_processors) { /** * Main processor logic for "Random Poling" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void rp_main(thread_struct* thread_args_ptr) { log("Starting RP main."); @@ -298,6 +308,8 @@ void rp_main(thread_struct* thread_args_ptr) { /** * Worker processor logic for "Random Poling" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void rp_worker(thread_struct* thread_args_ptr) { log("Starting RP worker."); @@ -309,6 +321,8 @@ void rp_worker(thread_struct* thread_args_ptr) { /** * Entrypoint for logic to run "Nearest Neighbor" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void nn_run(int total_processors) { log("Starting NN load scheme."); @@ -319,6 +333,8 @@ void nn_run(int total_processors) { /** * Main processor logic for "Nearest Neighbor" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void nn_main(thread_struct* thread_args_ptr) { log("Starting NN main."); @@ -330,6 +346,8 @@ void nn_main(thread_struct* thread_args_ptr) { /** * Worker processor logic for "Nearest Neighbor" load scheme. + * + * :param thread_args_ptr: Struct for processor values. */ void nn_worker(thread_struct* thread_args_ptr) { log("Starting NN worker.");