37 MPI_Comm_size( comm, &
n_ranks );
38 MPI_Comm_rank( comm, &
my_rank );
72 MPI_Comm get_comm()
const{
86 for(
int itask=0; itask<ntasks; itask++){
87 int assigned_rank = itask%
n_ranks;
89 int i_local_task = itask/
n_ranks;
90 func(itask, i_local_task);
104 void communicate(
int ntasks, F func)
const{
105 for(
int itask=0; itask<ntasks; itask++){
106 int i_local_task = itask/
n_ranks;
107 int assigned_rank = itask%
n_ranks;
108 bool is_assigned_rank = (
my_rank==assigned_rank);
109 func(itask, i_local_task, assigned_rank, is_assigned_rank, comm);
int my_rank
The rank of the current process within the MPI communicator.
Definition: task_group.hpp:18
void execute_task(int ntasks, F func) const
Execute the given task function for each assigned task.
Definition: task_group.hpp:85
A class that manages the distribution and execution of tasks in parallel using the MPI library...
Definition: task_group.hpp:14
int n_ranks
The total number of processes within the MPI communicator.
Definition: task_group.hpp:19
TaskGroup()
Default constructor for the TaskGroup class.
Definition: task_group.hpp:26
int get_my_rank() const
Get the rank of the current process within the MPI communicator.
Definition: task_group.hpp:47
int get_n_local_tasks(int n_tasks) const
Calculate the number of tasks assigned to the current process.
Definition: task_group.hpp:57
int get_max_n_local_tasks(int n_tasks) const
Calculate the maximum number of tasks assigned to any process.
Definition: task_group.hpp:67