worker array
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
The worker array W
contains information about each worker’s state. This is
useful information for allocation functions determining what work should be
performed next.
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
libE receives only from workers with a nonzero ‘active’ state
libE 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.