---
name: "pvm_freezegroup"
section: "3"
platform: "linux"
package: "pvm-dev"
version: "3.4.2-8"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/pvm_freezegroup"
---

# pvm\_freezegroup(3)

Freezes dynamic group membership and caches info locally

## NAME

pvm\_freezegroup - Freezes dynamic group membership and caches info locally

## SYNOPSIS

```
C	int info = pvm_freezegroup( char *group , int size)
Fortran	call pvmffreezegroup( group, size, info )
```

## PARAMETERS

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

## DESCRIPTION

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

## EXAMPLES

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

Fortran:
        CALL PVMFJOINGROUP('group2', inum)
	CALL PVMFFREEZEGROUP( 'group2', size, info )
```

## ERRORS

These error conditions can be returned by *pvm\_freezegroup*

- PvmSysErr

  pvmd was not started or has crashed.

- PvmBadParam

  giving a NULL group name.

- PvmDupGroup

  trying to freeze a group that is already frozen.

- PvmNotInGroup

  trying to freeze a group that you are not in.

## BUGS

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.

## SEE ALSO

pvm\_barrier(3PVM), pvm\_lvgroup(3PVM)
