This group is for work units.
More...
This group is for work units.
◆ ABT_unit
typedef struct ABT_unit_opaque* ABT_unit |
Work unit handle type for scheduling.
ABT_unit
is a work unit handle encapsulated by its associated pool, so the value of ABT_unit
is different from its associated ABT_thread
or ABT_task
.
A NULL handle of this type is ABT_UNIT_NULL
.
Definition at line 911 of file abt.h.
◆ ABT_unit_id
Work unit ID type.
Definition at line 921 of file abt.h.
◆ ABT_unit_type
Work unit type.
Definition at line 916 of file abt.h.
◆ ABT_unit_type
Type of a work unit for scheduling.
Enumerator |
---|
ABT_UNIT_TYPE_THREAD | A ULT.
|
ABT_UNIT_TYPE_TASK | A tasklet.
[Argobots 2.0] This type is an alias of ABT_UNIT_TYPE_THREAD .
|
ABT_UNIT_TYPE_XSTREAM | Deprecated since no Argobots function uses it.
|
ABT_UNIT_TYPE_EXT | An external thread.
|
Definition at line 582 of file abt.h.
◆ ABT_unit_get_thread()
Get a thread handle of the target work unit.
ABT_unit_get_thread()
returns the ABT_thread
handle associated with the work unit unit
through thread
.
- Execution context
- This routine can be called in any execution context. Argobots must be initialized. This routine does not switch the context of the calling ULT unless any user-defined function that is involved in this routine switch the context of the calling ULT.
- Errors
ABT_SUCCESS
is returned if this routine succeeds.
ABT_ERR_INV_UNIT
is returned if unit
is ABT_UNIT_NULL
.
- Undefined behavior
- If Argobots is not initialized, the results are undefined.
If thread
is NULL
, the results are undefined.
- Parameters
-
[in] | unit | work unit handle |
[out] | thread | work unit handle |
- Returns
- Error code
Definition at line 80 of file unit.c.
◆ ABT_unit_set_associated_pool()
No operation.
ABT_unit_set_associated_pool()
does nothing. This routine was originally provided for setting the associated pool for a work unit, but Argobots 1.1 manages this mapping when ABT_pool_push()
or ABT_xstream_run_unit()
is called. This routine is for the backward compatibility.
- Changes from Argobots 1.0 to Argobots 1.1
- [Argobots 1.0] The user must explicitly call this routine to change the associated pool of
ABT_unit
.
[Argobots 1.1] The Argobots runtime automatically changes the associated pool of ABT_unit
if needed. This routine is therefore unnecessary.
- Rationale
- The unit-pool association management is hard for the user who does not know the internal implementation of Argobots. This change not only eases programming with Argobots but also addresses some issues without breaking the backward compatibility. See https://github.com/pmodels/argobots/issues/317 for details.
- Execution context
- This routine can be called in any execution context. Argobots must be initialized. This routine does not switch the context of the calling ULT unless any user-defined function that is involved in this routine switch the context of the calling ULT.
- Errors
ABT_SUCCESS
is returned if this routine succeeds.
ABT_ERR_INV_UNIT
is returned if unit
is ABT_UNIT_NULL
.
ABT_ERR_INV_POOL
is returned if pool
is ABT_POOL_NULL
.
- Undefined behavior
- If Argobots is not initialized, the results are undefined.
- Parameters
-
[in] | unit | work unit handle |
[in] | pool | pool handle |
- Returns
- Error code
Definition at line 48 of file unit.c.