pmix_fence man page
PMIx_Fence[_nb] — Execute a blocking[non-blocking] barrier across the processes identified in the specified array.
#include <pmix.h> pmix\_status\_t PMIx\_Fence(const pmix\_proc\_t procs, size_t nprocs, const pmix\_info\_t info, size_t ninfo); pmix\_status\_t PMIx\_Fence\_nb(const pmix\_proc\_t procs, size_t nprocs, const pmix\_info\_t info, size_t ninfo, pmix_op_cbfunc_t cbfunc, void *cbdata);
procs : An array of pmix_proc_t structures defining the processes that will be participating in the fence collective operation.
nprocs : Number of pmix_proc_t structures in the procs array
info : An optional array of pmix_info_t structures
ninfo : Number of pmix_info_t structures in the pmix_info_t array
Execute a blocking[non-blocking] barrier across the processes identified in the specified array. Passing a NULL pointer as the procs parameter indicates that the barrier is to span all processes in the client's namespace. Each provided pmix_proc_t struct can pass PMIX_RANK_WILDCARD to indicate that all processes in the given namespace are participating.
The info array is used to pass user requests regarding the fence operation. This can include:
PMIX_COLLECT_DATA - a boolean indicating whether or not the barrier operation is to return the put data from all participating processes. A value of false indicates that the callback is just used as a release and no data is to be returned at that time. A value of true indicates that all put data is to be collected by the barrier. Returned data is cached at the server to reduce memory footprint, and can be retrieved as needed by calls to PMIx_Get(nb).
Note that for scalability reasons, the default behavior for PMIx_Fence is to not collect the data.
PMIX_COLLECTIVE_ALGO - a comma-delimited string indicating the algos to be used for executing the barrier, in priority order. Note that PMIx itself does not contain any internode communication support. Thus, execution of the fence collective is deferred to the host resource manager, which are free to implement whatever algorithms they choose. Thus, different resource managers may or may not be able to comply with a request for a specific algorithm, or set of algorithms. Marking this info key as required instructs the host RM that it should return an error if none of the specified algos are available. Otherwise, the RM is to use one of the specified algos if possible, but is free to use any of its available methods to execute the operation if none of the specified algos are available.
PMIX_TIMEOUT - maximum time for the fence to execute before declaring an error. By default, the RM shall terminate the operation and notify participants if one or more of the indicated procs fails during the fence. However, the timeout parameter can help avoid "hangs" due to programming errors that prevent one or more procs from reaching the "fence".
Returns PMIX_SUCCESS on success. On error, a negative value corresponding to a PMIx errno is returned.
PMIx errno values are defined in