The logical active process group may be changed by operations that cause some processors to skip a block of code (leaving the remaining processors active for that block), or cause the current active process group to be partitioned into a set of smaller groups, with each group acting independently for some time.
Every process executing an Adlib program must maintain a static data structure, apg, describing the current active process group. This variable is read by collective functions in the library to determine which processes are cooperating in the operation. If the logical active process group changes, the variable apg must be updated (see section 2.7) before invoking a collective operation. During the library initialization procedure, apg is set to a value describing the initial process group.
A collective operation may or may not involve synchronization between members of the active process group. In general the programmer should work on the (worst case) assumption that synchronization is implied. If any member of the active process group fails to engage in a collective operation that others are executing, or executes collective operations in a different order to other members of the group, the program is liable to fail.
Examples of collective operations are constructors for collective objects and collective communication operations.