Provided by: pvm-dev_3.4.5-12.3_amd64 bug


       pvm_freezegroup - Freezes dynamic group membership and caches info locally


       C    int info = pvm_freezegroup( char *group , int size)

       Fortran   call pvmffreezegroup( group, size, info )


       group   Character string group name of an existing group.

       size    Size of the group when it is frozen

       info    size of group on success. Values less than 0 indicate and error.


       The  routine  pvm_freezegroup  makes  a  dynamic  group  named  group  static.  The  group
       information is  then "cached" by all group members.  pvm_freezegroup  is  a  synchronizing
       routine  and must be called by all group members to complete.  size indicates the size the
       dynamic group should be when made static.  A value of -1 indicates that the  current  size
       of the group should be used.  info returns error information.

       Once a dynamic group has been frozen with pvm_freezegroup , all subsequent operations that
       can be satisfied with local data use the locally held information. For processes that  are
       outside of the group, the first group call, e.g., pvm_bcast(), will cause the static group
       information to be copied to the calling process.  Subsequent operations then use the local
       information. Barriers are still arbitrated by the group server.

       Group  members  should  call   pvm_lvgroup   to  leave  the  group  and free any allocated
       structures that hold  the  group  information.   Processes  not  in  the  group  may  call
       pvm_lvgroup   to  free  any  locally  allocated structures. In this case, an error code of
       PvmNotInGroup or PvmNoGroup will be returned to the caller.

       Barrier are always arbitrated by the group server, even if the group has been made  static
       with  pvm_freezegroup.  If a process leaves a static group while other process are waiting
       at a barrier, then PvmNoGroup is returned to all processes waiting at the barrier.  Future
       barrier calls with the defunct static group, return the same error.


               inum = pvm_joingroup("worker");
            info = pvm_freezegroup( "worker", size );

               CALL PVMFJOINGROUP('group2', inum)
            CALL PVMFFREEZEGROUP( 'group2', size, info )


       These error conditions can be returned by pvm_freezegroup

              pvmd was not started or has crashed.

              giving a NULL group name.

              trying to freeze a group that is already frozen.

              trying to freeze a group that you are not in.


       There is no way to unfreeze a group.

       Processes are not notified if a frozen group becomes invalid.

       Having a non-member process call pvm_lvgroup to free structures is a bit strange.


       pvm_barrier(3PVM), pvm_lvgroup(3PVM)

                                          16 March 1995                         FREEZEGROUP(3PVM)