20 #ifndef __STARPU_TASK_H__
21 #define __STARPU_TASK_H__
29 #if defined STARPU_USE_CUDA && !defined STARPU_DONT_INCLUDE_CUDA_HEADERS
38 #define STARPU_NOWHERE ((1ULL)<<0)
39 #define STARPU_CPU ((1ULL)<<1)
40 #define STARPU_CUDA ((1ULL)<<3)
41 #define STARPU_OPENCL ((1ULL)<<6)
53 #define STARPU_TASK_INVALID 0
69 #define STARPU_MULTIPLE_CPU_IMPLEMENTATIONS ((starpu_cpu_func_t) -1)
70 #define STARPU_MULTIPLE_CUDA_IMPLEMENTATIONS ((starpu_cuda_func_t) -1)
71 #define STARPU_MULTIPLE_OPENCL_IMPLEMENTATIONS ((starpu_opencl_func_t) -1)
169 #define STARPU_TASK_INITIALIZER \
174 .callback_func = NULL, \
175 .callback_arg = NULL, \
176 .priority = STARPU_DEFAULT_PRIO, \
179 .execute_on_a_specific_worker = 0, \
184 .status = STARPU_TASK_INVALID, \
185 .profiling_info = NULL, \
187 .predicted_transfer = -1.0, \
188 .starpu_private = NULL, \
191 .hypervisor_tag = 0, \
194 .dyn_handles = NULL, \
195 .dyn_interfaces = NULL \
198 #define STARPU_TASK_GET_HANDLE(task, i) ((task->dyn_handles) ? task->dyn_handles[i] : task->handles[i])
199 #define STARPU_TASK_SET_HANDLE(task, handle, i) do { if (task->dyn_handles) task->dyn_handles[i] = handle; else task->handles[i] = handle; } while(0)
201 #define STARPU_CODELET_GET_MODE(codelet, i) ((codelet->dyn_modes) ? codelet->dyn_modes[i] : codelet->modes[i])
202 #define STARPU_CODELET_SET_MODE(codelet, mode, i) do { if (codelet->dyn_modes) codelet->dyn_modes[i] = mode; else codelet->modes[i] = mode; } while(0)
204 #define STARPU_CODELET_GET_NODE(codelet, i) ((codelet->dyn_nodes) ? codelet->dyn_nodes[i] : codelet->nodes[i])
205 #define STARPU_CODELET_SET_NODE(codelet, __node, i) do { if (codelet->dyn_nodes) codelet->dyn_nodes[i] = __node; else codelet->nodes[i] = __node; } while(0)