StarPU Internal Handbook
|
#include <starpu.h>
#include <common/config.h>
#include <stdlib.h>
#include <stdarg.h>
#include <core/jobs.h>
#include <datawizard/coherency.h>
#include <datawizard/memalloc.h>
Go to the source code of this file.
Functions | |
void | _starpu_sort_task_handles (struct _starpu_data_descr descr[], unsigned nbuffers) |
int | _starpu_handles_same_root (starpu_data_handle_t dataA, starpu_data_handle_t dataB) |
void _starpu_sort_task_handles | ( | struct _starpu_data_descr | descr[], |
unsigned | nbuffers | ||
) |
To avoid deadlocks, we reorder the different buffers accessed to by the task so that we always grab the rw-lock associated to the handles in the same order.
int _starpu_handles_same_root | ( | starpu_data_handle_t | dataA, |
starpu_data_handle_t | dataB | ||
) |
The reordering however puts alongside some different handles, just because they have the same root. When avoiding to lock/acquire/load the same handle several times, we need to keep looking among those.