StarPU Handbook

Functions
Parallel Tasks

## Functions
unsigned | starpu_combined_worker_get_count (void)
unsigned | starpu_worker_is_combined_worker (int id)
int | starpu_combined_worker_get_id (void)
int | starpu_combined_worker_get_size (void)
int | starpu_combined_worker_get_rank (void)
int | starpu_combined_worker_assign_workerid (int nworkers, int workerid_array[])
int | starpu_combined_worker_get_description (int workerid, int *worker_size, int **combined_workerid)
int | starpu_combined_worker_can_execute_task (unsigned workerid, struct starpu_task *task, unsigned nimpl)
void | starpu_parallel_task_barrier_init (struct starpu_task *task, int workerid)
void | starpu_parallel_task_barrier_init_n (struct starpu_task *task, int worker_size)

## Detailed Description

## Function Documentation

## ◆ starpu_combined_worker_get_count()

unsigned starpu_combined_worker_get_count | ( | void |  | ) |

Return the number of different combined workers.

## ◆ starpu_combined_worker_get_id()

int starpu_combined_worker_get_id | ( | void |  | ) |

Return the identifier of the current combined worker.

## ◆ starpu_combined_worker_get_size()

int starpu_combined_worker_get_size | ( | void |  | ) |

Return the size of the current combined worker, i.e. the total number of CPUS running the same task in the case of STARPU_SPMD parallel tasks, or the total number of threads that the task is allowed to start in the case of STARPU_FORKJOIN parallel tasks.

## ◆ starpu_combined_worker_get_rank()

int starpu_combined_worker_get_rank | ( | void |  | ) |

Return the rank of the current thread within the combined worker. Can only be used in STARPU_SPMD parallel tasks, to know which part of the task to work on.

## ◆ starpu_combined_worker_assign_workerid()

int starpu_combined_worker_assign_workerid | ( | int | nworkers,
|  | int | workerid_array[]
| ) |  |

Register a new combined worker and get its identifier

## ◆ starpu_combined_worker_get_description()

int starpu_combined_worker_get_description | ( | int | workerid,
|  | int * | worker_size,
|  | int ** | combined_workerid
| ) |  |

Get the description of a combined worker

## ◆ starpu_combined_worker_can_execute_task()

int starpu_combined_worker_can_execute_task | ( | unsigned | workerid,
|  | struct starpu_task * | task,
|  | unsigned | nimpl
| ) |  |

Variant of starpu_worker_can_execute_task() compatible with combined workers

## ◆ starpu_parallel_task_barrier_init()

void starpu_parallel_task_barrier_init | ( | struct starpu_task * | task,
|  | int | workerid
| ) |  |

Initialise the barrier for the parallel task, and dispatch the task between the different workers of the given combined worker.

## ◆ starpu_parallel_task_barrier_init_n()

void starpu_parallel_task_barrier_init_n | ( | struct starpu_task * | task,
|  | int | worker_size
| ) |  |

Initialise the barrier for the parallel task, to be pushed to `worker_size` workers (without having to explicit a given combined worker).