12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /* StarPU --- Runtime system for heterogeneous multicore architectures.
- *
- * Copyright (C) 2010-2013,2015,2017 CNRS
- * Copyright (C) 2009-2011,2014,2016 Université de Bordeaux
- * Copyright (C) 2011,2012 Inria
- *
- * StarPU is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or (at
- * your option) any later version.
- *
- * StarPU is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * See the GNU Lesser General Public License in COPYING.LGPL for more details.
- */
- /*! \defgroup API_Task_Bundles Task Bundles
- \typedef starpu_task_bundle_t
- \ingroup API_Task_Bundles
- Opaque structure describing a list of tasks that should be scheduled
- on the same worker whenever it’s possible. It must be considered as a
- hint given to the scheduler as there is no guarantee that they will be
- executed on the same worker.
- \fn void starpu_task_bundle_create(starpu_task_bundle_t *bundle)
- \ingroup API_Task_Bundles
- Factory function creating and initializing \p bundle, when the call
- returns, memory needed is allocated and \p bundle is ready to use.
- \fn int starpu_task_bundle_insert(starpu_task_bundle_t bundle, struct starpu_task *task)
- \ingroup API_Task_Bundles
- Insert \p task in \p bundle. Until \p task is removed from \p bundle
- its expected length and data transfer time will be considered along
- those of the other tasks of bundle. This function must not be called
- if \p bundle is already closed and/or \p task is already submitted.
- On success, it returns 0. There are two cases of error : if \p bundle
- is already closed it returns <c>-EPERM</c>, if \p task was already
- submitted it returns <c>-EINVAL</c>.
- \fn int starpu_task_bundle_remove(starpu_task_bundle_t bundle, struct starpu_task *task)
- \ingroup API_Task_Bundles
- Remove \p task from \p bundle. Of course \p task must have been
- previously inserted in \p bundle. This function must not be called if
- \p bundle is already closed and/or \p task is already submitted. Doing
- so would result in undefined behaviour. On success, it returns 0. If
- \p bundle is already closed it returns <c>-ENOENT</c>.
- \fn void starpu_task_bundle_close(starpu_task_bundle_t bundle)
- \ingroup API_Task_Bundles
- Inform the runtime that the user will not modify \p bundle anymore, it
- means no more inserting or removing task. Thus the runtime can destroy
- it when possible.
- \fn double starpu_task_bundle_expected_length(starpu_task_bundle_t bundle, struct starpu_perfmodel_arch *arch, unsigned nimpl)
- \ingroup API_Task_Bundles
- Return the expected duration of \p bundle in micro-seconds.
- \fn double starpu_task_bundle_expected_energy(starpu_task_bundle_t bundle, struct starpu_perfmodel_arch *arch, unsigned nimpl)
- \ingroup API_Task_Bundles
- Return the expected energy consumption of \p bundle in J.
- \fn double starpu_task_bundle_expected_data_transfer_time(starpu_task_bundle_t bundle, unsigned memory_node)
- \ingroup API_Task_Bundles
- Return the time (in micro-seconds) expected to transfer all data used within \p bundle.
- */
|