123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /*
- * This file is part of the StarPU Handbook.
- * Copyright (C) 2009
- * Copyright (C) 2010, 2011, 2012, 2013 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 Scheduling_Contexts Scheduling Contexts
- \brief StarPU permits on one hand grouping workers in combined workers
- in order to execute a parallel task and on the other hand grouping
- tasks in bundles that will be executed by a single specified worker.
- In contrast when we group workers in scheduling contexts we submit
- starpu tasks to them and we schedule them with the policy assigned to
- the context. Scheduling contexts can be created, deleted and modified
- dynamically.
- \fn unsigned starpu_sched_ctx_create(const char *policy_name, int *workerids_ctx, int nworkers_ctx, const char *sched_ctx_name)
- \ingroup Scheduling_Contexts
- This function creates a scheduling context which uses the scheduling
- policy \p policy_name and assigns the workers in \p workerids_ctx to
- execute the tasks submitted to it.
- The return value represents the identifier of the context that has
- just been created. It will be further used to indicate the context the
- tasks will be submitted to. The return value should be at most
- STARPU_NMAX_SCHED_CTXS.
- \fn void starpu_sched_ctx_delete(unsigned sched_ctx_id)
- \ingroup Scheduling_Contexts
- Delete scheduling context \p sched_ctx_id and transfer remaining
- workers to the inheritor scheduling context.
- \fn void starpu_sched_ctx_add_workers(int *workerids_ctx, int nworkers_ctx, unsigned sched_ctx_id)
- \ingroup Scheduling_Contexts
- This function adds dynamically the workers in \p workerids_ctx to the
- context \p sched_ctx_id. The last argument cannot be greater than
- STARPU_NMAX_SCHED_CTXS.
- \fn void starpu_sched_ctx_remove_workers(int *workerids_ctx, int nworkers_ctx, unsigned sched_ctx_id)
- \ingroup Scheduling_Contexts
- This function removes the workers in \p workerids_ctx from the context
- \p sched_ctx_id. The last argument cannot be greater than
- STARPU_NMAX_SCHED_CTXS.
- \struct starpu_worker_collection
- \ingroup Scheduling_Contexts
- \brief A scheduling context manages a collection of workers that can
- be memorized using different data structures. Thus, a generic
- structure is available in order to simplify the choice of its type.
- Only the list data structure is available but further data
- structures(like tree) implementations are foreseen.
- \var starpu_worker_collection::workerids
- The workerids managed by the collection
- \var starpu_worker_collection::nworkers
- The number of workers in the collection
- \var starpu_worker_collection::type
- The type of structure (currently STARPU_WORKER_LIST is the only one available)
- \var starpu_worker_collection::has_next
- Checks if there is a next worker
- \var starpu_worker_collection::get_next
- Gets the next worker
- \var starpu_worker_collection::add
- Adds a worker to the collection
- \var starpu_worker_collection::remove
- Removes a worker from the collection
- \var starpu_worker_collection::init
- Initialize the collection
- \var starpu_worker_collection::deinit
- Deinitialize the colection
- \fn struct starpu_worker_collection* starpu_sched_ctx_create_worker_collection(unsigned sched_ctx_id, int type)
- \ingroup Scheduling_Contexts
- Create a worker collection of the type indicated by the last parameterx
- for the context specified through the first parameter.
- \fn void starpu_sched_ctx_delete_worker_collection(unsigned sched_ctx_id)
- \ingroup Scheduling_Contexts
- Delete the worker collection of the specified scheduling context
- \fn struct starpu_worker_collection* starpu_sched_ctx_get_worker_collection(unsigned sched_ctx_id)
- \ingroup Scheduling_Contexts
- Return the worker collection managed by the indicated context
- \fn void starpu_sched_ctx_set_context(unsigned *sched_ctx_id)
- \ingroup Scheduling_Contexts
- Set the scheduling context the subsequent tasks will be submitted to
- \fn unsigned starpu_sched_ctx_get_context(void)
- \ingroup Scheduling_Contexts
- Return the scheduling context the tasks are currently submitted to
- \fn unsigned starpu_sched_ctx_get_nworkers(unsigned sched_ctx_id)
- \ingroup Scheduling_Contexts
- Return the number of workers managed by the specified contexts
- (Usually needed to verify if it manages any workers or if it should be
- blocked)
- \fn unsigned starpu_sched_ctx_get_nshared_workers(unsigned sched_ctx_id, unsigned sched_ctx_id2)
- \ingroup Scheduling_Contexts
- Return the number of workers shared by two contexts.
- \fn int starpu_sched_ctx_set_min_priority(unsigned sched_ctx_id, int min_prio)
- \ingroup Scheduling_Contexts
- Defines the minimum task priority level supported by the scheduling
- policy of the given scheduler context. The default minimum priority
- level is the same as the default priority level which is 0 by
- convention. The application may access that value by calling the
- starpu_sched_ctx_get_min_priority function. This function should only
- be called from the initialization method of the scheduling policy, and
- should not be used directly from the application.
- \fn int starpu_sched_ctx_set_max_priority(unsigned sched_ctx_id, int max_prio)
- \ingroup Scheduling_Contexts
- Defines the maximum priority level supported by the scheduling policy
- of the given scheduler context. The default maximum priority level is
- 1. The application may access that value by calling the
- starpu_sched_ctx_get_max_priority function. This function should only
- be called from the initialization method of the scheduling policy, and
- should not be used directly from the application.
- \fn int starpu_sched_ctx_get_min_priority(unsigned sched_ctx_id)
- \ingroup Scheduling_Contexts
- Returns the current minimum priority level supported by the scheduling
- policy of the given scheduler context.
- \fn int starpu_sched_ctx_get_max_priority(unsigned sched_ctx_id)
- \ingroup Scheduling_Contexts
- Returns the current maximum priority level supported by the scheduling
- policy of the given scheduler context.
- */
|