|
ARGOBOTS
dce6e727ffc4ca5b3ffc04cb9517c6689be51ec5
|
This group is for Pool definition. More...
Typedefs | |
| typedef ABT_unit(* | ABT_pool_user_create_unit_fn) (ABT_pool, ABT_thread) |
Function that creates an ABT_unit handle that is associated with an ABT_thread handle. More... | |
| typedef void(* | ABT_pool_user_free_unit_fn) (ABT_pool, ABT_unit) |
Function that frees an ABT_unit handle. More... | |
| typedef ABT_bool(* | ABT_pool_user_is_empty_fn) (ABT_pool) |
| Function that returns if a pool is empty. More... | |
| typedef ABT_thread(* | ABT_pool_user_pop_fn) (ABT_pool, ABT_pool_context) |
| Function that pops a work unit from a pool. More... | |
| typedef void(* | ABT_pool_user_push_fn) (ABT_pool, ABT_unit, ABT_pool_context) |
| Function that pushes a work unit to a pool. More... | |
| typedef int(* | ABT_pool_user_init_fn) (ABT_pool, ABT_pool_config) |
| Function that creates a pool. More... | |
| typedef void(* | ABT_pool_user_free_fn) (ABT_pool) |
| Function that frees a pool. More... | |
| typedef size_t(* | ABT_pool_user_get_size_fn) (ABT_pool) |
| Function that returns the number of work units in a pool. More... | |
| typedef ABT_thread(* | ABT_pool_user_pop_wait_fn) (ABT_pool, double, ABT_pool_context) |
| Function that pops a work unit from a pool with wait. More... | |
| typedef void(* | ABT_pool_user_pop_many_fn) (ABT_pool, ABT_thread *, size_t, size_t *, ABT_pool_context) |
| Function that pops work units from a pool. More... | |
| typedef void(* | ABT_pool_user_push_many_fn) (ABT_pool, const ABT_unit *, size_t, ABT_pool_context) |
| Function that pushes work units to a pool. More... | |
| typedef void(* | ABT_pool_user_print_all_fn) (ABT_pool, void *arg, void(*) (void *, ABT_thread)) |
| Function that applies a user-given function to all work units in a pool. More... | |
This group is for Pool definition.
| ABT_unit(* ABT_pool_user_create_unit_fn)(ABT_pool, ABT_thread) |
Function that creates an ABT_unit handle that is associated with an ABT_thread handle.
ABT_pool_user_create_unit_fn() creates a user-defined ABT_unit handle that is associated with the work-unit thread where thread is associated with the pool pool. thread is neither ABT_THREAD_NULL nor ABT_TASK_NULL. The returned value must point to a 4-byte aligned memory address that is unique in the system. This function may return ABT_UNIT_NULL if creation fails.
ABT_unit points to a 4-byte aligned memory block. An ABT_thread handle also satisfies these requirements.The user must implement ABT_pool_user_create_unit_fn() to implement a pool.
A caller of ABT_pool_user_create_unit_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
| void(* ABT_pool_user_free_fn)(ABT_pool pool) |
Function that frees a pool.
ABT_pool_user_free_fn() frees the pool pool and its associated resources.
ABT_pool_user_free_fn() is optional, so the user may set ABT_pool_user_free_fn to NULL.
A caller of ABT_pool_user_free_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
Function that frees an ABT_unit handle.
ABT_pool_user_free_unit_fn() frees the work unit unit that is created by its corresponding ABT_pool_user_create_unit_fn(). unit belongs to the pool pool. Its associated entity (i.e., ABT_thread) is freed by the Argobots runtime. ABT_UNIT_NULL is never passed as unit to this routine.
The user must implement ABT_pool_user_free_unit_fn() to implement a pool.
A caller of ABT_pool_user_free_unit_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
| size_t(* ABT_pool_user_get_size_fn)(ABT_pool pool) |
Function that returns the number of work units in a pool.
ABT_pool_user_get_size_fn() returns the size of the pool pool. The Argobots runtime assumes that the size indicates the number of work units in pool.
ABT_pool_user_get_size_fn() is optional, so the user may set ABT_pool_user_get_size_fn to NULL.
A caller of ABT_pool_user_get_size_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
| int(* ABT_pool_user_init_fn)(ABT_pool pool, ABT_pool_config pool_config) |
Function that creates a pool.
ABT_pool_user_init_fn() sets up the pool pool with the pool configuration pool_config. ABT_pool_user_init_fn() may return a value other than ABT_SUCCESS if creation fails.
ABT_pool_user_init_fn() is optional, so the user may set ABT_pool_user_init_fn to NULL.
A caller of ABT_pool_user_init_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
Function that returns if a pool is empty.
ABT_pool_user_is_empty_fn() returns ABT_TRUE if the pool pool is empty. Otherwise, it returns ABT_FALSE. The Argobots runtime assumes that the number of work units in pool is zero if this routine returns ABT_TRUE.
The user must implement ABT_pool_user_is_empty_fn() to implement a pool.
A caller of ABT_pool_user_is_empty_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
| ABT_unit(* ABT_pool_user_pop_fn)(ABT_pool pool, ABT_pool_context context) |
Function that pops a work unit from a pool.
ABT_pool_user_pop_fn() pops a work unit from the pool pool and returns it. The implementation of this routine may change its behavior based on the pool context context.
context.The user must implement ABT_pool_user_pop_fn() to implement a pool.
A caller of ABT_pool_user_pop_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
| void(* ABT_pool_user_pop_many_fn)(ABT_pool pool, ABT_thread *threads, size_t max_threads, size_t *num_popped, ABT_pool_context context) |
Function that pops work units from a pool.
ABT_pool_user_pop_many_fn() pops multiple work units from the pool pool and returns them through threads. This routine pops at maximum max_units work units from the pool and returns the number of popped work units to num_popped where num_popped is not NULL. The popped work units are stored in threads at indices from 0 to num_popped - 1. This routine may not modify elements of threads at indices from num_popped to max_threads. The implementation of this routine may change its behavior based on the pool context context.
context.ABT_pool_user_pop_many_fn() is optional, so the user may set ABT_pool_user_pop_many_fn to NULL.
A caller of ABT_pool_user_pop_many_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
| ABT_unit(* ABT_pool_user_pop_wait_fn)(ABT_pool pool, double time_secs, ABT_pool_context context) |
Function that pops a work unit from a pool with wait.
ABT_pool_user_pop_wait_fn() pops a work unit from the pool pool and returns it. If no work unit exists in pool, ABT_UNIT_NULL must be returned. time_secs hints at the duration in seconds that indicates how long the caller should wait on pool until a work unit is added to pool when pool is empty. The implementation of this routine may change its behavior based on the pool context context.
context.ABT_pool_user_pop_wait_fn() is optional, so the user may set ABT_pool_user_pop_wait_fn to NULL.
A caller of ABT_pool_user_pop_wait_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
| void(* ABT_pool_user_print_all_fn)(ABT_pool pool, void *arg, void(*print_f)(void *, ABT_thread)) |
Function that applies a user-given function to all work units in a pool.
ABT_pool_user_print_all_fn() applies print_f() to all work units in the pool pool. print_f() is called with the user-given argument arg and a work unit handle. The caller guarantees that print_f() does not modify the states of pool and work units in pool.
ABT_pool_user_print_all_fn() is optional, so the user may set ABT_pool_user_print_all_fn to NULL.
A caller of ABT_pool_user_print_all_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
| void(* ABT_pool_user_push_fn)(ABT_pool pool, ABT_unit unit, ABT_pool_context context) |
Function that pushes a work unit to a pool.
ABT_pool_user_push_fn() pushes the work unit unit to the pool pool. unit must be stored in pool and able to be popped by a pop function (e.g., ABT_pool_user_pop_fn()) later. The implementation of this routine may change its behavior based on the pool context context.
context.The user must implement ABT_pool_user_push_fn() to implement a pool.
A caller of ABT_pool_user_push_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
| void(* ABT_pool_user_push_many_fn)(ABT_pool pool, const ABT_unit *units, size_t num_units, ABT_pool_context context) |
Function that pushes work units to a pool.
ABT_pool_user_push_many_fn() pushes multiple work units to the pool pool. num_units specifies the number of work units in units. units must be stored in pool and able to be popped by a pop function (e.g., ABT_pool_user_pop_fn()) later. The implementation of this routine may change its behavior based on the pool context context.
context.ABT_pool_user_push_many_fn() is optional, so the user may set ABT_pool_user_push_many_fn to NULL.
A caller of ABT_pool_user_push_many_fn() is undefined, so a program that relies on a caller of this routine is non-conforming.
| int ABT_pool_user_def_create | ( | ABT_pool_user_create_unit_fn | p_create_unit, |
| ABT_pool_user_free_unit_fn | p_free_unit, | ||
| ABT_pool_user_is_empty_fn | p_is_empty, | ||
| ABT_pool_user_pop_fn | p_pop, | ||
| ABT_pool_user_push_fn | p_push, | ||
| ABT_pool_user_def * | newdef | ||
| ) |
Create a new pool definition.
ABT_pool_user_def_create() creates a new pool definition and returns its handle through newdef. p_create_unit, p_free_unit, p_is_empty, p_pop, p_push are registered to newdef.
newdef must be freed by ABT_pool_user_def_free() after its use.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_MEM is returned if memory allocation fails.ABT_ERR_SYS is returned if an error related to system calls and standard libraries occurs.newdef is NULL, the results are undefined.p_create_unit is NULL, the results are undefined.p_free_unit is NULL, the results are undefined.p_is_empty is NULL, the results are undefined.p_pop is NULL, the results are undefined.p_push is NULL, the results are undefined.| [in] | p_create_unit | unit creation function |
| [in] | p_free_unit | unit release function |
| [in] | p_is_empty | emptiness check function |
| [in] | p_pop | pop function |
| [in] | p_push | push function |
| [out] | newdef | pool definition handle |
Definition at line 50 of file pool_user_def.c.
| int ABT_pool_user_def_free | ( | ABT_pool_user_def * | def | ) |
Free a pool definition.
ABT_pool_user_def_free() deallocates the resource used for the pool definition def and sets def to ABT_POOL_USER_DEF_NULL.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_POOL_USER_DEF is returned if def points to ABT_POOL_USER_DEF_NULL.def is NULL, the results are undefined.def is accessed after calling this routine, the results are undefined.| [in,out] | def | pool definition handle |
Definition at line 104 of file pool_user_def.c.
| int ABT_pool_user_def_set_free | ( | ABT_pool_user_def | def, |
| ABT_pool_user_free_fn | p_free | ||
| ) |
Register a pool finalization function to a pool definition.
ABT_pool_user_def_set_free() registers the pool finalization function p_free to a pool definition def. If p_free is NULL, the corresponding function is removed from def.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_POOL_USER_DEF is returned if def is ABT_POOL_USER_DEF_NULL.def is accessed after calling this routine, the results are undefined.| [in] | def | pool definition handle |
| [in] | p_free | pool finalization function |
Definition at line 177 of file pool_user_def.c.
| int ABT_pool_user_def_set_get_size | ( | ABT_pool_user_def | def, |
| ABT_pool_user_get_size_fn | p_get_size | ||
| ) |
Register a size inquiry function to a pool definition.
ABT_pool_user_def_set_get_size() registers the size inquiry function p_get_size to a pool definition def. If p_get_size is NULL, the corresponding function is removed from def.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_POOL_USER_DEF is returned if def is ABT_POOL_USER_DEF_NULL.def is accessed after calling this routine, the results are undefined.| [in] | def | pool definition handle |
| [in] | p_get_size | size inquiry function |
Definition at line 212 of file pool_user_def.c.
| int ABT_pool_user_def_set_init | ( | ABT_pool_user_def | def, |
| ABT_pool_user_init_fn | p_init | ||
| ) |
Register a pool initialization function to a pool definition.
ABT_pool_user_def_set_init() registers the pool initialization function p_init to a pool definition def. If p_init is NULL, the corresponding function is removed from def.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_POOL_USER_DEF is returned if def is ABT_POOL_USER_DEF_NULL.def is accessed after calling this routine, the results are undefined.| [in] | def | pool definition handle |
| [in] | p_init | pool initialization function |
Definition at line 142 of file pool_user_def.c.
| int ABT_pool_user_def_set_pop_many | ( | ABT_pool_user_def | def, |
| ABT_pool_user_pop_many_fn | p_pop_many | ||
| ) |
Register a pop-many function to a pool definition.
ABT_pool_user_def_set_pop_many() registers the pop-many function p_pop_many to a pool definition def. If p_pop_many is NULL, the corresponding function is removed from def.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_POOL_USER_DEF is returned if def is ABT_POOL_USER_DEF_NULL.def is accessed after calling this routine, the results are undefined.| [in] | def | pool definition handle |
| [in] | p_pop_many | pop-many function |
Definition at line 282 of file pool_user_def.c.
| int ABT_pool_user_def_set_pop_wait | ( | ABT_pool_user_def | def, |
| ABT_pool_user_pop_wait_fn | p_pop_wait | ||
| ) |
Register a pop-wait function to a pool definition.
ABT_pool_user_def_set_pop_wait() registers the pop-wait function p_pop_wait to a pool definition def. If p_pop_wait is NULL, the corresponding function is removed from def.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_POOL_USER_DEF is returned if def is ABT_POOL_USER_DEF_NULL.def is accessed after calling this routine, the results are undefined.| [in] | def | pool definition handle |
| [in] | p_pop_wait | pop-wait function |
Definition at line 247 of file pool_user_def.c.
| int ABT_pool_user_def_set_print_all | ( | ABT_pool_user_def | def, |
| ABT_pool_user_print_all_fn | p_print_all | ||
| ) |
Register a print-all function to a pool definition.
ABT_pool_user_def_set_print_all() registers the print-all function p_print_all to a pool definition def. If p_print_all is NULL, the corresponding function is removed from def.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_POOL_USER_DEF is returned if def is ABT_POOL_USER_DEF_NULL.def is accessed after calling this routine, the results are undefined.| [in] | def | pool definition handle |
| [in] | p_print_all | print-all function |
Definition at line 352 of file pool_user_def.c.
| int ABT_pool_user_def_set_push_many | ( | ABT_pool_user_def | def, |
| ABT_pool_user_push_many_fn | p_push_many | ||
| ) |
Register a push-many function to a pool definition.
ABT_pool_user_def_set_push_many() registers the push-many function p_push_many to a pool definition def. If p_push_many is NULL, the corresponding function is removed from def.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_POOL_USER_DEF is returned if def is ABT_POOL_USER_DEF_NULL.def is accessed after calling this routine, the results are undefined.| [in] | def | pool definition handle |
| [in] | p_push_many | push-many function |
Definition at line 317 of file pool_user_def.c.
1.8.17