insert_task.doxy 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*
  2. * This file is part of the StarPU Handbook.
  3. * Copyright (C) 2009--2011 Universit@'e de Bordeaux 1
  4. * Copyright (C) 2010, 2011, 2012, 2013 Centre National de la Recherche Scientifique
  5. * Copyright (C) 2011, 2012 Institut National de Recherche en Informatique et Automatique
  6. * See the file version.doxy for copying conditions.
  7. */
  8. /*! \defgroup API_Insert_Task Insert_Task
  9. \fn int starpu_insert_task(struct starpu_codelet *cl, ...)
  10. \ingroup API_Insert_Task
  11. Create and submit a task corresponding to \p cl with the
  12. following arguments. The argument list must be zero-terminated.
  13. The arguments following the codelets can be of the following types:
  14. <ul>
  15. <li> ::STARPU_R, ::STARPU_W, ::STARPU_RW, ::STARPU_SCRATCH,
  16. ::STARPU_REDUX an access mode followed by a data handle;
  17. <li> ::STARPU_DATA_ARRAY followed by an array of data handles and its
  18. number of elements;
  19. <li> the specific values ::STARPU_VALUE, ::STARPU_CALLBACK,
  20. ::STARPU_CALLBACK_ARG, ::STARPU_CALLBACK_WITH_ARG, ::STARPU_PRIORITY,
  21. ::STARPU_TAG, ::STARPU_FLOPS, ::STARPU_SCHED_CTX followed by the
  22. appropriated objects as defined elsewhere.
  23. </ul>
  24. When using ::STARPU_DATA_ARRAY, the access mode of the data handles is
  25. not defined.
  26. Parameters to be passed to the codelet implementation are defined
  27. through the type ::STARPU_VALUE. The function
  28. starpu_codelet_unpack_args() must be called within the codelet
  29. implementation to retrieve them.
  30. \def STARPU_VALUE
  31. \ingroup API_Insert_Task
  32. this macro is used when calling starpu_insert_task(), and must
  33. be followed by a pointer to a constant value and the size of the
  34. constant
  35. \def STARPU_CALLBACK
  36. \ingroup API_Insert_Task
  37. this macro is used when calling starpu_insert_task(), and must
  38. be followed by a pointer to a callback function
  39. \def STARPU_CALLBACK_WITH_ARG
  40. \ingroup API_Insert_Task
  41. this macro is used when calling starpu_insert_task(), and must
  42. be followed by two pointers: one to a callback function, and the other
  43. to be given as an argument to the callback function; this is
  44. equivalent to using both ::STARPU_CALLBACK and
  45. ::STARPU_CALLBACK_WITH_ARG.
  46. \def STARPU_CALLBACK_ARG
  47. \ingroup API_Insert_Task
  48. this macro is used when calling starpu_insert_task(), and must
  49. be followed by a pointer to be given as an argument to the callback
  50. function
  51. \def STARPU_PRIORITY
  52. \ingroup API_Insert_Task
  53. this macro is used when calling starpu_insert_task(), and must
  54. be followed by a integer defining a priority level
  55. \def STARPU_DATA_ARRAY
  56. \ingroup API_Insert_Task
  57. TODO
  58. \def STARPU_TAG
  59. \ingroup API_Insert_Task
  60. this macro is used when calling starpu_insert_task(), and must be followed by a tag.
  61. \def STARPU_FLOPS
  62. \ingroup API_Insert_Task
  63. this macro is used when calling starpu_insert_task(), and must
  64. be followed by an amount of floating point operations, as a double.
  65. Users <b>MUST</b> explicitly cast into double, otherwise parameter
  66. passing will not work.
  67. \def STARPU_SCHED_CTX
  68. \ingroup API_Insert_Task
  69. this macro is used when calling starpu_insert_task(), and must
  70. be followed by the id of the scheduling context to which we want to
  71. submit the task.
  72. \fn void starpu_codelet_pack_args(void **arg_buffer, size_t *arg_buffer_size, ...)
  73. \ingroup API_Insert_Task
  74. Pack arguments of type ::STARPU_VALUE into a buffer which can be
  75. given to a codelet and later unpacked with the function
  76. starpu_codelet_unpack_args().
  77. \fn void starpu_codelet_unpack_args (void *cl_arg, ...)
  78. \ingroup API_Insert_Task
  79. Retrieve the arguments of type ::STARPU_VALUE associated to a
  80. task automatically created using the function starpu_insert_task().
  81. */