|
ARGOBOTS
dce6e727ffc4ca5b3ffc04cb9517c6689be51ec5
|
This group is for the self wok unit. More...
Functions | |
| int | ABT_self_get_xstream (ABT_xstream *xstream) |
| Get an execution stream that is running the calling work unit. More... | |
| int | ABT_self_get_xstream_rank (int *rank) |
| Return a rank of an execution stream that is running the calling work unit. More... | |
| int | ABT_self_get_thread (ABT_thread *thread) |
| Get the calling work unit. More... | |
| int | ABT_self_get_thread_id (ABT_unit_id *id) |
| Get ID of the calling work unit. More... | |
| int | ABT_self_get_task (ABT_thread *thread) |
| Get the calling work unit. More... | |
| int | ABT_self_get_task_id (ABT_unit_id *id) |
| Get ID of the calling work unit. More... | |
| int | ABT_self_set_specific (ABT_key key, void *value) |
| Associate a value with a work-unit-specific data key in the calling work unit. More... | |
| int | ABT_self_get_specific (ABT_key key, void **value) |
| Get a value associated with a work-unit-specific data key in the calling work unit. More... | |
| int | ABT_self_get_type (ABT_unit_type *type) |
| Obtain a type of the caller. More... | |
| int | ABT_self_is_primary (ABT_bool *is_primary) |
| Check if the caller is the primary ULT. More... | |
| int | ABT_self_on_primary_xstream (ABT_bool *on_primary) |
| Check if the caller is running on the primary execution stream. More... | |
| int | ABT_self_get_last_pool (ABT_pool *pool) |
| Get the last pool of the calling work unit. More... | |
| int | ABT_self_get_last_pool_id (int *pool_id) |
| Get ID of the last pool of the calling work unit. More... | |
| int | ABT_self_set_associated_pool (ABT_pool pool) |
| Set an associated pool for the calling work unit. More... | |
| int | ABT_self_get_unit (ABT_unit *unit) |
| Get a unit handle of the calling work unit. More... | |
| int | ABT_self_yield (void) |
| Yield the calling ULT to its parent ULT. More... | |
| int | ABT_self_yield_to (ABT_thread thread) |
| Yield the calling ULT to another ULT. More... | |
| int | ABT_self_resume_yield_to (ABT_thread thread) |
| Yield the calling ULT to another suspended ULT. More... | |
| int | ABT_self_suspend (void) |
| Suspend the calling ULT. More... | |
| int | ABT_self_suspend_to (ABT_thread thread) |
| Suspend the calling ULT and jump to another ULT. More... | |
| int | ABT_self_resume_suspend_to (ABT_thread thread) |
| Suspend the calling ULT and jump to another suspended ULT. More... | |
| int | ABT_self_exit (void) |
| Terminate a calling ULT. More... | |
| int | ABT_self_exit_to (ABT_thread thread) |
| Terminate the calling ULT and jump to another ULT. More... | |
| int | ABT_self_resume_exit_to (ABT_thread thread) |
| Terminate the calling ULT and jump to another suspended ULT. More... | |
| int | ABT_self_schedule (ABT_thread thread, ABT_pool pool) |
| Execute a work unit on the calling ULT. More... | |
| int | ABT_self_set_arg (void *arg) |
| Set an argument for a work-unit function of the calling work unit. More... | |
| int | ABT_self_get_arg (void **arg) |
| Retrieve an argument for a work-unit function of the calling work unit. More... | |
| int | ABT_self_get_thread_func (void(**thread_func)(void *)) |
| Retrieve a work-unit function of the calling work unit. More... | |
| int | ABT_self_is_unnamed (ABT_bool *is_unnamed) |
| Check if the calling work unit is unnamed. More... | |
This group is for the self wok unit.
| int ABT_self_exit | ( | void | ) |
Terminate a calling ULT.
ABT_self_exit() terminates the calling ULT. This routine does not return if it succeeds.
ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_THREAD is returned if the caller is a tasklet.ABT_ERR_INV_THREAD is returned if the caller is the primary ULT.| int ABT_self_exit_to | ( | ABT_thread | thread | ) |
Terminate the calling ULT and jump to another ULT.
ABT_self_exit_to() terminates the calling ULT and schedules the ULT thread as a child thread of the calling ULT's parent. This routine does not return if it succeeds. It is the user's responsibility to pop thread from its associated pool before calling this routine.
ABT_ERR_INV_THREAD is returned if thread is ABT_THREAD_NULL or ABT_TASK_NULL.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_THREAD is returned if the caller is a tasklet.ABT_ERR_INV_THREAD is returned if thread is a tasklet.ABT_ERR_INV_THREAD is returned if the caller is the work unit of the main scheduler.ABT_ERR_INV_THREAD is returned if thread is the work unit of the main scheduler.ABT_ERR_INV_THREAD is returned if the caller is the primary ULT.ABT_ERR_INV_THREAD is returned if thread is the caller.thread is accessed concurrently, the results are undefined.thread, the pool associated with thread is in a pool, the results are undefined.thread is not ready, the results are undefined.| [in] | thread | handle to the target thread |
| int ABT_self_get_arg | ( | void ** | arg | ) |
Retrieve an argument for a work-unit function of the calling work unit.
ABT_self_get_arg() returns the argument that is passed to the caller's work-unit function through arg.
[Argobots 1.x] This routine returns ABT_ERR_UNINITIALIZED if Argobots is not initialized.
[Argobots 2.0] The results of this routine are undefined if Argobots is not initialized.
[Argobots 1.x] arg is set to NULL if an error occurs.
[Argobots 2.0] arg is not updated if an error occurs.
arg when an error occurs. ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_UNINITIALIZED is returned if the Argobots runtime is not initialized.arg is NULL, the results are undefined.| [out] | arg | argument for the caller's function |
| int ABT_self_get_last_pool | ( | ABT_pool * | pool | ) |
Get the last pool of the calling work unit.
ABT_self_get_last_pool() returns the last pool associated with the calling work unit through pool.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.pool is NULL, the results are undefined.| [out] | pool | pool handle |
| int ABT_self_get_last_pool_id | ( | int * | pool_id | ) |
Get ID of the last pool of the calling work unit.
ABT_self_get_last_pool_id() returns the last pool's ID of the calling work unit through pool_id.
[Argobots 1.x] This routine returns ABT_ERR_UNINITIALIZED if Argobots is not initialized.
[Argobots 2.0] The results of this routine are undefined if Argobots is not initialized.
[Argobots 1.x] pool_id is set to -1 if an error occurs.
[Argobots 2.0] pool_id is not updated if an error occurs.
pool_id when an error occurs. ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_UNINITIALIZED is returned if the Argobots runtime is not initialized.pool_id is NULL, the results are undefined.| [out] | pool_id | pool ID |
| int ABT_self_get_specific | ( | ABT_key | key, |
| void ** | value | ||
| ) |
Get a value associated with a work-unit-specific data key in the calling work unit.
ABT_self_get_specific() returns the value in the caller associated with the work-unit-specific data key key in the calling work unit through value. If the caller has never set a value for key, this routine sets value to NULL.
Work-unit-specific values associated with a work-unit-specific data key are read and updated atomically.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_KEY is returned if key is ABT_KEY_NULL.value is NULL, the results are undefined.| [in] | key | work-unit-specific data key handle |
| [out] | value | value associated with key |
| int ABT_self_get_task | ( | ABT_thread * | thread | ) |
Get the calling work unit.
The functionality of this routine is the same as ABT_self_get_thread().
| int ABT_self_get_task_id | ( | ABT_unit_id * | id | ) |
Get ID of the calling work unit.
The functionality of this routine is the same as ABT_self_get_thread_id().
| int ABT_self_get_thread | ( | ABT_thread * | thread | ) |
Get the calling work unit.
ABT_self_get_thread() returns the handle of the calling work unit through thread.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.thread is NULL, the results are undefined.| [out] | thread | work unit handle |
| int ABT_self_get_thread_func | ( | void(**)(void *) | thread_func | ) |
Retrieve a work-unit function of the calling work unit.
ABT_self_get_thread_func() returns the work-unit function of the calling work unit through thread_func.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.thread_func is NULL, the results are undefined.| [out] | thread_func | the caller's function |
| int ABT_self_get_thread_id | ( | ABT_unit_id * | id | ) |
Get ID of the calling work unit.
ABT_self_get_thread_id() returns the ID of the calling work unit through id.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.id is NULL, the results are undefined.| [out] | id | ID of the calling work unit |
| int ABT_self_get_type | ( | ABT_unit_type * | type | ) |
Obtain a type of the caller.
ABT_self_get_type() returns a type of the calling work unit through type. If the caller is a ULT, type is set to ABT_UNIT_TYPE_THREAD. If the caller is a tasklet, type is set to ABT_UNIT_TYPE_TASK. Otherwise (i.e., if the caller is an external thread), type is set to ABT_UNIT_TYPE_EXT.
[Argobots 1.x] If an external thread calls this routine, ABT_ERR_INV_XSTREAM is returned.
[Argobots 2.0] An external thread may call this routine.
[Argobots 1.x] This routine returns ABT_ERR_UNINITIALIZED if Argobots is not initialized.
[Argobots 2.0] The results of this routine are undefined if Argobots is not initialized.
[Argobots 1.x] type is set to ABT_UNIT_TYPE_EXT if an error occurs.
[Argobots 2.0] type is not updated if an error occurs.
type when an error occurs. ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_UNINITIALIZED is returned if the Argobots runtime is not initialized.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.type is NULL, the results are undefined.| [out] | type | work unit type |
| int ABT_self_get_unit | ( | ABT_unit * | unit | ) |
Get a unit handle of the calling work unit.
ABT_self_get_unit() returns the ABT_unit handle associated with the calling work unit through unit.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.unit is NULL, the results are undefined.| [out] | unit | work unit handle |
| int ABT_self_get_xstream | ( | ABT_xstream * | xstream | ) |
Get an execution stream that is running the calling work unit.
ABT_self_get_xstream() returns the handle of the execution stream that is running the calling work unit through xstream.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.xstream is NULL, the results are undefined.| [out] | xstream | execution stream handle |
| int ABT_self_get_xstream_rank | ( | int * | rank | ) |
Return a rank of an execution stream that is running the calling work unit.
ABT_self_get_xstream_rank() returns the rank of the execution stream that is running the calling work unit through rank.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.rank is NULL, the results are undefined.| [out] | rank | execution stream rank |
| int ABT_self_is_primary | ( | ABT_bool * | is_primary | ) |
Check if the caller is the primary ULT.
ABT_self_is_primary() checks whether the caller is the primary ULT and returns the result through is_primary. If the caller is the primary ULT, is_primary is set to ABT_TRUE. Otherwise, is_primary is set to ABT_FALSE.
[Argobots 1.x] If a tasklet calls this routine, ABT_ERR_INV_THREAD is returned.
[Argobots 2.0] A tasklet may call this routine.
[Argobots 1.x] If an external thread calls this routine, ABT_ERR_INV_XSTREAM is returned.
[Argobots 2.0] An external thread may call this routine.
[Argobots 1.x] This routine returns ABT_ERR_UNINITIALIZED if Argobots is not initialized.
[Argobots 2.0] The results of this routine are undefined if Argobots is not initialized.
[Argobots 1.x] is_primary is set to ABT_FALSE if an error occurs.
[Argobots 2.0] is_primary is not updated if an error occurs.
is_primary when an error occurs. ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_UNINITIALIZED is returned if the Argobots runtime is not initialized.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_THREAD is returned if the caller is a tasklet.is_primary is NULL, the results are undefined.| [out] | is_primary | result (ABT_TRUE: primary ULT, ABT_FALSE: not) |
| int ABT_self_is_unnamed | ( | ABT_bool * | is_unnamed | ) |
Check if the calling work unit is unnamed.
ABT_self_is_unnamed() checks if the calling work unit is unnamed and returns the result through is_unnamed. is_unnamed is set to ABT_TRUE if the calling work unit is unnamed. Otherwise, is_unnamed is set to ABT_FALSE.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.is_unnamed is NULL, the results are undefined.| [out] | is_unnamed | result (ABT_TRUE: unnamed, ABT_FALSE: not) |
| int ABT_self_on_primary_xstream | ( | ABT_bool * | on_primary | ) |
Check if the caller is running on the primary execution stream.
ABT_self_on_primary_xstream() checks whether the caller is running on the primary execution stream and returns the result through on_primary. If the caller is a work unit running on the primary execution stream, on_primary is set to ABT_TRUE. Otherwise, on_primary is set to ABT_FALSE.
[Argobots 1.x] If an external thread calls this routine, ABT_ERR_INV_XSTREAM is returned.
[Argobots 2.0] An external thread may call this routine.
[Argobots 1.x] This routine returns ABT_ERR_UNINITIALIZED if Argobots is not initialized.
[Argobots 2.0] The results of this routine are undefined if Argobots is not initialized.
[Argobots 1.x] on_primary is set to ABT_FALSE if an error occurs.
[Argobots 2.0] on_primary is not updated if an error occurs.
on_primary when an error occurs. ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_UNINITIALIZED is returned if the Argobots runtime is not initialized.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.on_primary is NULL, the results are undefined.| [out] | on_primary | result (ABT_TRUE: primary execution stream, ABT_FALSE: not) |
| int ABT_self_resume_exit_to | ( | ABT_thread | thread | ) |
Terminate the calling ULT and jump to another suspended ULT.
ABT_self_resume_exit_to() terminates the calling ULT, resumes the ULT thread, and schedules thread as a child thread of the calling ULT's parent. This routine does not return if it succeeds.
ABT_ERR_INV_THREAD is returned if thread is ABT_THREAD_NULL or ABT_TASK_NULL.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_THREAD is returned if the caller is a tasklet.ABT_ERR_INV_THREAD is returned if thread is a tasklet.ABT_ERR_INV_THREAD is returned if the caller is the work unit of the main scheduler.ABT_ERR_INV_THREAD is returned if thread is the work unit of the main scheduler.ABT_ERR_INV_THREAD is returned if the caller is the primary ULT.thread is accessed concurrently, the results are undefined.thread is not suspended, the results are undefined.| [in] | thread | handle to the target ULT |
| int ABT_self_resume_suspend_to | ( | ABT_thread | thread | ) |
Suspend the calling ULT and jump to another suspended ULT.
ABT_self_resume_suspend_to() suspends the execution of the calling ULT, resumes the ULT thread, and schedules thread as a child thread of the calling ULT's parent. The calling ULT is not pushed to its associated pool and its state becomes blocked. ABT_thread_resume() awakens the suspended ULT and pushes it back to its associated pool.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_THREAD is returned if thread is ABT_THREAD_NULL or ABT_TASK_NULL.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_THREAD is returned if the caller is a tasklet.ABT_ERR_INV_THREAD is returned if thread is a tasklet.ABT_ERR_INV_THREAD is returned if the caller is the work unit of the main scheduler.ABT_ERR_INV_THREAD is returned if thread is the work unit of the main scheduler.thread is accessed concurrently, the results are undefined.thread is not suspended, the results are undefined.| [in] | thread | handle to the target ULT |
| int ABT_self_resume_yield_to | ( | ABT_thread | thread | ) |
Yield the calling ULT to another suspended ULT.
ABT_self_resume_yield_to() yields the calling ULT, resumes the ULT thread, and schedules thread as a child thread of the calling ULT's parent. The calling ULT is pushed to its associated pool.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_THREAD is returned if thread is ABT_THREAD_NULL or ABT_TASK_NULL.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_THREAD is returned if the caller is a tasklet.ABT_ERR_INV_THREAD is returned if thread is a tasklet.ABT_ERR_INV_THREAD is returned if the caller is the work unit of the main scheduler.ABT_ERR_INV_THREAD is returned if thread is the work unit of the main scheduler.thread is accessed concurrently, the results are undefined.thread is not suspended, the results are undefined.| [in] | thread | handle to the target ULT |
| int ABT_self_schedule | ( | ABT_thread | thread, |
| ABT_pool | pool | ||
| ) |
Execute a work unit on the calling ULT.
ABT_self_schedule() runs the work unit thread as a child work unit on the calling ULT, which becomes a parent ULT. If pool is not ABT_POOL_NULL, this routine associates thread with the pool pool before thread is scheduled. The calling ULT will be resumed when a child work unit finishes or yields.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_THREAD is returned if the caller is a tasklet.ABT_ERR_INV_THREAD is returned if thread is ABT_THREAD_NULL or ABT_TASK_NULL.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.ABT_ERR_UNIT is returned if u_create_from_thread() fails.thread is not ready, the results are undefined.| [in] | thread | work unit handle |
| [in] | pool | pool handle |
| int ABT_self_set_arg | ( | void * | arg | ) |
Set an argument for a work-unit function of the calling work unit.
ABT_self_set_arg() sets the argument arg for the caller's work-unit function.
ABT_ERR_UNINITIALIZED if Argobots is not initialized.ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_UNINITIALIZED is returned if the Argobots runtime is not initialized.| [in] | arg | argument a work-unit function of the calling work unit |
| int ABT_self_set_associated_pool | ( | ABT_pool | pool | ) |
Set an associated pool for the calling work unit.
ABT_self_set_associated_pool() changes the associated pool of the work unit thread to the pool pool. This routine does not yield the calling work unit.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_POOL is returned if pool is ABT_POOL_NULL.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.ABT_ERR_UNIT is returned if u_create_from_thread() fails.| [in] | pool | pool handle |
| int ABT_self_set_specific | ( | ABT_key | key, |
| void * | value | ||
| ) |
Associate a value with a work-unit-specific data key in the calling work unit.
ABT_self_set_specific() associates a value value with the work-unit-specific data key key in the calling work unit. Different work units may bind different values to the same key.
Work-unit-specific values associated with a work-unit-specific data key are read and updated atomically.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_KEY is returned if key is ABT_KEY_NULL.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.| [in] | key | work-unit-specific data key handle |
| [in] | value | value associated with key |
| int ABT_self_suspend | ( | void | ) |
Suspend the calling ULT.
ABT_self_suspend() suspends the execution of the calling ULT and switches to its parent ULT. The calling ULT is not pushed to its associated pool and its state becomes blocked. ABT_thread_resume() awakens the suspended ULT and pushes it back to its associated pool.
ABT_ERR_INV_THREAD is returned if this routine is called by an external thread.ABT_ERR_INV_XSTREAM is returned if this routine is called by an external thread. ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_THREAD is returned if the caller is a tasklet.| int ABT_self_suspend_to | ( | ABT_thread | thread | ) |
Suspend the calling ULT and jump to another ULT.
ABT_self_suspend_to() suspends the execution of the calling ULT and schedules the ULT thread as a child thread of the calling ULT's parent. The calling ULT is not pushed to its associated pool and its state becomes blocked. ABT_thread_resume() awakens the suspended ULT and pushes it back to its associated pool. It is the user's responsibility to pop thread from its associated pool before calling this routine.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_THREAD is returned if thread is ABT_THREAD_NULL or ABT_TASK_NULL.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_THREAD is returned if the caller is a tasklet.ABT_ERR_INV_THREAD is returned if thread is a tasklet.ABT_ERR_INV_THREAD is returned if the caller is the work unit of the main scheduler.ABT_ERR_INV_THREAD is returned if thread is the work unit of the main scheduler.ABT_ERR_INV_THREAD is returned if thread is the caller.thread is accessed concurrently, the results are undefined.thread, the pool associated with thread is in a pool, the results are undefined.thread is not ready, the results are undefined.| [in] | thread | handle to the target thread |
| int ABT_self_yield | ( | void | ) |
Yield the calling ULT to its parent ULT.
ABT_self_yield() yields the calling ULT and pushes the calling ULT to its associated pool. Its parent ULT will be resumed.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_THREAD is returned if the caller is a tasklet.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.| int ABT_self_yield_to | ( | ABT_thread | thread | ) |
Yield the calling ULT to another ULT.
ABT_self_yield_to() yields the calling ULT and schedules the ULT thread as a child thread of the calling ULT's parent. The calling ULT is pushed to its associated pool. It is the user's responsibility to pop thread from its associated pool before calling this routine.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_THREAD is returned if thread is ABT_THREAD_NULL or ABT_TASK_NULL.ABT_ERR_INV_XSTREAM is returned if the caller is an external thread.ABT_ERR_INV_THREAD is returned if the caller is a tasklet.ABT_ERR_INV_THREAD is returned if thread is a tasklet.ABT_ERR_INV_THREAD is returned if the caller is the work unit of the main scheduler.ABT_ERR_INV_THREAD is returned if thread is the work unit of the main scheduler.ABT_ERR_INV_THREAD is returned if thread is the caller.thread is accessed concurrently, the results are undefined.thread, the pool associated with thread is in a pool, the results are undefined.thread is not ready, the results are undefined.| [in] | thread | handle to the target thread |
1.8.17