/* * This file is part of the StarPU Handbook. * Copyright (C) 2009--2011 Universit@'e de Bordeaux 1 * Copyright (C) 2010, 2011, 2012, 2013, 2014 Centre National de la Recherche Scientifique * Copyright (C) 2011, 2012 Institut National de Recherche en Informatique et Automatique * See the file version.doxy for copying conditions. */ /*! \defgroup API_Insert_Task Insert_Task \fn starpu_insert_task(struct starpu_codelet *cl, ...) \ingroup API_Insert_Task This function does the same as the function starpu_task_insert(). It has been kept to avoid breaking old codes. \fn int starpu_task_insert(struct starpu_codelet *cl, ...) \ingroup API_Insert_Task Create and submit a task corresponding to \p cl with the following arguments. The argument list must be zero-terminated. The arguments following the codelet can be of the following types: When using ::STARPU_DATA_ARRAY, the access mode of the data handles is not defined. Parameters to be passed to the codelet implementation are defined through the type ::STARPU_VALUE. The function starpu_codelet_unpack_args() must be called within the codelet implementation to retrieve them. \def STARPU_VALUE \ingroup API_Insert_Task this macro is used when calling starpu_task_insert(), and must be followed by a pointer to a constant value and the size of the constant \def STARPU_CALLBACK \ingroup API_Insert_Task this macro is used when calling starpu_task_insert(), and must be followed by a pointer to a callback function \def STARPU_CALLBACK_WITH_ARG \ingroup API_Insert_Task this macro is used when calling starpu_task_insert(), and must be followed by two pointers: one to a callback function, and the other to be given as an argument to the callback function; this is equivalent to using both ::STARPU_CALLBACK and ::STARPU_CALLBACK_WITH_ARG. \def STARPU_CALLBACK_ARG \ingroup API_Insert_Task this macro is used when calling starpu_task_insert(), and must be followed by a pointer to be given as an argument to the callback function \def STARPU_PRIORITY \ingroup API_Insert_Task this macro is used when calling starpu_task_insert(), and must be followed by a integer defining a priority level \def STARPU_DATA_ARRAY \ingroup API_Insert_Task TODO \def STARPU_EXECUTE_ON_WORKER \ingroup API_Insert_Task this macro is used when calling starpu_task_insert(), and must be followed by an integer value specifying the worker on which to execute the task (as specified by starpu_task::execute_on_a_specific_worker) \def STARPU_TAG \ingroup API_Insert_Task this macro is used when calling starpu_task_insert(), and must be followed by a tag. \def STARPU_TAG_ONLY \ingroup API_Insert_Task this macro is used when calling starpu_task_insert(), and must be followed by a tag. It sets ::tag_id, but leaves ::use_tag as 0. \def STARPU_FLOPS \ingroup API_Insert_Task this macro is used when calling starpu_task_insert(), and must be followed by an amount of floating point operations, as a double. Users MUST explicitly cast into double, otherwise parameter passing will not work. \def STARPU_SCHED_CTX \ingroup API_Insert_Task this macro is used when calling starpu_task_insert(), and must be followed by the id of the scheduling context to which we want to submit the task. \fn void starpu_codelet_pack_args(void **arg_buffer, size_t *arg_buffer_size, ...) \ingroup API_Insert_Task Pack arguments of type ::STARPU_VALUE into a buffer which can be given to a codelet and later unpacked with the function starpu_codelet_unpack_args(). \fn void starpu_codelet_unpack_args(void *cl_arg, ...) \ingroup API_Insert_Task Retrieve the arguments of type ::STARPU_VALUE associated to a task automatically created using the function starpu_task_insert(). \fn struct starpu_task *starpu_task_build(struct starpu_codelet *cl, ...) \ingroup API_Insert_Task Create a task corresponding to \p cl with the following arguments. The argument list must be zero-terminated. The arguments following the codelet are the same as the ones for the function starpu_task_insert(). */