|
Packit Service |
c5cf8c |
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
|
|
Packit Service |
c5cf8c |
/*
|
|
Packit Service |
c5cf8c |
* (C) 2001 by Argonne National Laboratory.
|
|
Packit Service |
c5cf8c |
* See COPYRIGHT in top-level directory.
|
|
Packit Service |
c5cf8c |
*
|
|
Packit Service |
c5cf8c |
*/
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
#ifndef MPIR_PROCESS_H_INCLUDED
|
|
Packit Service |
c5cf8c |
#define MPIR_PROCESS_H_INCLUDED
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
#ifdef HAVE_HWLOC
|
|
Packit Service |
c5cf8c |
#include "hwloc.h"
|
|
Packit Service |
c5cf8c |
#endif
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
#ifdef USE_PMIX_API
|
|
Packit Service |
c5cf8c |
#include "pmix.h"
|
|
Packit Service |
c5cf8c |
#endif
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
#ifdef HAVE_NETLOC
|
|
Packit Service |
c5cf8c |
#include "netloc_util.h"
|
|
Packit Service |
c5cf8c |
#endif
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
/* Per process data */
|
|
Packit Service |
c5cf8c |
typedef struct PreDefined_attrs {
|
|
Packit Service |
c5cf8c |
int appnum; /* Application number provided by mpiexec (MPI-2) */
|
|
Packit Service |
c5cf8c |
int host; /* host */
|
|
Packit Service |
c5cf8c |
int io; /* standard io allowed */
|
|
Packit Service |
c5cf8c |
int lastusedcode; /* last used error code (MPI-2) */
|
|
Packit Service |
c5cf8c |
int tag_ub; /* Maximum message tag */
|
|
Packit Service |
c5cf8c |
int universe; /* Universe size from mpiexec (MPI-2) */
|
|
Packit Service |
c5cf8c |
int wtime_is_global; /* Wtime is global over processes in COMM_WORLD */
|
|
Packit Service |
c5cf8c |
} PreDefined_attrs;
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
typedef struct MPIR_Process_t {
|
|
Packit Service |
c5cf8c |
OPA_int_t mpich_state; /* State of MPICH. Use OPA_int_t to make MPI_Initialized() etc.
|
|
Packit Service |
c5cf8c |
* thread-safe per MPI-3.1. See MPI-Forum ticket 357 */
|
|
Packit Service |
c5cf8c |
int do_error_checks; /* runtime error check control */
|
|
Packit Service |
c5cf8c |
struct MPIR_Comm *comm_world; /* Easy access to comm_world for
|
|
Packit Service |
c5cf8c |
* error handler */
|
|
Packit Service |
c5cf8c |
struct MPIR_Comm *comm_self; /* Easy access to comm_self */
|
|
Packit Service |
c5cf8c |
struct MPIR_Comm *comm_parent; /* Easy access to comm_parent */
|
|
Packit Service |
c5cf8c |
struct MPIR_Comm *icomm_world; /* An internal version of comm_world
|
|
Packit Service |
c5cf8c |
* that is separate from user's
|
|
Packit Service |
c5cf8c |
* versions */
|
|
Packit Service |
c5cf8c |
MPIR_Request *lw_req; /* A pre-allocated, always complete request */
|
|
Packit Service |
c5cf8c |
PreDefined_attrs attrs; /* Predefined attribute values */
|
|
Packit Service |
c5cf8c |
int tag_bits; /* number of tag bits supported */
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
#ifdef HAVE_HWLOC
|
|
Packit Service |
c5cf8c |
hwloc_topology_t hwloc_topology; /* HWLOC topology */
|
|
Packit Service |
c5cf8c |
hwloc_cpuset_t bindset; /* process binding */
|
|
Packit Service |
c5cf8c |
int bindset_is_valid; /* Flag to indicate if the bind set of the process is valid:
|
|
Packit Service |
c5cf8c |
* 0 if invalid, 1 if valid */
|
|
Packit Service |
c5cf8c |
#endif
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
#ifdef HAVE_NETLOC
|
|
Packit Service |
c5cf8c |
netloc_topology_t netloc_topology;
|
|
Packit Service |
c5cf8c |
MPIR_Netloc_network_attributes network_attr;
|
|
Packit Service |
c5cf8c |
#endif
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
#ifdef USE_PMIX_API
|
|
Packit Service |
c5cf8c |
pmix_proc_t pmix_proc;
|
|
Packit Service |
c5cf8c |
pmix_proc_t pmix_wcproc;
|
|
Packit Service |
c5cf8c |
#endif
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
/* The topology routines dimsCreate is independent of any communicator.
|
|
Packit Service |
c5cf8c |
* If this pointer is null, the default routine is used */
|
|
Packit Service |
c5cf8c |
int (*dimsCreate) (int, int, int *);
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
/* Attribute dup functions. Here for lazy initialization */
|
|
Packit Service |
c5cf8c |
int (*attr_dup) (int, MPIR_Attribute *, MPIR_Attribute **);
|
|
Packit Service |
c5cf8c |
int (*attr_free) (int, MPIR_Attribute **);
|
|
Packit Service |
c5cf8c |
/* There is no win_attr_dup function because there can be no MPI_Win_dup
|
|
Packit Service |
c5cf8c |
* function */
|
|
Packit Service |
c5cf8c |
/* Routine to get the messages corresponding to dynamically created
|
|
Packit Service |
c5cf8c |
* error messages */
|
|
Packit Service |
c5cf8c |
const char *(*errcode_to_string) (int);
|
|
Packit Service |
c5cf8c |
#ifdef HAVE_CXX_BINDING
|
|
Packit Service |
c5cf8c |
/* Routines to call C++ functions from the C implementation of the
|
|
Packit Service |
c5cf8c |
* MPI reduction and attribute routines */
|
|
Packit Service |
c5cf8c |
void (*cxx_call_op_fn) (const void *, void *, int, MPI_Datatype, MPI_User_function *);
|
|
Packit Service |
c5cf8c |
/* Error handling functions. As for the attribute functions,
|
|
Packit Service |
c5cf8c |
* we pass the integer file/comm/win, the address of the error code,
|
|
Packit Service |
c5cf8c |
* and the C function to call (itself a function defined by the
|
|
Packit Service |
c5cf8c |
* C++ interface and exported to C). The first argument is used
|
|
Packit Service |
c5cf8c |
* to specify the kind (comm,file,win) */
|
|
Packit Service |
c5cf8c |
void (*cxx_call_errfn) (int, int *, int *, void (*)(void));
|
|
Packit Service |
c5cf8c |
#endif /* HAVE_CXX_BINDING */
|
|
Packit Service |
c5cf8c |
} MPIR_Process_t;
|
|
Packit Service |
c5cf8c |
extern MPIR_Process_t MPIR_Process;
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
#endif /* MPIR_PROCESS_H_INCLUDED */
|