OpenMPI  0.1.1
mpiruntime.h File Reference

Interface into the MPI portion of the Open MPI Run Time Environment. More...

#include "ompi_config.h"
#include "opal/class/opal_list.h"
#include "opal/class/opal_hash_table.h"

Go to the source code of this file.

Macros

#define OMPI_THREADLEVEL_SINGLE_BF   0x00000001
 Bitflags to be used for the modex exchange for the various thread levels. More...
 
#define OMPI_THREADLEVEL_FUNNELED_BF   0x00000002
 
#define OMPI_THREADLEVEL_SERIALIZED_BF   0x00000004
 
#define OMPI_THREADLEVEL_MULTIPLE_BF   0x00000008
 
#define OMPI_THREADLEVEL_SET_BITFLAG(threadlevelin, threadlevelout)
 
#define OMPI_THREADLEVEL_IS_MULTIPLE(threadlevel)   (threadlevel & OMPI_THREADLEVEL_MULTIPLE_BF)
 

Functions

OMPI_DECLSPEC void ompi_warn_fork (void)
 
int ompi_mpi_init (int argc, char **argv, int requested, int *provided)
 Initialize the Open MPI MPI environment. More...
 
int ompi_mpi_finalize (void)
 Finalize the Open MPI MPI environment. More...
 
OMPI_DECLSPEC int ompi_mpi_abort (struct ompi_communicator_t *comm, int errcode, bool kill_remote_of_intercomm)
 Abort the processes of comm.
 
int ompi_init_preconnect_mpi (void)
 Do a preconnect of MPI connections (i.e., force connections to be made if they will be made).
 

Variables

OMPI_DECLSPEC bool ompi_mpi_init_started
 Did mpi start to initialize?
 
OMPI_DECLSPEC bool ompi_mpi_initialized
 Is mpi initialized?
 
OMPI_DECLSPEC bool ompi_mpi_finalized
 Has mpi been finalized?
 
OMPI_DECLSPEC bool ompi_mpi_thread_multiple
 Do we have multiple threads?
 
OMPI_DECLSPEC int ompi_mpi_thread_requested
 Thread level requested to MPI_Init_thread()
 
OMPI_DECLSPEC int ompi_mpi_thread_provided
 Thread level provided by Open MPI.
 
OMPI_DECLSPEC struct
opal_thread_t
ompi_mpi_main_thread
 Identifier of the main thread.
 
OMPI_DECLSPEC bool ompi_warn_on_fork
 Do we want to be warned on fork or not?
 
OMPI_DECLSPEC opal_list_t ompi_registered_datareps
 In ompi_mpi_init: a list of all memory associated with calling MPI_REGISTER_DATAREP so that we can free it during MPI_FINALIZE. More...
 
opal_hash_table_t ompi_mpi_f90_integer_hashtable
 In ompi_mpi_init: the lists of Fortran 90 mathing datatypes. More...
 
opal_hash_table_t ompi_mpi_f90_real_hashtable
 
opal_hash_table_t ompi_mpi_f90_complex_hashtable
 
OMPI_DECLSPEC const char ompi_version_string []
 version string of ompi
 

Detailed Description

Interface into the MPI portion of the Open MPI Run Time Environment.

Macro Definition Documentation

#define OMPI_THREADLEVEL_SET_BITFLAG (   threadlevelin,
  threadlevelout 
)
Value:
{ \
if ( MPI_THREAD_SINGLE == threadlevelin ) { \
threadlevelout |= OMPI_THREADLEVEL_SINGLE_BF; \
} else if ( MPI_THREAD_FUNNELED == threadlevelin ) { \
threadlevelout |= OMPI_THREADLEVEL_FUNNELED_BF; \
} else if ( MPI_THREAD_SERIALIZED == threadlevelin ) { \
threadlevelout |= OMPI_THREADLEVEL_SERIALIZED_BF; \
} else if ( MPI_THREAD_MULTIPLE == threadlevelin ) { \
threadlevelout |= OMPI_THREADLEVEL_MULTIPLE_BF; \
}}
#define OMPI_THREADLEVEL_SINGLE_BF
Bitflags to be used for the modex exchange for the various thread levels.
Definition: mpiruntime.h:66
#define OMPI_THREADLEVEL_SINGLE_BF   0x00000001

