# 6.4.2. Process Sets

PMIx supports two slightly related, but functionally different concepts known as process sets and process groups. This section defines these two concepts and describes how they are utilized, along with their corresponding APIs.

## 6.4.2.1. Process Set Attributes

Several attributes are provided for querying the system regarding process sets using the PMIx_Query_info API. These include the following:

- `PMIX_QUERY_NUM_PSETS` * String: `pmix.qry.psetnum` * Type: size_t * Description: Return the number of process sets defined in the specified range (defaults to `PMIX_RANGE_SESSION`).

- `PMIX_QUERY_PSET_NAMES` * String: `pmix.qry.psets` * Type: pmix_data_array_t* * Description: Return a `pmix_data_array_t` containing an array of strings of the process set names defined in the specified range (defaults to `PMIX_RANGE_SESSION`).

- `PMIX_QUERY_PSET_MEMBERSHIP` * String: `pmix.qry.pmems` * Type: pmix_data_array_t* * Description: Return an array of `pmix_proc_t` containing the members of the specified process set.

In addition, the `PMIX_PROCESS_SET_DEFINE` event shall include the name of the newly defined process set and its members using the following attributes:

- `PMIX_PSET_NAME` * String: `pmix.pset.nm` * Type: char* * Description: The name of the newly defined process set.

- `PMIX_PSET_MEMBERS` * String: `pmix.pset.mems` * Type: pmix_data_array_t* * Description: An array of `pmix_proc_t` containing the members of the newly defined process set.

Finally, a process can request (via `PMIx_Get`) the process sets to which a given process (including itself) belongs using the following attribute:

- `PMIX_PSET_NAMES` * String: `pmix.pset.nms` * Type: pmix_data_array_t* * Description: Returns an array of `char*` string names of the process sets in which the given process is a member.