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)