Worker Array
The worker array W
contains information about each worker’s state. Used within allocation
functions to determine which workers are eligible to receive work.
W: numpy structured array
"worker_id" [int]:
The worker ID
"active" [int]:
Is the worker active or not
"persis_state" [int]:
Is the worker in a persis_state
"active_recv" [int]:
Is the worker in an active receive state
"blocked" [int]:
Is the worker's resources blocked by another calculation
We use the following convention:
Worker state |
active |
persis_state |
blocked |
---|---|---|---|
idle worker |
0 |
0 |
0 |
active, nonpersistent sim |
1 |
0 |
0 |
active, nonpersistent gen |
2 |
0 |
0 |
active, persistent sim |
1 |
1 |
0 |
active, persistent gen |
2 |
2 |
0 |
waiting, persistent sim |
0 |
1 |
0 |
waiting, persistent gen |
0 |
2 |
0 |
worker blocked by some other calculation |
1 |
0 |
1 |
Note
libEnsemble’s manager receives only from workers with a nonzero
"active"
statelibEnsemble’s manager calls the
alloc_f
only if some worker has an"active"
state of zero, or is in an active receive state.
See also
For an example allocation function that queries the worker array, see persistent_aposmm_alloc.