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_fonly 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.