Bitflags to be used for the modex exchange for the various thread levels.

Required to support heterogeneous environments

Function Documentation

int ompi_mpi_init ( int  argc,
char **  argv,
int  requested,
int *  provided 
)

Initialize the Open MPI MPI environment.

Parameters
argcargc, typically from main() (IN)
argvargv, typically from main() (IN)
requestedThread support that is requested (IN)
providedThread support that is provided (OUT)
Returns
MPI_SUCCESS if successful
Error code if unsuccessful

Intialize all support code needed for MPI applications. This function should only be called by MPI applications (including singletons). If this function is called, ompi_init() and ompi_rte_init() should not be called.

It is permissable to pass in (0, NULL) for (argc, argv).

These values are monotonic; MPI_THREAD_SINGLE < MPI_THREAD_FUNNELED < MPI_THREAD_SERIALIZED < MPI_THREAD_MULTIPLE. If possible, the call will return provided = required. Failing this, the call will return the least supported level such that provided > required. Finally, if the user requirement cannot be satisfied, then the call will return in provided the highest supported level.

References hwloc_obj::attr, hwloc_obj_attr_u::hwloc_cache_attr_s::depth, hwloc_bitmap_alloc(), hwloc_bitmap_compare(), hwloc_bitmap_free(), hwloc_bitmap_list_snprintf(), hwloc_bitmap_zero(), HWLOC_CPUBIND_PROCESS, hwloc_get_cpubind(), hwloc_get_root_obj(), HWLOC_OBJ_CACHE, HWLOC_OBJ_CORE, HWLOC_OBJ_NODE, HWLOC_OBJ_PU, HWLOC_OBJ_SOCKET, hwloc_set_cpubind(), hwloc_topology_get_support(), mca_allocator_base_open(), mca_base_param_find(), mca_base_param_lookup_int(), mca_base_param_reg_int_name(), mca_base_param_reg_string_name(), mca_base_param_set_string(), mca_coll_base_comm_select(), mca_coll_base_find_available(), mca_coll_base_open(), mca_mpool_base_init(), mca_mpool_base_open(), mca_rcache_base_open(), orte_proc_info_t::nodename, OBJ_CONSTRUCT, ompi_attr_init(), ompi_errcode_intern_init(), ompi_errhandler_init(), ompi_errhandler_runtime_callback(), ompi_group_init(), ompi_init_preconnect_mpi(), ompi_modex_send_string(), ompi_mpi_errcode_init(), ompi_mpi_init_started, ompi_mpi_initialized, ompi_mpi_thread_multiple, ompi_mpi_thread_provided, ompi_mpi_thread_requested, ompi_op_base_find_available(), ompi_op_base_open(), ompi_op_init(), ompi_osc_base_open(), ompi_proc_complete_init(), ompi_proc_init(), ompi_proc_world(), ompi_request_init(), ompi_wait_for_debugger(), opal_hash_table_init(), opal_init_util(), opal_output(), opal_progress_event_users_decrement(), opal_progress_set_event_flag(), opal_progress_set_event_poll_rate(), opal_progress_set_yield_when_idle(), opal_set_using_threads(), orte_init(), ORTE_PROC_MY_NAME, orte_process_info, orte_show_help(), hwloc_obj::parent, orte_proc_info_t::pid, hwloc_topology_cpubind_support::set_thisproc_cpubind, and hwloc_obj::type.

Variable Documentation

opal_hash_table_t ompi_mpi_f90_integer_hashtable

In ompi_mpi_init: the lists of Fortran 90 mathing datatypes.

We need these lists and hashtables in order to satisfy the new requirements introduced in MPI 2-1 Sect. 10.2.5, MPI_TYPE_CREATE_F90_xxxx, page 295, line 47.

Referenced by ompi_mpi_finalize().

OMPI_DECLSPEC opal_list_t ompi_registered_datareps

In ompi_mpi_init: a list of all memory associated with calling MPI_REGISTER_DATAREP so that we can free it during MPI_FINALIZE.

Referenced by ompi_mpi_finalize().