# 17.2.2. PMIx_Init

PMIx_Init - Initialize the PMIx Client

## 17.2.2.1. SYNOPSIS

    #include <pmix.h>

    pmix_status_t PMIx_Init(pmix_proc_t *proc);

## 17.2.2.2. ARGUMENTS

- `proc`: Pointer to a `pmix_proc_t` object in which the client’s namespace and rank are to be returned.

## 17.2.2.3. DESCRIPTION

Initialize the PMIx client, returning the process identifier assigned to this client’s application in the provided `pmix_proc_t` struct. Passing a parameter of NULL for this parameter is allowed if the user wishes solely to initialize the PMIx system and does not require return of the identifier at that time.

When called, the PMIx client will check for the required connection information of the local PMIx server and will establish the connection. If the information is not found, or the server connection fails, then an appropriate error constant will be returned.

If successful, the function will return `PMIX_SUCCESS` and will fill the provided structure with the server-assigned namespace and rank of the process within the application.

Note that the PMIx client library is referenced counted, and so multiple calls to `PMIx_Init` are allowed. Thus, one way to obtain the namespace and rank of the process is to simply call `PMIx_Init` with a non-NULL parameter.

## 17.2.2.4. RETURN VALUE

Returns `PMIX_SUCCESS` on success. On error, a negative value corresponding to a PMIx `errno` is returned.

## 17.2.2.5. ERRORS

PMIx `errno` values are defined in `pmix_common.h`.

See also

PMIx_Initialized(3), PMIx_Abort(3), PMIx_Commit(3), PMIx_Finalize(3), PMIx_Put(3), pmiAddInstance(3), pmiAddMetric(3)