2004-08-07 04:53:56 +04:00
|
|
|
/*
|
2005-11-05 22:57:48 +03:00
|
|
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
|
|
* University Research and Technology
|
|
|
|
* Corporation. All rights reserved.
|
Deal with the ticket #1239 and #712. This will upgrade the Open MPI support
for the F90 type create functions to the requirements of MPI 2.1 standard.
Advice to implementors. An application may often repeat a call to
MPI_TYPE_CREATE_F90_xxxx with the same combination of (xxxx,p,r).
The application is not allowed to free the returned predefined, unnamed
datatype handles. To prevent the creation of a potentially huge amount of
handles, the MPI implementation should return the same datatype handle for
the same (REAL/COMPLEX/INTEGER,p,r) combination. Checking for the
combination (p,r) in the preceding call to MPI_TYPE_CREATE_F90_xxxx and
using a hash-table to find formerly generated handles should limit the
overhead of finding a previously generated datatype with same combination
of (xxxx,p,r). (End of advice to implementors.)
This commit fixes trac:1239, and #712.
This commit was SVN r19458.
The following Trac tickets were found above:
Ticket 1239 --> https://svn.open-mpi.org/trac/ompi/ticket/1239
2008-08-31 22:36:32 +04:00
|
|
|
* Copyright (c) 2004-2008 The University of Tennessee and The University
|
2005-11-05 22:57:48 +03:00
|
|
|
* of Tennessee Research Foundation. All rights
|
|
|
|
* reserved.
|
2004-11-28 23:09:25 +03:00
|
|
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
|
|
* University of Stuttgart. All rights reserved.
|
2005-03-24 15:43:37 +03:00
|
|
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
|
|
* All rights reserved.
|
2007-12-07 16:09:07 +03:00
|
|
|
* Copyright (c) 2006-2007 Cisco Systems, Inc. All rights reserved.
|
2007-02-09 23:17:37 +03:00
|
|
|
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
|
|
|
* reserved.
|
2008-05-01 19:06:10 +04:00
|
|
|
* Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
|
2004-11-22 04:38:40 +03:00
|
|
|
* $COPYRIGHT$
|
|
|
|
*
|
|
|
|
* Additional copyrights may follow
|
|
|
|
*
|
2004-08-07 04:53:56 +04:00
|
|
|
* $HEADER$
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @file
|
|
|
|
*
|
|
|
|
* Interface into the MPI portion of the Open MPI Run Time Environment
|
|
|
|
*/
|
|
|
|
|
2004-08-14 05:56:05 +04:00
|
|
|
#ifndef OMPI_MPI_MPIRUNTIME_H
|
|
|
|
#define OMPI_MPI_MPIRUNTIME_H
|
2004-08-07 04:53:56 +04:00
|
|
|
|
|
|
|
#include "ompi_config.h"
|
|
|
|
|
2009-03-21 04:28:31 +03:00
|
|
|
#include "opal/class/opal_list.h"
|
Deal with the ticket #1239 and #712. This will upgrade the Open MPI support
for the F90 type create functions to the requirements of MPI 2.1 standard.
Advice to implementors. An application may often repeat a call to
MPI_TYPE_CREATE_F90_xxxx with the same combination of (xxxx,p,r).
The application is not allowed to free the returned predefined, unnamed
datatype handles. To prevent the creation of a potentially huge amount of
handles, the MPI implementation should return the same datatype handle for
the same (REAL/COMPLEX/INTEGER,p,r) combination. Checking for the
combination (p,r) in the preceding call to MPI_TYPE_CREATE_F90_xxxx and
using a hash-table to find formerly generated handles should limit the
overhead of finding a previously generated datatype with same combination
of (xxxx,p,r). (End of advice to implementors.)
This commit fixes trac:1239, and #712.
This commit was SVN r19458.
The following Trac tickets were found above:
Ticket 1239 --> https://svn.open-mpi.org/trac/ompi/ticket/1239
2008-08-31 22:36:32 +04:00
|
|
|
#include "opal/class/opal_hash_table.h"
|
2007-12-07 16:09:07 +03:00
|
|
|
|
2007-05-16 19:46:52 +04:00
|
|
|
BEGIN_C_DECLS
|
|
|
|
|
|
|
|
/** forward type declaration */
|
|
|
|
struct ompi_communicator_t;
|
|
|
|
/** forward type declaration */
|
|
|
|
struct opal_thread_t;
|
|
|
|
|
|
|
|
/* Global variables and symbols for the MPI layer */
|
|
|
|
|
|
|
|
/** Is mpi initialized? */
|
2007-07-16 17:23:57 +04:00
|
|
|
OMPI_DECLSPEC extern bool ompi_mpi_initialized;
|
2007-05-16 19:46:52 +04:00
|
|
|
/** Has mpi been finalized? */
|
2007-07-16 17:23:57 +04:00
|
|
|
OMPI_DECLSPEC extern bool ompi_mpi_finalized;
|
2007-05-16 19:46:52 +04:00
|
|
|
|
|
|
|
/** Do we have multiple threads? */
|
|
|
|
OMPI_DECLSPEC extern bool ompi_mpi_thread_multiple;
|
|
|
|
/** Thread level requested to \c MPI_Init_thread() */
|
|
|
|
OMPI_DECLSPEC extern int ompi_mpi_thread_requested;
|
|
|
|
/** Thread level provided by Open MPI */
|
|
|
|
OMPI_DECLSPEC extern int ompi_mpi_thread_provided;
|
|
|
|
/** Identifier of the main thread */
|
|
|
|
OMPI_DECLSPEC extern struct opal_thread_t *ompi_mpi_main_thread;
|
|
|
|
|
2008-08-06 18:22:03 +04:00
|
|
|
/** Do we want to be warned on fork or not? */
|
2008-08-06 21:29:41 +04:00
|
|
|
OMPI_DECLSPEC extern bool ompi_warn_on_fork;
|
2008-08-06 18:22:03 +04:00
|
|
|
|
2007-12-07 16:09:07 +03:00
|
|
|
/** In ompi_mpi_init: a list of all memory associated with calling
|
|
|
|
MPI_REGISTER_DATAREP so that we can free it during
|
|
|
|
MPI_FINALIZE. */
|
|
|
|
OMPI_DECLSPEC extern opal_list_t ompi_registered_datareps;
|
|
|
|
|
Deal with the ticket #1239 and #712. This will upgrade the Open MPI support
for the F90 type create functions to the requirements of MPI 2.1 standard.
Advice to implementors. An application may often repeat a call to
MPI_TYPE_CREATE_F90_xxxx with the same combination of (xxxx,p,r).
The application is not allowed to free the returned predefined, unnamed
datatype handles. To prevent the creation of a potentially huge amount of
handles, the MPI implementation should return the same datatype handle for
the same (REAL/COMPLEX/INTEGER,p,r) combination. Checking for the
combination (p,r) in the preceding call to MPI_TYPE_CREATE_F90_xxxx and
using a hash-table to find formerly generated handles should limit the
overhead of finding a previously generated datatype with same combination
of (xxxx,p,r). (End of advice to implementors.)
This commit fixes trac:1239, and #712.
This commit was SVN r19458.
The following Trac tickets were found above:
Ticket 1239 --> https://svn.open-mpi.org/trac/ompi/ticket/1239
2008-08-31 22:36:32 +04:00
|
|
|
/** 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.
|
|
|
|
*/
|
2008-09-01 00:58:23 +04:00
|
|
|
extern opal_hash_table_t ompi_mpi_f90_integer_hashtable;
|
|
|
|
extern opal_hash_table_t ompi_mpi_f90_real_hashtable;
|
|
|
|
extern opal_hash_table_t ompi_mpi_f90_complex_hashtable;
|
Deal with the ticket #1239 and #712. This will upgrade the Open MPI support
for the F90 type create functions to the requirements of MPI 2.1 standard.
Advice to implementors. An application may often repeat a call to
MPI_TYPE_CREATE_F90_xxxx with the same combination of (xxxx,p,r).
The application is not allowed to free the returned predefined, unnamed
datatype handles. To prevent the creation of a potentially huge amount of
handles, the MPI implementation should return the same datatype handle for
the same (REAL/COMPLEX/INTEGER,p,r) combination. Checking for the
combination (p,r) in the preceding call to MPI_TYPE_CREATE_F90_xxxx and
using a hash-table to find formerly generated handles should limit the
overhead of finding a previously generated datatype with same combination
of (xxxx,p,r). (End of advice to implementors.)
This commit fixes trac:1239, and #712.
This commit was SVN r19458.
The following Trac tickets were found above:
Ticket 1239 --> https://svn.open-mpi.org/trac/ompi/ticket/1239
2008-08-31 22:36:32 +04:00
|
|
|
|
2008-05-01 19:06:10 +04:00
|
|
|
/** version string of ompi */
|
|
|
|
OMPI_DECLSPEC extern const char ompi_version_string[];
|
2007-05-16 19:46:52 +04:00
|
|
|
|
2008-08-06 18:22:03 +04:00
|
|
|
OMPI_DECLSPEC void ompi_warn_fork(void);
|
|
|
|
|
2007-05-16 19:46:52 +04:00
|
|
|
/**
|
|
|
|
* Initialize the Open MPI MPI environment
|
|
|
|
*
|
|
|
|
* @param argc argc, typically from main() (IN)
|
|
|
|
* @param argv argv, typically from main() (IN)
|
|
|
|
* @param requested Thread support that is requested (IN)
|
|
|
|
* @param provided Thread support that is provided (OUT)
|
|
|
|
*
|
|
|
|
* @returns MPI_SUCCESS if successful
|
|
|
|
* @returns 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).
|
|
|
|
*/
|
|
|
|
int ompi_mpi_init(int argc, char **argv, int requested, int *provided);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Finalize the Open MPI MPI environment
|
|
|
|
*
|
|
|
|
* @returns MPI_SUCCESS if successful
|
|
|
|
* @returns Error code if unsuccessful
|
|
|
|
*
|
|
|
|
* Should be called after all MPI functionality is complete (usually
|
|
|
|
* during MPI_FINALIZE).
|
|
|
|
*/
|
|
|
|
int ompi_mpi_finalize(void);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Abort the processes of comm
|
|
|
|
*/
|
2008-09-01 21:37:32 +04:00
|
|
|
OMPI_DECLSPEC int ompi_mpi_abort(struct ompi_communicator_t* comm,
|
2007-05-16 19:46:52 +04:00
|
|
|
int errcode, bool kill_remote_of_intercomm);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Do a preconnect of MPI connections (i.e., force connections to
|
|
|
|
* be made if they will be made).
|
|
|
|
*/
|
|
|
|
int ompi_init_preconnect_mpi(void);
|
|
|
|
|
|
|
|
END_C_DECLS
|
2004-08-07 04:53:56 +04:00
|
|
|
|
2004-08-14 05:56:05 +04:00
|
|
|
#endif /* OMPI_MPI_MPIRUNTIME_H */
|