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_CPU ((1ULL)<<1)
39 #define STARPU_CUDA ((1ULL)<<3)
40 #define STARPU_OPENCL ((1ULL)<<6)
52 #define STARPU_TASK_INVALID 0
68 #define STARPU_MULTIPLE_CPU_IMPLEMENTATIONS ((starpu_cpu_func_t) -1)
69 #define STARPU_MULTIPLE_CUDA_IMPLEMENTATIONS ((starpu_cuda_func_t) -1)
70 #define STARPU_MULTIPLE_OPENCL_IMPLEMENTATIONS ((starpu_opencl_func_t) -1)
168 #define STARPU_TASK_INITIALIZER \
173 .callback_func = NULL, \
174 .callback_arg = NULL, \
175 .priority = STARPU_DEFAULT_PRIO, \
178 .execute_on_a_specific_worker = 0, \
183 .status = STARPU_TASK_INVALID, \
184 .profiling_info = NULL, \
186 .predicted_transfer = -1.0, \
187 .starpu_private = NULL, \
190 .hypervisor_tag = 0, \
193 .dyn_handles = NULL, \
194 .dyn_interfaces = NULL \
197 #define STARPU_TASK_GET_HANDLE(task, i) ((task->dyn_handles) ? task->dyn_handles[i] : task->handles[i])
198 #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)
200 #define STARPU_CODELET_GET_MODE(codelet, i) ((codelet->dyn_modes) ? codelet->dyn_modes[i] : codelet->modes[i])
201 #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)
203 #define STARPU_CODELET_GET_NODE(codelet, i) ((codelet->dyn_nodes) ? codelet->dyn_nodes[i] : codelet->nodes[i])
204 #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)