From 903bb5d1bfd00a86a5a0c0b7ab22c46e99341d8e Mon Sep 17 00:00:00 2001
From: David Bigagli <snowflake.schedmd.com>
Date: Tue, 18 Jun 2013 14:05:16 -0700
Subject: [PATCH] Renamed pmi2_api.h to pmi2.h.

---
 contribs/pmi2/pmi2_api.h | 704 ---------------------------------------
 1 file changed, 704 deletions(-)
 delete mode 100644 contribs/pmi2/pmi2_api.h

diff --git a/contribs/pmi2/pmi2_api.h b/contribs/pmi2/pmi2_api.h
deleted file mode 100644
index e72a985ff67..00000000000
--- a/contribs/pmi2/pmi2_api.h
+++ /dev/null
@@ -1,704 +0,0 @@
-/* -*- Mode: C; c-basic-offset:4 ; -*- */
-/*
- *  (C) 2007 by Argonne National Laboratory.
- *      See COPYRIGHT in top-level directory.
- */
-
-#ifndef PMI2_H_INCLUDED
-#define PMI2_H_INCLUDED
-
-#ifndef USE_PMI2_API
-/*#error This header file defines the PMI2 API, but PMI2 was not selected*/
-#endif
-
-#define PMI2_MAX_KEYLEN 64
-#define PMI2_MAX_VALLEN 1024
-#define PMI2_MAX_ATTRVALUE 1024
-#define PMI2_ID_NULL -1
-
-#define PMII_COMMANDLEN_SIZE 6
-#define PMII_MAX_COMMAND_LEN (64*1024)
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-static const char FULLINIT_CMD[]          = "fullinit";
-static const char FULLINITRESP_CMD[]      = "fullinit-response";
-static const char FINALIZE_CMD[]          = "finalize";
-static const char FINALIZERESP_CMD[]      = "finalize-response";
-static const char ABORT_CMD[]             = "abort";
-static const char JOBGETID_CMD[]          = "job-getid";
-static const char JOBGETIDRESP_CMD[]      = "job-getid-response";
-static const char JOBCONNECT_CMD[]        = "job-connect";
-static const char JOBCONNECTRESP_CMD[]    = "job-connect-response";
-static const char JOBDISCONNECT_CMD[]     = "job-disconnect";
-static const char JOBDISCONNECTRESP_CMD[] = "job-disconnect-response";
-static const char KVSPUT_CMD[]            = "kvs-put";
-static const char KVSPUTRESP_CMD[]        = "kvs-put-response";
-static const char KVSFENCE_CMD[]          = "kvs-fence";
-static const char KVSFENCERESP_CMD[]      = "kvs-fence-response";
-static const char KVSGET_CMD[]            = "kvs-get";
-static const char KVSGETRESP_CMD[]        = "kvs-get-response";
-static const char GETNODEATTR_CMD[]       = "info-getnodeattr";
-static const char GETNODEATTRRESP_CMD[]   = "info-getnodeattr-response";
-static const char PUTNODEATTR_CMD[]       = "info-putnodeattr";
-static const char PUTNODEATTRRESP_CMD[]   = "info-putnodeattr-response";
-static const char GETJOBATTR_CMD[]        = "info-getjobattr";
-static const char GETJOBATTRRESP_CMD[]    = "info-getjobattr-response";
-static const char NAMEPUBLISH_CMD[]       = "name-publish";
-static const char NAMEPUBLISHRESP_CMD[]   = "name-publish-response";
-static const char NAMEUNPUBLISH_CMD[]     = "name-unpublish";
-static const char NAMEUNPUBLISHRESP_CMD[] = "name-unpublish-response";
-static const char NAMELOOKUP_CMD[]        = "name-lookup";
-static const char NAMELOOKUPRESP_CMD[]    = "name-lookup-response";
-
-static const char PMIJOBID_KEY[]          = "pmijobid";
-static const char PMIRANK_KEY[]           = "pmirank";
-static const char SRCID_KEY[]             = "srcid";
-static const char THREADED_KEY[]          = "threaded";
-static const char RC_KEY[]                = "rc";
-static const char ERRMSG_KEY[]            = "errmsg";
-static const char PMIVERSION_KEY[]        = "pmi-version";
-static const char PMISUBVER_KEY[]         = "pmi-subversion";
-static const char RANK_KEY[]              = "rank";
-static const char SIZE_KEY[]              = "size";
-static const char APPNUM_KEY[]            = "appnum";
-static const char SPAWNERJOBID_KEY[]      = "spawner-jobid";
-static const char DEBUGGED_KEY[]          = "debugged";
-static const char PMIVERBOSE_KEY[]        = "pmiverbose";
-static const char ISWORLD_KEY[]           = "isworld";
-static const char MSG_KEY[]               = "msg";
-static const char JOBID_KEY[]             = "jobid";
-static const char KVSCOPY_KEY[]           = "kvscopy";
-static const char KEY_KEY[]               = "key";
-static const char VALUE_KEY[]             = "value";
-static const char FOUND_KEY[]             = "found";
-static const char WAIT_KEY[]              = "wait";
-static const char NAME_KEY[]              = "name";
-static const char PORT_KEY[]              = "port";
-static const char THRID_KEY[]             = "thrid";
-static const char INFOKEYCOUNT_KEY[]      = "infokeycount";
-static const char INFOKEY_KEY[]           = "infokey%d";
-static const char INFOVAL_KEY[]           = "infoval%d";
-
-static const char TRUE_VAL[]              = "TRUE";
-static const char FALSE_VAL[]             = "FALSE";
-
-/* Local types */
-
-/* Parse commands are in this structure.  Fields in this structure are
-   dynamically allocated as necessary */
-typedef struct PMI2_Keyvalpair {
-    const char *key;
-    const char *value;
-    int         valueLen;  /* Length of a value (values may contain nulls, so
-                              we need this) */
-    int         isCopy;    /* The value is a copy (and will need to be freed)
-                              if this is true, otherwise,
-                              it is a null-terminated string in the original
-                              buffer */
-} PMI2_Keyvalpair;
-
-typedef struct PMI2_Command {
-    int               nPairs;   /* Number of key=value pairs */
-    char             *command;  /* Overall command buffer */
-    PMI2_Keyvalpair **pairs;    /* Array of pointers to pairs */
-    int               complete;
-} PMI2_Command;
-
-
-/*D
-PMI2_CONSTANTS - PMI2 definitions
-
-Error Codes:
-+ PMI2_SUCCESS - operation completed successfully
-. PMI2_FAIL - operation failed
-. PMI2_ERR_NOMEM - input buffer not large enough
-. PMI2_ERR_INIT - PMI not initialized
-. PMI2_ERR_INVALID_ARG - invalid argument
-. PMI2_ERR_INVALID_KEY - invalid key argument
-. PMI2_ERR_INVALID_KEY_LENGTH - invalid key length argument
-. PMI2_ERR_INVALID_VAL - invalid val argument
-. PMI2_ERR_INVALID_VAL_LENGTH - invalid val length argument
-. PMI2_ERR_INVALID_LENGTH - invalid length argument
-. PMI2_ERR_INVALID_NUM_ARGS - invalid number of arguments
-. PMI2_ERR_INVALID_ARGS - invalid args argument
-. PMI2_ERR_INVALID_NUM_PARSED - invalid num_parsed length argument
-. PMI2_ERR_INVALID_KEYVALP - invalid keyvalp argument
-. PMI2_ERR_INVALID_SIZE - invalid size argument
-- PMI2_ERR_OTHER - other unspecified error
-
-D*/
-#define PMI2_SUCCESS                0
-#define PMI2_FAIL                   -1
-#define PMI2_ERR_INIT               1
-#define PMI2_ERR_NOMEM              2
-#define PMI2_ERR_INVALID_ARG        3
-#define PMI2_ERR_INVALID_KEY        4
-#define PMI2_ERR_INVALID_KEY_LENGTH 5
-#define PMI2_ERR_INVALID_VAL        6
-#define PMI2_ERR_INVALID_VAL_LENGTH 7
-#define PMI2_ERR_INVALID_LENGTH     8
-#define PMI2_ERR_INVALID_NUM_ARGS   9
-#define PMI2_ERR_INVALID_ARGS       10
-#define PMI2_ERR_INVALID_NUM_PARSED 11
-#define PMI2_ERR_INVALID_KEYVALP    12
-#define PMI2_ERR_INVALID_SIZE       13
-#define PMI2_ERR_OTHER              14
-
-/* This is here to allow spawn multiple functions to compile.  This
-   needs to be removed once those functions are fixed for pmi2 */
-/*
-typedef struct PMI_keyval_t
-{
-    char * key;
-    char * val;
-} PMI_keyval_t;
-*/
-
-/*@
-  PMI2_Connect_comm_t - connection structure used when connecting to other jobs
-
-  Fields:
-  + read - Read from a connection to the leader of the job to which
-    this process will be connecting. Returns 0 on success or an MPI
-    error code on failure.
-  . write - Write to a connection to the leader of the job to which
-    this process will be connecting. Returns 0 on success or an MPI
-    error code on failure.
-  . ctx - An anonymous pointer to data that may be used by the read
-    and write members.
-  - isMaster - Indicates which process is the "master"; may have the
-    values 1 (is the master), 0 (is not the master), or -1 (neither is
-    designated as the master). The two processes must agree on which
-    process is the master, or both must select -1 (neither is the
-    master).
-
-  Notes:
-  A typical implementation of these functions will use the read and
-  write calls on a pre-established file descriptor (fd) between the
-  two leading processes. This will be needed only if the PMI server
-  cannot access the KVS spaces of another job (this may happen, for
-  example, if each mpiexec creates the KVS spaces for the processes
-  that it manages).
-  
-@*/
-typedef struct PMI2_Connect_comm {
-    int (*read)( void *buf, int maxlen, void *ctx );
-    int (*write)( const void *buf, int len, void *ctx );
-    void *ctx;
-    int  isMaster;
-} PMI2_Connect_comm_t;
-
-
-/*S
-  MPID_Info - Structure of an MPID info
-
-  Notes:
-  There is no reference count because 'MPI_Info' values, unlike other MPI
-  objects, may be changed after they are passed to a routine without
-  changing the routine''s behavior.  In other words, any routine that uses
-  an 'MPI_Info' object must make a copy or otherwise act on any info value
-  that it needs.
-
-  A linked list is used because the typical 'MPI_Info' list will be short
-  and a simple linked list is easy to implement and to maintain.  Similarly,
-  a single structure rather than separate header and element structures are
-  defined for simplicity.  No separate thread lock is provided because
-  info routines are not performance critical; they may use the single
-  critical section lock in the 'MPIR_Process' structure when they need a
-  thread lock.
-
-  This particular form of linked list (in particular, with this particular
-  choice of the first two members) is used because it allows us to use
-  the same routines to manage this list as are used to manage the
-  list of free objects (in the file 'src/util/mem/handlemem.c').  In
-  particular, if lock-free routines for updating a linked list are
-  provided, they can be used for managing the 'MPID_Info' structure as well.
-
-  The MPI standard requires that keys can be no less that 32 characters and
-  no more than 255 characters.  There is no mandated limit on the size
-  of values.
-
-  Module:
-  Info-DS
-  S*/
-typedef struct MPID_Info {
-    int                 handle;
-    int                 pobj_mutex;
-    int                 ref_count;
-    struct MPID_Info    *next;
-    char                *key;
-    char                *value;
-} MPID_Info;
-
-#define PMI2U_Info MPID_Info
-
-/*@
-  PMI2_Init - initialize the Process Manager Interface
-
-  Output Parameter:
-  + spawned - spawned flag
-  . size - number of processes in the job
-  . rank - rank of this process in the job
-  - appnum - which executable is this on the mpiexec commandline
-  
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-  
-  Notes:
-  Initialize PMI for this process group. The value of spawned indicates whether
-  this process was created by 'PMI2_Spawn_multiple'.  'spawned' will be non-zero
-  iff this process group has a parent.
-
-@*/
-int PMI2_Init(int *spawned, int *size, int *rank, int *appnum);
-
-/*@
-  PMI2_Finalize - finalize the Process Manager Interface
-  
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-  
-  Notes:
-  Finalize PMI for this job.
-  
-@*/
-int PMI2_Finalize(void);
-
-/*@
-  PMI2_Initialized - check if PMI has been initialized
-
-  Return values:
-  Non-zero if PMI2_Initialize has been called successfully, zero otherwise.
-  
-@*/
-int PMI2_Initialized(void);
-
-/*@
-  PMI2_Abort - abort the process group associated with this process
-  
-  Input Parameters:
-  + flag - non-zero if all processes in this job should abort, zero otherwise
-  - error_msg - error message to be printed
-  
-  Return values:
-  If the abort succeeds this function will not return.  Returns an MPI
-  error code otherwise.
-
-@*/
-int PMI2_Abort(int flag, const char msg[]);
-
-/*@
-  PMI2_Spawn - spawn a new set of processes
-
-  Input Parameters:
-  + count - count of commands
-  . cmds - array of command strings
-  . argcs - size of argv arrays for each command string
-  . argvs - array of argv arrays for each command string
-  . maxprocs - array of maximum processes to spawn for each command string
-  . info_keyval_sizes - array giving the number of elements in each of the 
-    'info_keyval_vectors'
-  . info_keyval_vectors - array of keyval vector arrays
-  . preput_keyval_size - Number of elements in 'preput_keyval_vector'
-  . preput_keyval_vector - array of keyvals to be pre-put in the spawned keyval space
-  - jobIdSize - size of the buffer provided in jobId
-
-  Output Parameter:
-  + jobId - job id of the spawned processes
-  - errors - array of errors for each command
-
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-  Notes:
-  This function spawns a set of processes into a new job.  The 'count'
-  field refers to the size of the array parameters - 'cmd', 'argvs', 'maxprocs',
-  'info_keyval_sizes' and 'info_keyval_vectors'.  The 'preput_keyval_size' refers
-  to the size of the 'preput_keyval_vector' array.  The 'preput_keyval_vector'
-  contains keyval pairs that will be put in the keyval space of the newly
-  created job before the processes are started.  The 'maxprocs' array
-  specifies the desired number of processes to create for each 'cmd' string.  
-  The actual number of processes may be less than the numbers specified in
-  maxprocs.  The acceptable number of processes spawned may be controlled by
-  ``soft'' keyvals in the info arrays.  The ``soft'' option is specified by
-  mpiexec in the MPI-2 standard.  Environment variables may be passed to the
-  spawned processes through PMI implementation specific 'info_keyval' parameters.
-@*/
-int PMI2_Job_Spawn(int count, const char * cmds[],
-                   int argcs[], const char ** argvs[],
-                   const int maxprocs[],
-                   const int info_keyval_sizes[],
-                   const struct MPID_Info *info_keyval_vectors[],
-                   int preput_keyval_size,
-                   const struct MPID_Info *preput_keyval_vector[],
-                   char jobId[], int jobIdSize,
-                   int errors[]);
-
-
-/*@
-  PMI2_Job_GetId - get job id of this job 
-
-  Input parameters:
-  . jobid_size - size of buffer provided in jobid
-
-  Output parameters:
-  . jobid - the job id of this job
-  
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-@*/
-int PMI2_Job_GetId(char jobid[], int jobid_size);
-
-/*@
-  PMI2_Job_GetRank - get rank of this job
-
-  Output parameters:
-  . rank - the rank of this job
-
-  Return values:
-  Returns 'PMI2_SUCCESS' on success and an PMI error code on failure.
-
-@*/
-int PMI2_Job_GetRank(int* rank);
-
-/*@
-  PMI2_Info_GetSize - get the number of processes on the node
-
-  Output parameters:
-  . rank - the rank of this job
-
-  Return values:
-  Returns 'PMI2_SUCCESS' on success and an PMI error code on failure.
-@*/
-int PMI2_Info_GetSize(int* size);
-
-/*@
-  PMI2_Job_Connect - connect to the parallel job with ID jobid
-
-  Input parameters:
-  . jobid - job id of the job to connect to
-
-  Output parameters:
-  . conn - connection structure used to exteblish communication with
-    the remote job
-  
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-  Notes:
-  This just "registers" the other parallel job as part of a parallel
-  program, and is used in the PMI2_KVS_xxx routines (see below). This
-  is not a collective call and establishes a connection between all
-  processes that are connected to the calling processes (on the one
-  side) and that are connected to the named jobId on the other
-  side. Processes that are already connected may call this routine.
-
-@*/
-int PMI2_Job_Connect(const char jobid[], PMI2_Connect_comm_t *conn);
-
-/*@
-  PMI2_Job_Disconnect - disconnects from the job with ID jobid
-
-  Input parameters:
-  . jobid - job id of the job to connect to
-
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-@*/
-int PMI2_Job_Disconnect(const char jobid[]);
-
-/*@
-  PMI2_KVS_Put - put a key/value pair in the keyval space for this job
-
-  Input Parameters:
-  + key - key
-  - value - value
-  
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-  Notes:
-  If multiple PMI2_KVS_Put calls are made with the same key between
-  calls to PMI2_KVS_Fence, the behavior is undefined. That is, the
-  value returned by PMI2_KVS_Get for that key after the PMI2_KVS_Fence
-  is not defined.
-
-@*/
-int PMI2_KVS_Put(const char key[], const char value[]);
-/*@
-  PMI2_KVS_Fence - commit all PMI2_KVS_Put calls made before this fence
-
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-  Notes:
-  This is a collective call across the job.  It has semantics that are
-  similar to those for MPI_Win_fence and hence is most easily
-  implemented as a barrier across all of the processes in the job.
-  Specifically, all PMI2_KVS_Put operations performed by any process in
-  the same job must be visible to all processes (by using PMI2_KVS_Get)
-  after PMI2_KVS_Fence completes.  However, a PMI implementation could
-  make this a lazy operation by not waiting for all processes to enter
-  their corresponding PMI2_KVS_Fence until some process issues a
-  PMI2_KVS_Get. This might be appropriate for some wide-area
-  implementations.
-  
-@*/
-int PMI2_KVS_Fence(void);
-
-/*@
-  PMI2_KVS_Get - returns the value associated with key in the key-value
-      space associated with the job ID jobid
-
-  Input Parameters:
-  + jobid - the job id identifying the key-value space in which to look
-    for key.  If jobid is NULL, look in the key-value space of this job.
-  . src_pmi_id - the pmi id of the process which put this keypair.  This
-    is just a hint to the server.  PMI2_ID_NULL should be passed if no
-    hint is provided.
-  . key - key
-  - maxvalue - size of the buffer provided in value
-
-  Output Parameters:
-  + value - value associated with key
-  - vallen - length of the returned value, or, if the length is longer
-    than maxvalue, the negative of the required length is returned
-  
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-@*/
-int PMI2_KVS_Get(const char *jobid, int src_pmi_id, const char key[], char value [], int maxvalue, int *vallen);
-
-/*@
-  PMI2_Info_GetNodeAttr - returns the value of the attribute associated
-      with this node
-
-  Input Parameters:
-  + name - name of the node attribute
-  . valuelen - size of the buffer provided in value
-  - waitfor - if non-zero, the function will not return until the
-    attribute is available
-
-  Output Parameters:
-  + value - value of the attribute
-  - found - non-zero indicates that the attribute was found
-  
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-  Notes:
-  This provides a way, when combined with PMI2_Info_PutNodeAttr, for
-  processes on the same node to share information without requiring a
-  more general barrier across the entire job.
-
-  If waitfor is non-zero, the function will never return with found
-  set to zero.
-
-  Predefined attributes:
-  + memPoolType - If the process manager allocated a shared memory
-    pool for the MPI processes in this job and on this node, return
-    the type of that pool. Types include sysv, anonmmap and ntshm.
-  . memSYSVid - Return the SYSV memory segment id if the memory pool
-    type is sysv. Returned as a string.
-  . memAnonMMAPfd - Return the FD of the anonymous mmap segment. The
-    FD is returned as a string.
-  - memNTName - Return the name of the Windows NT shared memory
-    segment, file mapping object backed by system paging
-    file.  Returned as a string.
-
-@*/
-int PMI2_Info_GetNodeAttr(const char name[], char value[], int valuelen, int *found, int waitfor);
-
-/*@
-  PMI2_Info_GetNodeAttrIntArray - returns the value of the attribute associated
-      with this node.  The value must be an array of integers.
-
-  Input Parameters:
-  + name - name of the node attribute
-  - arraylen - number of elements in array
-
-  Output Parameters:
-  + array - value of attribute
-  . outlen - number of elements returned
-  - found - non-zero if attribute was found
-  
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-  Notes:
-  Notice that, unlike PMI2_Info_GetNodeAttr, this function does not
-  have a waitfor parameter, and will return immediately with found=0
-  if the attribute was not found.
-
-  Predefined array attribute names:
-  + localRanksCount - Return the number of local ranks that will be
-    returned by the key localRanks.
-  . localRanks - Return the ranks in MPI_COMM_WORLD of the processes
-    that are running on this node.
-  - cartCoords - Return the Cartesian coordinates of this process in
-    the underlying network topology. The coordinates are indexed from
-    zero. Value only if the Job attribute for physTopology includes
-    cartesian.
-
-@*/
-int PMI2_Info_GetNodeAttrIntArray(const char name[], int array[], int arraylen, int *outlen, int *found);
-
-/*@
-  PMI2_Info_PutNodeAttr - stores the value of the named attribute
-  associated with this node
-
-  Input Parameters:
-  + name - name of the node attribute
-  - value - the value of the attribute
-
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-  Notes:
-  For example, it might be used to share segment ids with other
-  processes on the same SMP node.
-  
-@*/
-int PMI2_Info_PutNodeAttr(const char name[], const char value[]);
-
-/*@
-  PMI2_Info_GetJobAttr - returns the value of the attribute associated
-  with this job
-
-  Input Parameters:
-  + name - name of the job attribute
-  - valuelen - size of the buffer provided in value
-
-  Output Parameters:
-  + value - value of the attribute
-  - found - non-zero indicates that the attribute was found
-  
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-@*/
-int PMI2_Info_GetJobAttr(const char name[], char value[], int valuelen, int *found);
-
-/*@
-  PMI2_Info_GetJobAttrIntArray - returns the value of the attribute associated
-      with this job.  The value must be an array of integers.
-
-  Input Parameters:
-  + name - name of the job attribute
-  - arraylen - number of elements in array
-
-  Output Parameters:
-  + array - value of attribute
-  . outlen - number of elements returned
-  - found - non-zero if attribute was found
-  
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-  Predefined array attribute names:
-
-  + universeSize - The size of the "universe" (defined for the MPI
-    attribute MPI_UNIVERSE_SIZE
-
-  . hasNameServ - The value hasNameServ is true if the PMI2 environment
-    supports the name service operations (publish, lookup, and
-    unpublish).
-    
-  . physTopology - Return the topology of the underlying network. The
-    valid topology types include cartesian, hierarchical, complete,
-    kautz, hypercube; additional types may be added as necessary. If
-    the type is hierarchical, then additional attributes may be
-    queried to determine the details of the topology. For example, a
-    typical cluster has a hierarchical physical topology, consisting
-    of two levels of complete networks - the switched Ethernet or
-    Infiniband and the SMP nodes. Other systems, such as IBM BlueGene,
-    have one level that is cartesian (and in virtual node mode, have a
-    single-level physical topology).
-
-  . physTopologyLevels - Return a string describing the topology type
-    for each level of the underlying network. Only valid if the
-    physTopology is hierarchical. The value is a comma-separated list
-    of physical topology types (except for hierarchical). The levels
-    are ordered starting at the top, with the network closest to the
-    processes last. The lower level networks may connect only a subset
-    of processes. For example, for a cartesian mesh of SMPs, the value
-    is cartesian,complete. All processes are connected by the
-    cartesian part of this, but for each complete network, only the
-    processes on the same node are connected.
-    
-  . cartDims - Return a string of comma-separated values describing
-    the dimensions of the Cartesian topology. This must be consistent
-    with the value of cartCoords that may be returned by
-    PMI2_Info_GetNodeAttrIntArray.
-
-    These job attributes are just a start, but they provide both an
-    example of the sort of external data that is available through the
-    PMI interface and how extensions can be added within the same API
-    and wire protocol. For example, adding more complex network
-    topologies requires only adding new keys, not new routines.
-    
-  . isHeterogeneous - The value isHeterogeneous is true if the
-    processes belonging to the job are running on nodes with different
-    underlying data models.
-
-@*/
-int PMI2_Info_GetJobAttrIntArray(const char name[], int array[], int arraylen, int *outlen, int *found);
-
-/*@
-  PMI2_Nameserv_publish - publish a name 
-
-  Input parameters:
-  + service_name - string representing the service being published
-  . info_ptr -
-  - port - string representing the port on which to contact the service
-
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-@*/
-int PMI2_Nameserv_publish(const char service_name[], const struct MPID_Info *info_ptr, const char port[]);
-
-/*@
-  PMI2_Nameserv_lookup - lookup a service by name
-
-  Input parameters:
-  + service_name - string representing the service being published
-  . info_ptr -
-  - portLen - size of buffer provided in port
-  
-  Output parameters:
-  . port - string representing the port on which to contact the service
-
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-@*/
-int PMI2_Nameserv_lookup(const char service_name[], const struct MPID_Info *info_ptr,
-                        char port[], int portLen);
-/*@
-  PMI2_Nameserv_unpublish - unpublish a name
-
-  Input parameters:
-  + service_name - string representing the service being unpublished
-  - info_ptr -
-
-  Return values:
-  Returns 'MPI_SUCCESS' on success and an MPI error code on failure.
-
-@*/
-int PMI2_Nameserv_unpublish(const char service_name[], 
-                           const struct MPID_Info *info_ptr);
-
-
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* PMI2_H_INCLUDED */
-- 
GitLab