#include <starpu.h>
#include <semaphore.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <stdarg.h>
#include <common/config.h>
#include <common/timing.h>
#include <common/list.h>
#include <common/fxt.h>
#include <core/dependencies/tags.h>
#include <datawizard/datawizard.h>
#include <core/perfmodel/perfmodel.h>
#include <core/errorcheck.h>
#include <common/barrier.h>
#include <common/utils.h>
#include <cuda.h>
Go to the source code of this file.
|
#define | _STARPU_CPU_MAY_PERFORM(j) |
|
#define | _STARPU_CUDA_MAY_PERFORM(j) |
|
#define | _STARPU_OPENCL_MAY_PERFORM(j) |
|
#define | _STARPU_MIC_MAY_PERFORM(j) |
|
#define | _STARPU_JOB_GET_ORDERED_BUFFER_INDEX(job, i) |
|
#define | _STARPU_JOB_GET_ORDERED_BUFFER_HANDLE(job, i) |
|
#define | _STARPU_JOB_GET_ORDERED_BUFFER_MODE(job, i) |
|
#define | _STARPU_JOB_GET_ORDERED_BUFFER_NODE(job, i) |
|
#define | _STARPU_JOB_SET_ORDERED_BUFFER_INDEX(job, __index, i) |
|
#define | _STARPU_JOB_SET_ORDERED_BUFFER_HANDLE(job, __handle, i) |
|
#define | _STARPU_JOB_SET_ORDERED_BUFFER_MODE(job, __mode, i) |
|
#define | _STARPU_JOB_SET_ORDERED_BUFFER_NODE(job, __node, i) |
|
#define | _STARPU_JOB_SET_ORDERED_BUFFER(job, buffer, i) |
|
#define | _STARPU_JOB_GET_ORDERED_BUFFERS(job) |
|
#define | _STARPU_JOB_GET_DEP_SLOTS(job) |
|
|
void | _starpu_job_init (void) |
|
void | _starpu_job_fini (void) |
|
struct _starpu_job * | _starpu_job_create (struct starpu_task *task) STARPU_ATTRIBUTE_MALLOC |
|
void | _starpu_job_destroy (struct _starpu_job *j) |
|
int | _starpu_job_finished (struct _starpu_job *j) |
|
void | _starpu_wait_job (struct _starpu_job *j) |
|
int | _starpu_test_job_termination (struct _starpu_job *j) |
|
void | _starpu_job_prepare_for_continuation_ext (struct _starpu_job *j, unsigned continuation_resubmit, void(*continuation_callback_on_sleep)(void *arg), void *continuation_callback_on_sleep_arg) |
|
void | _starpu_job_prepare_for_continuation (struct _starpu_job *j) |
|
void | _starpu_job_set_omp_cleanup_callback (struct _starpu_job *j, void(*omp_cleanup_callback)(void *arg), void *omp_cleanup_callback_arg) |
|
void | _starpu_exclude_task_from_dag (struct starpu_task *task) |
|
unsigned | _starpu_enforce_deps_and_schedule (struct _starpu_job *j) |
|
unsigned | _starpu_enforce_deps_starting_from_task (struct _starpu_job *j) |
|
unsigned | _starpu_reenforce_task_deps_and_schedule (struct _starpu_job *j) |
|
void | _starpu_enforce_deps_notify_job_ready_soon (struct _starpu_job *j, _starpu_notify_job_start_data *data, int tag) |
|
void | _starpu_handle_job_submission (struct _starpu_job *j) |
|
void | _starpu_handle_job_termination (struct _starpu_job *j) |
|
size_t | _starpu_job_get_data_size (struct starpu_perfmodel *model, struct starpu_perfmodel_arch *arch, unsigned nimpl, struct _starpu_job *j) |
|
struct starpu_task * | _starpu_pop_local_task (struct _starpu_worker *worker) |
|
int | _starpu_push_local_task (struct _starpu_worker *worker, struct starpu_task *task, int prio) |
|
◆ _starpu_data_descr
struct _starpu_data_descr |
Data Fields |
starpu_data_handle_t |
handle |
|
enum starpu_data_access_mode |
mode |
|
int |
node |
|
int |
index |
This is the value actually chosen, only set by _starpu_fetch_task_input for coherency with __starpu_push_task_output
|
int |
orderedindex |
|
◆ _starpu_cl_func_t
typedef void(* _starpu_cl_func_t) (void **, void *) |
◆ _starpu_job_create()
struct _starpu_job* _starpu_job_create |
( |
struct starpu_task * |
task | ) |
|
Create an internal struct _starpu_job *structure to encapsulate the task.
◆ _starpu_job_destroy()
Destroy the data structure associated to the job structure
◆ _starpu_job_finished()
Test for the termination of the job
◆ _starpu_wait_job()
Wait for the termination of the job
◆ _starpu_test_job_termination()
int _starpu_test_job_termination |
( |
struct _starpu_job * |
j | ) |
|
Test for the termination of the job
◆ _starpu_job_prepare_for_continuation_ext()
void _starpu_job_prepare_for_continuation_ext |
( |
struct _starpu_job * |
j, |
|
|
unsigned |
continuation_resubmit, |
|
|
void(*)(void *arg) |
continuation_callback_on_sleep, |
|
|
void * |
continuation_callback_on_sleep_arg |
|
) |
| |
Prepare the job for accepting new dependencies before becoming a continuation.
◆ _starpu_exclude_task_from_dag()
void _starpu_exclude_task_from_dag |
( |
struct starpu_task * |
task | ) |
|
Specify that the task should not appear in the DAG generated by debug tools.
◆ _starpu_enforce_deps_and_schedule()
unsigned _starpu_enforce_deps_and_schedule |
( |
struct _starpu_job * |
j | ) |
|
try to submit job j, enqueue it if it's not schedulable yet. The job's sync mutex is supposed to be held already
◆ _starpu_reenforce_task_deps_and_schedule()
unsigned _starpu_reenforce_task_deps_and_schedule |
( |
struct _starpu_job * |
j | ) |
|
When waking up a continuation, we only enforce new task dependencies
◆ _starpu_handle_job_submission()
void _starpu_handle_job_submission |
( |
struct _starpu_job * |
j | ) |
|
Called at the submission of the job
◆ _starpu_handle_job_termination()
void _starpu_handle_job_termination |
( |
struct _starpu_job * |
j | ) |
|
This function must be called after the execution of a job, this triggers all job's dependencies and perform the callback function if any.
◆ _starpu_job_get_data_size()
size_t _starpu_job_get_data_size |
( |
struct starpu_perfmodel * |
model, |
|
|
struct starpu_perfmodel_arch * |
arch, |
|
|
unsigned |
nimpl, |
|
|
struct _starpu_job * |
j |
|
) |
| |
Get the sum of the size of the data accessed by the job.
◆ _starpu_pop_local_task()
struct starpu_task* _starpu_pop_local_task |
( |
struct _starpu_worker * |
worker | ) |
|
Get a task from the local pool of tasks that were explicitly attributed to that worker.
◆ _starpu_push_local_task()
int _starpu_push_local_task |
( |
struct _starpu_worker * |
worker, |
|
|
struct starpu_task * |
task, |
|
|
int |
prio |
|
) |
| |
Put a task into the pool of tasks that are explicitly attributed to the specified worker. If "back" is set, the task is put at the back of the list. Considering the tasks are popped from the back, this value should be 0 to enforce a FIFO ordering.