Many updates and bug fixes for the Fortran bindings. Sorry these
aren't separated out into individual commits; they represent a few months of work in the Mercurial branch, and it seemed error-prone to try to break them up into multiple SVN commits. * Remove 2nd overloaded interfaces for MPI_TESTALL, MPI_TESTSOME, MPI_WAITALL, and MPI_WAITSOME in the "mpi" module implementations (because we're not allowed to have them, anyway -- it causes complications in the profiling interface). This forced an MPI-2.2 errata in the MPI Forum; we applied the errata here (the array of statuses parameter could not have a specific dimension specified in the dummy argument). Fixes trac:3166. * Similarly, fix type for MPI_ARGVS_NULL in Fortran * Add MPI_3.0 function MPI_F_SYNC_REG (Fortran interfaces only). * Add MPI-3.0 MPI_MESSAGE_NO_PROC in the mpi_f08 module. * Added mpi_f08 handle comparison operators, per MPI-3.0 addendum to the F08 proposal at the last Forum meeting. * Added missing type(MPI_File) and type(Message) in mpi_f08 module. * Fix --disable-mpi-io configure switch with all Fortran interfaces * Re-factor the Fortran header files to be fundamentally simpler and easier to maintain. Fortran constant values in the header files are now generated by a script named mpif-values.pl during autogen.pl (they were previously generated by mpif-common.pl, but it was quite a bit more subtle/complex). A second commit will follow this one to update svn:ignore values (just to ensure we don't muck up the first commit with the SVN client getting confused by the changed ignore values and new/changed files). * Fix some dependencies for compile ordering in ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile.am. * Fix bad wording in several places (.m4 file name, ompi_info output, etc.): we previoulsy said "F08 assumed shape" when we really meant "F08 assumed rank" (for Fortran gurus, those are very different things). * Removed the GREEK/SVN version string from mpif.h. It really had no purpose being there. Still to be done: * Handling of 2D array of strings in MPI_COMM_SPAWN_MULTIPLE still isn't right yet. Not sure how many people really care about this :-), but it is still broken. This commit was SVN r26997. The following Trac tickets were found above: Ticket 3166 --> https://svn.open-mpi.org/trac/ompi/ticket/3166
Этот коммит содержится в:
родитель
c4ee297a60
Коммит
7390ab8a23
@ -1092,12 +1092,13 @@ if ($include_arg) {
|
|||||||
++$step;
|
++$step;
|
||||||
verbose "\n$step. Running template-generating scripts\n\n";
|
verbose "\n$step. Running template-generating scripts\n\n";
|
||||||
|
|
||||||
# These scripts generate files that are used by configure (i.e., we
|
# These scripts generate fortran header files of different types, but
|
||||||
# generate one .h.in file from another .h.in file so that humans don't
|
# guaranteed to have the same value (i.e., so humans don't have to
|
||||||
# have to maintain two copies).
|
# maintain two sets of files, and potentially have values get out of
|
||||||
|
# sync).
|
||||||
|
|
||||||
my @scripts;
|
my @scripts;
|
||||||
push(@scripts, "ompi/include/mpif-common.pl");
|
push(@scripts, "ompi/include/mpif-values.pl");
|
||||||
|
|
||||||
foreach my $s (@scripts) {
|
foreach my $s (@scripts) {
|
||||||
verbose "=== $s\n";
|
verbose "=== $s\n";
|
||||||
|
@ -22,23 +22,23 @@ dnl $HEADER$
|
|||||||
|
|
||||||
# Does this compiler support the Fortran 2008 assumed shape syntax?
|
# Does this compiler support the Fortran 2008 assumed shape syntax?
|
||||||
|
|
||||||
# OMPI_FORTRAN_CHECK_F08_ASSUMED_SHAPE([action if found],
|
# OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK([action if found],
|
||||||
# [action if not found])
|
# [action if not found])
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
AC_DEFUN([OMPI_FORTRAN_CHECK_F08_ASSUMED_SHAPE], [
|
AC_DEFUN([OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK], [
|
||||||
AS_VAR_PUSHDEF([fortran_f08_assumed_shape],
|
AS_VAR_PUSHDEF([fortran_f08_assumed_rank],
|
||||||
[ompi_cv_fortran_f08_assumed_shape])
|
[ompi_cv_fortran_f08_assumed_rank])
|
||||||
|
|
||||||
AC_CACHE_CHECK([Fortran compiler F08 assumed shaped syntax],
|
AC_CACHE_CHECK([Fortran compiler F08 assumed shaped syntax],
|
||||||
fortran_f08_assumed_shape,
|
fortran_f08_assumed_rank,
|
||||||
[_OMPI_FORTRAN_CHECK_F08_ASSUMED_SHAPE])
|
[_OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK])
|
||||||
|
|
||||||
AS_VAR_IF(fortran_f08_assumed_shape, [yes], [$1], [$2])
|
AS_VAR_IF(fortran_f08_assumed_rank, [yes], [$1], [$2])
|
||||||
])
|
])
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
|
|
||||||
AC_DEFUN([_OMPI_FORTRAN_CHECK_F08_ASSUMED_SHAPE], [
|
AC_DEFUN([_OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK], [
|
||||||
OPAL_VAR_SCOPE_PUSH([happy])
|
OPAL_VAR_SCOPE_PUSH([happy])
|
||||||
|
|
||||||
# If we were called here, it means that the value was not cached,
|
# If we were called here, it means that the value was not cached,
|
||||||
@ -52,7 +52,7 @@ AC_DEFUN([_OMPI_FORTRAN_CHECK_F08_ASSUMED_SHAPE], [
|
|||||||
[TYPE(*), DIMENSION(..)],
|
[TYPE(*), DIMENSION(..)],
|
||||||
[happy=yes], [happy=no])
|
[happy=yes], [happy=no])
|
||||||
|
|
||||||
AS_VAR_SET(fortran_f08_assumed_shape, [$happy]);
|
AS_VAR_SET(fortran_f08_assumed_rank, [$happy]);
|
||||||
|
|
||||||
# Now put the orignal CACHE_CHECK MSG_CHECKING back so that it can
|
# Now put the orignal CACHE_CHECK MSG_CHECKING back so that it can
|
||||||
# output the MSG_RESULT.
|
# output the MSG_RESULT.
|
@ -39,7 +39,7 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
|||||||
OMPI_FORTRAN_HAVE_IGNORE_TKR=0
|
OMPI_FORTRAN_HAVE_IGNORE_TKR=0
|
||||||
OMPI_FORTRAN_HAVE_OPTIONAL_ARGS=0
|
OMPI_FORTRAN_HAVE_OPTIONAL_ARGS=0
|
||||||
OMPI_FORTRAN_HAVE_BIND_C=0
|
OMPI_FORTRAN_HAVE_BIND_C=0
|
||||||
OMPI_FORTRAN_HAVE_F08_ASSUMED_SHAPE=0
|
OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK=0
|
||||||
OMPI_FORTRAN_HAVE_PRIVATE=0
|
OMPI_FORTRAN_HAVE_PRIVATE=0
|
||||||
|
|
||||||
# These macros control symbol names for Fortran/C interoperability
|
# These macros control symbol names for Fortran/C interoperability
|
||||||
@ -396,16 +396,16 @@ end type test_mpi_handle],
|
|||||||
OMPI_FORTRAN_NEED_WRAPPER_ROUTINES=1
|
OMPI_FORTRAN_NEED_WRAPPER_ROUTINES=1
|
||||||
OMPI_FORTRAN_F08_PREDECL='!'
|
OMPI_FORTRAN_F08_PREDECL='!'
|
||||||
OMPI_FORTRAN_F08_TYPE=real
|
OMPI_FORTRAN_F08_TYPE=real
|
||||||
OMPI_FORTRAN_HAVE_F08_ASSUMED_SHAPE=0
|
OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK=0
|
||||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 -a \
|
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 -a \
|
||||||
$OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
$OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||||
[ # Look for Fortran 2008 assumed shape syntax
|
[ # Look for Fortran 2008 assumed shape syntax
|
||||||
OMPI_FORTRAN_CHECK_F08_ASSUMED_SHAPE(
|
OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK(
|
||||||
[ # If we have assumed shape, we can build the use
|
[ # If we have assumed shape, we can build the use
|
||||||
# mpi_f08 module "better"
|
# mpi_f08 module "better"
|
||||||
OMPI_FORTRAN_F08_PREDECL='!'
|
OMPI_FORTRAN_F08_PREDECL='!'
|
||||||
OMPI_FORTRAN_F08_TYPE='type(*), dimension(..)'
|
OMPI_FORTRAN_F08_TYPE='type(*), dimension(..)'
|
||||||
OMPI_FORTRAN_HAVE_F08_ASSUMED_SHAPE=1])
|
OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK=1])
|
||||||
|
|
||||||
# Which mpi_f08 implementation are we using?
|
# Which mpi_f08 implementation are we using?
|
||||||
# a) partial, proof-of-concept that supports array
|
# a) partial, proof-of-concept that supports array
|
||||||
@ -587,8 +587,8 @@ end type test_mpi_handle],
|
|||||||
AC_DEFINE_UNQUOTED(OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS,
|
AC_DEFINE_UNQUOTED(OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS,
|
||||||
$OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS,
|
$OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS,
|
||||||
[For ompi_info: Whether we will build the MPI Fortran "use mpi_f08" bindings or not])
|
[For ompi_info: Whether we will build the MPI Fortran "use mpi_f08" bindings or not])
|
||||||
AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_F08_ASSUMED_SHAPE,
|
AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK,
|
||||||
[$OMPI_FORTRAN_HAVE_F08_ASSUMED_SHAPE],
|
[$OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK],
|
||||||
[For ompi_info: Whether the Fortran compiler supports the Fortran 2008 "assumed shape" syntax or not])
|
[For ompi_info: Whether the Fortran compiler supports the Fortran 2008 "assumed shape" syntax or not])
|
||||||
AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_BIND_C,
|
AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_BIND_C,
|
||||||
[$OMPI_FORTRAN_HAVE_BIND_C],
|
[$OMPI_FORTRAN_HAVE_BIND_C],
|
||||||
|
@ -18,10 +18,7 @@
|
|||||||
# $HEADER$
|
# $HEADER$
|
||||||
#
|
#
|
||||||
|
|
||||||
# mpif-common.h is not generated, but mpif.h and mpif-config.h are.
|
# Note - headers and nodist_headers will go in ${includedir}/openmpi,
|
||||||
# See big comments in these files for an explanation.
|
|
||||||
|
|
||||||
# note - headers and nodist_headers will go in ${includedir}/openmpi,
|
|
||||||
# not ${includedir}/
|
# not ${includedir}/
|
||||||
headers =
|
headers =
|
||||||
nodist_headers = ompi_config.h
|
nodist_headers = ompi_config.h
|
||||||
@ -34,9 +31,14 @@ pkginclude_HEADERS =
|
|||||||
|
|
||||||
if OMPI_BUILD_FORTRAN_MPIFH_BINDINGS
|
if OMPI_BUILD_FORTRAN_MPIFH_BINDINGS
|
||||||
include_HEADERS += \
|
include_HEADERS += \
|
||||||
mpif-all-common.h \
|
mpif.h \
|
||||||
mpif-common.h \
|
mpif-constants.h \
|
||||||
mpif-mpi-io.h
|
mpif-externals.h \
|
||||||
|
mpif-handles.h \
|
||||||
|
mpif-io-constants.h \
|
||||||
|
mpif-io-handles.h \
|
||||||
|
mpif-sentinels.h
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# These files are always installed in $(includedir), but shouldn't be
|
# These files are always installed in $(includedir), but shouldn't be
|
||||||
@ -49,13 +51,21 @@ nodist_include_HEADERS = \
|
|||||||
|
|
||||||
if OMPI_BUILD_FORTRAN_MPIFH_BINDINGS
|
if OMPI_BUILD_FORTRAN_MPIFH_BINDINGS
|
||||||
nodist_include_HEADERS += \
|
nodist_include_HEADERS += \
|
||||||
mpif.h \
|
|
||||||
mpif-config.h
|
mpif-config.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
include ompi/Makefile.include
|
include ompi/Makefile.include
|
||||||
|
|
||||||
EXTRA_DIST = $(headers) mpif-common.pl
|
# This is complicated, but mpif-values.pl generates
|
||||||
|
# several mpif-*.h files in this directory (during autogen.pl).
|
||||||
|
# Hence, if any of those files change, it's safer to just force the
|
||||||
|
# user to re-autogen.
|
||||||
|
#mpif.h: mpif-constants.h mpif-handles.h mpif-io-constants.h mpif-io-handles.h
|
||||||
|
# @ echo "ERROR: an mpi-*.h header file has changed"
|
||||||
|
# @ echo "ERROR: you must re-run autogen.pl (sorry!)"
|
||||||
|
# @ exit 1
|
||||||
|
|
||||||
|
EXTRA_DIST = $(headers) mpif-values.pl
|
||||||
|
|
||||||
if WANT_INSTALL_HEADERS
|
if WANT_INSTALL_HEADERS
|
||||||
ompidir = $(includedir)/openmpi
|
ompidir = $(includedir)/openmpi
|
||||||
|
@ -1,336 +0,0 @@
|
|||||||
! -*- fortran -*-
|
|
||||||
!
|
|
||||||
! Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
|
|
||||||
! University Research and Technology
|
|
||||||
! Corporation. All rights reserved.
|
|
||||||
! Copyright (c) 2004-2010 The University of Tennessee and The University
|
|
||||||
! of Tennessee Research Foundation. All rights
|
|
||||||
! reserved.
|
|
||||||
! Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
|
|
||||||
! University of Stuttgart. All rights reserved.
|
|
||||||
! Copyright (c) 2004-2005 The Regents of the University of California.
|
|
||||||
! All rights reserved.
|
|
||||||
! Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved.
|
|
||||||
! Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
|
||||||
! $COPYRIGHT$
|
|
||||||
!
|
|
||||||
! Additional copyrights may follow
|
|
||||||
!
|
|
||||||
! $HEADER$
|
|
||||||
!
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
!
|
|
||||||
! Do ***not*** copy this file to the directory where your Fortran
|
|
||||||
! fortran application is compiled unless it is absolutely necessary! Most
|
|
||||||
! modern Fortran compilers now support the -I command line flag, which
|
|
||||||
! tells the compiler where to find .h files (specifically, this one). For
|
|
||||||
! example:
|
|
||||||
!
|
|
||||||
! shell$ mpif77 foo.f -o foo -I$OMPI_HOME/include
|
|
||||||
!
|
|
||||||
! will probably do the trick (assuming that you have set OMPI_HOME
|
|
||||||
! properly).
|
|
||||||
!
|
|
||||||
! That being said, OMPI's "mpif77" wrapper compiler should
|
|
||||||
! automatically include the -I option for you. The following command
|
|
||||||
! should be equivalent to the command listed above:
|
|
||||||
!
|
|
||||||
! shell$ mpif77 foo.f -o foo
|
|
||||||
!
|
|
||||||
! You should not copy this file to your local directory because it is
|
|
||||||
! possible that this file will be changed between versions of Open MPI.
|
|
||||||
! Indeed, this mpif.h is incompatible with the mpif.f of other
|
|
||||||
! implementations of MPI. Using this mpif.h with other implementations
|
|
||||||
! of MPI, or with other versions of Open MPI will result in undefined
|
|
||||||
! behavior (to include incorrect results, segmentation faults,
|
|
||||||
! unexplainable "hanging" in your application, etc.). Always use the
|
|
||||||
! -I command line option instead (or let mpif77 do it for you).
|
|
||||||
!
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
!
|
|
||||||
! This file contains the bulk of the Open MPI Fortran interface. It
|
|
||||||
! is included as a back-end file to both mpif.h (i.e., the
|
|
||||||
! standardized MPI Fortran header file) and mpi.f90 (the MPI-2
|
|
||||||
! Fortran module source file, found in ompi/mpi/f90).
|
|
||||||
!
|
|
||||||
! This file is marginally different than mpif.h. mpif.h includes
|
|
||||||
! some "external" statements that are not suitable for use with the
|
|
||||||
! MPI-2 F90 module, and therefore cannot be included in the mpi.f90
|
|
||||||
! source file. Hence, this file is essentially everything that
|
|
||||||
! needs to be in the standardized mpif.h *except* the "external"
|
|
||||||
! statements, and is therefore suitable to be included in mpi.f90.
|
|
||||||
!
|
|
||||||
|
|
||||||
!
|
|
||||||
! First, however, include some output from configure.
|
|
||||||
!
|
|
||||||
include 'mpif-config.h'
|
|
||||||
|
|
||||||
!
|
|
||||||
! MPI version
|
|
||||||
!
|
|
||||||
integer MPI_VERSION, MPI_SUBVERSION
|
|
||||||
|
|
||||||
parameter (MPI_VERSION=2)
|
|
||||||
parameter (MPI_SUBVERSION=1)
|
|
||||||
!
|
|
||||||
! Miscellaneous constants
|
|
||||||
!
|
|
||||||
integer MPI_ANY_SOURCE, MPI_ANY_TAG
|
|
||||||
integer MPI_PROC_NULL
|
|
||||||
integer MPI_ROOT
|
|
||||||
integer MPI_UNDEFINED
|
|
||||||
integer MPI_CART, MPI_GRAPH, MPI_KEYVAL_INVALID
|
|
||||||
integer MPI_SOURCE, MPI_TAG, MPI_ERROR
|
|
||||||
integer MPI_TAG_UB, MPI_HOST, MPI_IO, MPI_WTIME_IS_GLOBAL
|
|
||||||
integer MPI_APPNUM, MPI_LASTUSEDCODE, MPI_UNIVERSE_SIZE
|
|
||||||
integer IMPI_CLIENT_SIZE, IMPI_CLIENT_COLOR
|
|
||||||
integer IMPI_HOST_SIZE, IMPI_HOST_COLOR
|
|
||||||
integer MPI_BSEND_OVERHEAD
|
|
||||||
integer MPI_ORDER_C, MPI_ORDER_FORTRAN
|
|
||||||
integer MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_CYCLIC
|
|
||||||
integer MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_DFLT_DARG
|
|
||||||
integer MPI_TYPECLASS_INTEGER, MPI_TYPECLASS_REAL
|
|
||||||
integer MPI_TYPECLASS_COMPLEX
|
|
||||||
integer MPI_MODE_NOCHECK, MPI_MODE_NOPRECEDE, MPI_MODE_NOPUT
|
|
||||||
integer MPI_MODE_NOSTORE, MPI_MODE_NOSUCCEED
|
|
||||||
integer MPI_LOCK_EXCLUSIVE, MPI_LOCK_SHARED
|
|
||||||
integer MPI_WIN_BASE, MPI_WIN_SIZE, MPI_WIN_DISP_UNIT
|
|
||||||
integer MPI_MESSAGE_NO_PROC
|
|
||||||
|
|
||||||
parameter (MPI_ANY_SOURCE=-1)
|
|
||||||
parameter (MPI_ANY_TAG=-1)
|
|
||||||
parameter (MPI_PROC_NULL=-2)
|
|
||||||
parameter (MPI_ROOT=-4)
|
|
||||||
parameter (MPI_UNDEFINED=-32766)
|
|
||||||
parameter (MPI_CART=1)
|
|
||||||
parameter (MPI_GRAPH=2)
|
|
||||||
parameter (MPI_KEYVAL_INVALID=-1)
|
|
||||||
parameter (MPI_SOURCE=1)
|
|
||||||
parameter (MPI_TAG=2)
|
|
||||||
parameter (MPI_ERROR=3)
|
|
||||||
parameter (MPI_TAG_UB=0)
|
|
||||||
parameter (MPI_HOST=1)
|
|
||||||
parameter (MPI_IO=2)
|
|
||||||
parameter (MPI_WTIME_IS_GLOBAL=3)
|
|
||||||
parameter (MPI_APPNUM=4)
|
|
||||||
parameter (MPI_LASTUSEDCODE=5)
|
|
||||||
parameter (MPI_UNIVERSE_SIZE=6)
|
|
||||||
parameter (MPI_WIN_BASE=7)
|
|
||||||
parameter (MPI_WIN_SIZE=8)
|
|
||||||
parameter (MPI_WIN_DISP_UNIT=9)
|
|
||||||
parameter (IMPI_CLIENT_SIZE=10)
|
|
||||||
parameter (IMPI_CLIENT_COLOR=11)
|
|
||||||
parameter (IMPI_HOST_SIZE=12)
|
|
||||||
parameter (IMPI_HOST_COLOR=13)
|
|
||||||
|
|
||||||
parameter (MPI_BSEND_OVERHEAD=128)
|
|
||||||
parameter (MPI_ORDER_C=0)
|
|
||||||
parameter (MPI_ORDER_FORTRAN=1)
|
|
||||||
parameter (MPI_DISTRIBUTE_BLOCK=0)
|
|
||||||
parameter (MPI_DISTRIBUTE_CYCLIC=1)
|
|
||||||
parameter (MPI_DISTRIBUTE_NONE=2)
|
|
||||||
parameter (MPI_DISTRIBUTE_DFLT_DARG=-1)
|
|
||||||
parameter (MPI_TYPECLASS_INTEGER=1)
|
|
||||||
parameter (MPI_TYPECLASS_REAL=2)
|
|
||||||
parameter (MPI_TYPECLASS_COMPLEX=3)
|
|
||||||
parameter (MPI_MODE_NOCHECK=1)
|
|
||||||
parameter (MPI_MODE_NOPRECEDE=2)
|
|
||||||
parameter (MPI_MODE_NOPUT=4)
|
|
||||||
parameter (MPI_MODE_NOSTORE=8)
|
|
||||||
parameter (MPI_MODE_NOSUCCEED=16)
|
|
||||||
parameter (MPI_LOCK_EXCLUSIVE=1)
|
|
||||||
parameter (MPI_LOCK_SHARED=2)
|
|
||||||
parameter (MPI_MESSAGE_NO_PROC=1)
|
|
||||||
|
|
||||||
!
|
|
||||||
! MPI_Init_thread constants
|
|
||||||
!
|
|
||||||
integer MPI_THREAD_SINGLE, MPI_THREAD_FUNNELED
|
|
||||||
integer MPI_THREAD_SERIALIZED, MPI_THREAD_MULTIPLE
|
|
||||||
|
|
||||||
parameter (MPI_THREAD_SINGLE=0)
|
|
||||||
parameter (MPI_THREAD_FUNNELED=1)
|
|
||||||
parameter (MPI_THREAD_SERIALIZED=2)
|
|
||||||
parameter (MPI_THREAD_MULTIPLE=3)
|
|
||||||
!
|
|
||||||
! error classes
|
|
||||||
!
|
|
||||||
integer MPI_SUCCESS
|
|
||||||
integer MPI_ERR_BUFFER
|
|
||||||
integer MPI_ERR_COUNT
|
|
||||||
integer MPI_ERR_TYPE
|
|
||||||
integer MPI_ERR_TAG
|
|
||||||
integer MPI_ERR_COMM
|
|
||||||
integer MPI_ERR_RANK
|
|
||||||
integer MPI_ERR_REQUEST
|
|
||||||
integer MPI_ERR_ROOT
|
|
||||||
integer MPI_ERR_GROUP
|
|
||||||
integer MPI_ERR_OP
|
|
||||||
integer MPI_ERR_TOPOLOGY
|
|
||||||
integer MPI_ERR_DIMS
|
|
||||||
integer MPI_ERR_ARG
|
|
||||||
integer MPI_ERR_UNKNOWN
|
|
||||||
integer MPI_ERR_TRUNCATE
|
|
||||||
integer MPI_ERR_OTHER
|
|
||||||
integer MPI_ERR_INTERN
|
|
||||||
integer MPI_ERR_IN_STATUS
|
|
||||||
integer MPI_ERR_PENDING
|
|
||||||
integer MPI_ERR_ACCESS
|
|
||||||
integer MPI_ERR_AMODE
|
|
||||||
integer MPI_ERR_ASSERT
|
|
||||||
integer MPI_ERR_BAD_FILE
|
|
||||||
integer MPI_ERR_BASE
|
|
||||||
integer MPI_ERR_CONVERSION
|
|
||||||
integer MPI_ERR_DISP
|
|
||||||
integer MPI_ERR_DUP_DATAREP
|
|
||||||
integer MPI_ERR_FILE_EXISTS
|
|
||||||
integer MPI_ERR_FILE_IN_USE
|
|
||||||
integer MPI_ERR_FILE
|
|
||||||
integer MPI_ERR_INFO_KEY
|
|
||||||
integer MPI_ERR_INFO_NOKEY
|
|
||||||
integer MPI_ERR_INFO_VALUE
|
|
||||||
integer MPI_ERR_INFO
|
|
||||||
integer MPI_ERR_IO
|
|
||||||
integer MPI_ERR_KEYVAL
|
|
||||||
integer MPI_ERR_LOCKTYPE
|
|
||||||
integer MPI_ERR_NAME
|
|
||||||
integer MPI_ERR_NO_MEM
|
|
||||||
integer MPI_ERR_NOT_SAME
|
|
||||||
integer MPI_ERR_NO_SPACE
|
|
||||||
integer MPI_ERR_NO_SUCH_FILE
|
|
||||||
integer MPI_ERR_PORT
|
|
||||||
integer MPI_ERR_QUOTA
|
|
||||||
integer MPI_ERR_READ_ONLY
|
|
||||||
integer MPI_ERR_RMA_CONFLICT
|
|
||||||
integer MPI_ERR_RMA_SYNC
|
|
||||||
integer MPI_ERR_SERVICE
|
|
||||||
integer MPI_ERR_SIZE
|
|
||||||
integer MPI_ERR_SPAWN
|
|
||||||
integer MPI_ERR_UNSUPPORTED_DATAREP
|
|
||||||
integer MPI_ERR_UNSUPPORTED_OPERATION
|
|
||||||
integer MPI_ERR_WIN
|
|
||||||
|
|
||||||
integer MPI_ERR_SYSRESOURCE
|
|
||||||
integer MPI_ERR_LASTCODE
|
|
||||||
|
|
||||||
parameter( MPI_SUCCESS = 0)
|
|
||||||
parameter( MPI_ERR_BUFFER = 1)
|
|
||||||
parameter( MPI_ERR_COUNT = 2)
|
|
||||||
parameter( MPI_ERR_TYPE = 3)
|
|
||||||
parameter( MPI_ERR_TAG = 4)
|
|
||||||
parameter( MPI_ERR_COMM = 5)
|
|
||||||
parameter( MPI_ERR_RANK = 6)
|
|
||||||
parameter( MPI_ERR_REQUEST = 7)
|
|
||||||
parameter( MPI_ERR_ROOT = 8)
|
|
||||||
parameter( MPI_ERR_GROUP = 9)
|
|
||||||
parameter( MPI_ERR_OP = 10)
|
|
||||||
parameter( MPI_ERR_TOPOLOGY = 11)
|
|
||||||
parameter( MPI_ERR_DIMS = 12)
|
|
||||||
parameter( MPI_ERR_ARG = 13)
|
|
||||||
parameter( MPI_ERR_UNKNOWN = 14)
|
|
||||||
parameter( MPI_ERR_TRUNCATE = 15)
|
|
||||||
parameter( MPI_ERR_OTHER = 16)
|
|
||||||
parameter( MPI_ERR_INTERN = 17)
|
|
||||||
parameter( MPI_ERR_IN_STATUS = 18)
|
|
||||||
parameter( MPI_ERR_PENDING = 19)
|
|
||||||
parameter( MPI_ERR_ACCESS = 20)
|
|
||||||
parameter( MPI_ERR_AMODE = 21)
|
|
||||||
parameter( MPI_ERR_ASSERT = 22)
|
|
||||||
parameter( MPI_ERR_BAD_FILE = 23)
|
|
||||||
parameter( MPI_ERR_BASE = 24)
|
|
||||||
parameter( MPI_ERR_CONVERSION = 25)
|
|
||||||
parameter( MPI_ERR_DISP = 26)
|
|
||||||
parameter( MPI_ERR_DUP_DATAREP = 27)
|
|
||||||
parameter( MPI_ERR_FILE_EXISTS = 28)
|
|
||||||
parameter( MPI_ERR_FILE_IN_USE = 29)
|
|
||||||
parameter( MPI_ERR_FILE = 30)
|
|
||||||
parameter( MPI_ERR_INFO_KEY = 31)
|
|
||||||
parameter( MPI_ERR_INFO_NOKEY = 32)
|
|
||||||
parameter( MPI_ERR_INFO_VALUE = 33)
|
|
||||||
parameter( MPI_ERR_INFO = 34)
|
|
||||||
parameter( MPI_ERR_IO = 35)
|
|
||||||
parameter( MPI_ERR_KEYVAL = 36)
|
|
||||||
parameter( MPI_ERR_LOCKTYPE = 37)
|
|
||||||
parameter( MPI_ERR_NAME = 38)
|
|
||||||
parameter( MPI_ERR_NO_MEM = 39)
|
|
||||||
parameter( MPI_ERR_NOT_SAME = 40)
|
|
||||||
parameter( MPI_ERR_NO_SPACE = 41)
|
|
||||||
parameter( MPI_ERR_NO_SUCH_FILE = 42)
|
|
||||||
parameter( MPI_ERR_PORT = 43)
|
|
||||||
parameter( MPI_ERR_QUOTA = 44)
|
|
||||||
parameter( MPI_ERR_READ_ONLY = 45)
|
|
||||||
parameter( MPI_ERR_RMA_CONFLICT = 46)
|
|
||||||
parameter( MPI_ERR_RMA_SYNC = 47)
|
|
||||||
parameter( MPI_ERR_SERVICE = 48)
|
|
||||||
parameter( MPI_ERR_SIZE = 49)
|
|
||||||
parameter( MPI_ERR_SPAWN = 50)
|
|
||||||
parameter( MPI_ERR_UNSUPPORTED_DATAREP = 51)
|
|
||||||
parameter( MPI_ERR_UNSUPPORTED_OPERATION= 52)
|
|
||||||
parameter( MPI_ERR_WIN = 53)
|
|
||||||
|
|
||||||
parameter( MPI_ERR_SYSRESOURCE = -2)
|
|
||||||
parameter( MPI_ERR_LASTCODE = 54)
|
|
||||||
|
|
||||||
!
|
|
||||||
! comparison results
|
|
||||||
!
|
|
||||||
integer MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL
|
|
||||||
|
|
||||||
parameter (MPI_IDENT=0)
|
|
||||||
parameter (MPI_CONGRUENT=1)
|
|
||||||
parameter (MPI_SIMILAR=2)
|
|
||||||
parameter (MPI_UNEQUAL=3)
|
|
||||||
!
|
|
||||||
! datatype combiners
|
|
||||||
!
|
|
||||||
integer MPI_COMBINER_NAMED
|
|
||||||
integer MPI_COMBINER_DUP
|
|
||||||
integer MPI_COMBINER_CONTIGUOUS
|
|
||||||
integer MPI_COMBINER_VECTOR
|
|
||||||
integer MPI_COMBINER_HVECTOR_INTEGER
|
|
||||||
integer MPI_COMBINER_HVECTOR
|
|
||||||
integer MPI_COMBINER_INDEXED
|
|
||||||
integer MPI_COMBINER_HINDEXED_INTEGER
|
|
||||||
integer MPI_COMBINER_HINDEXED
|
|
||||||
integer MPI_COMBINER_INDEXED_BLOCK
|
|
||||||
integer MPI_COMBINER_STRUCT_INTEGER
|
|
||||||
integer MPI_COMBINER_STRUCT
|
|
||||||
integer MPI_COMBINER_SUBARRAY
|
|
||||||
integer MPI_COMBINER_DARRAY
|
|
||||||
integer MPI_COMBINER_F90_REAL
|
|
||||||
integer MPI_COMBINER_F90_COMPLEX
|
|
||||||
integer MPI_COMBINER_F90_INTEGER
|
|
||||||
integer MPI_COMBINER_RESIZED
|
|
||||||
integer MPI_COMBINER_HINDEXED_BLOCK
|
|
||||||
|
|
||||||
parameter (MPI_COMBINER_NAMED=0)
|
|
||||||
parameter (MPI_COMBINER_DUP=1)
|
|
||||||
parameter (MPI_COMBINER_CONTIGUOUS=2)
|
|
||||||
parameter (MPI_COMBINER_VECTOR=3)
|
|
||||||
parameter (MPI_COMBINER_HVECTOR_INTEGER=4)
|
|
||||||
parameter (MPI_COMBINER_HVECTOR=5)
|
|
||||||
parameter (MPI_COMBINER_INDEXED=6)
|
|
||||||
parameter (MPI_COMBINER_HINDEXED_INTEGER=7)
|
|
||||||
parameter (MPI_COMBINER_HINDEXED=8)
|
|
||||||
parameter (MPI_COMBINER_INDEXED_BLOCK=9)
|
|
||||||
parameter (MPI_COMBINER_STRUCT_INTEGER=10)
|
|
||||||
parameter (MPI_COMBINER_STRUCT=11)
|
|
||||||
parameter (MPI_COMBINER_SUBARRAY=12)
|
|
||||||
parameter (MPI_COMBINER_DARRAY=13)
|
|
||||||
parameter (MPI_COMBINER_F90_REAL=14)
|
|
||||||
parameter (MPI_COMBINER_F90_COMPLEX=15)
|
|
||||||
parameter (MPI_COMBINER_F90_INTEGER=16)
|
|
||||||
parameter (MPI_COMBINER_RESIZED=17)
|
|
||||||
parameter (MPI_COMBINER_HINDEXED_BLOCK=18)
|
|
||||||
|
|
||||||
!
|
|
||||||
! Communicator split type constants.
|
|
||||||
!
|
|
||||||
integer MPI_COMM_TYPE_SHARED
|
|
||||||
parameter (MPI_COMM_TYPE_SHARED=0)
|
|
@ -1,388 +0,0 @@
|
|||||||
! -*- fortran -*-
|
|
||||||
!
|
|
||||||
! Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
|
|
||||||
! University Research and Technology
|
|
||||||
! Corporation. All rights reserved.
|
|
||||||
! Copyright (c) 2004-2010 The University of Tennessee and The University
|
|
||||||
! of Tennessee Research Foundation. All rights
|
|
||||||
! reserved.
|
|
||||||
! Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
|
|
||||||
! University of Stuttgart. All rights reserved.
|
|
||||||
! Copyright (c) 2004-2005 The Regents of the University of California.
|
|
||||||
! All rights reserved.
|
|
||||||
! Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved.
|
|
||||||
! Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
|
||||||
! $COPYRIGHT$
|
|
||||||
!
|
|
||||||
! Additional copyrights may follow
|
|
||||||
!
|
|
||||||
! $HEADER$
|
|
||||||
!
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
!
|
|
||||||
! Do ***not*** copy this file to the directory where your Fortran
|
|
||||||
! fortran application is compiled unless it is absolutely necessary! Most
|
|
||||||
! modern Fortran compilers now support the -I command line flag, which
|
|
||||||
! tells the compiler where to find .h files (specifically, this one). For
|
|
||||||
! example:
|
|
||||||
!
|
|
||||||
! shell$ mpif77 foo.f -o foo -I$OMPI_HOME/include
|
|
||||||
!
|
|
||||||
! will probably do the trick (assuming that you have set OMPI_HOME
|
|
||||||
! properly).
|
|
||||||
!
|
|
||||||
! That being said, OMPI's "mpif77" wrapper compiler should
|
|
||||||
! automatically include the -I option for you. The following command
|
|
||||||
! should be equivalent to the command listed above:
|
|
||||||
!
|
|
||||||
! shell$ mpif77 foo.f -o foo
|
|
||||||
!
|
|
||||||
! You should not copy this file to your local directory because it is
|
|
||||||
! possible that this file will be changed between versions of Open MPI.
|
|
||||||
! Indeed, this mpif.h is incompatible with the mpif.f of other
|
|
||||||
! implementations of MPI. Using this mpif.h with other implementations
|
|
||||||
! of MPI, or with other versions of Open MPI will result in undefined
|
|
||||||
! behavior (to include incorrect results, segmentation faults,
|
|
||||||
! unexplainable "hanging" in your application, etc.). Always use the
|
|
||||||
! -I command line option instead (or let mpif77 do it for you).
|
|
||||||
!
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
!
|
|
||||||
! This file contains the bulk of the Open MPI Fortran interface. It
|
|
||||||
! is included as a back-end file to both mpif.h (i.e., the
|
|
||||||
! standardized MPI Fortran header file) and mpi.f90 (the MPI-2
|
|
||||||
! Fortran module source file, found in ompi/mpi/f90).
|
|
||||||
!
|
|
||||||
! This file is marginally different than mpif.h. mpif.h includes
|
|
||||||
! some "external" statements that are not suitable for use with the
|
|
||||||
! MPI-2 F90 module, and therefore cannot be included in the mpi.f90
|
|
||||||
! source file. Hence, this file is essentially everything that
|
|
||||||
! needs to be in the standardized mpif.h *except* the "external"
|
|
||||||
! statements, and is therefore suitable to be included in mpi.f90.
|
|
||||||
!
|
|
||||||
|
|
||||||
!
|
|
||||||
! First, however, include some output from configure.
|
|
||||||
!
|
|
||||||
include 'mpif-config.h'
|
|
||||||
|
|
||||||
!
|
|
||||||
! MPI version
|
|
||||||
!
|
|
||||||
integer MPI_VERSION, MPI_SUBVERSION
|
|
||||||
|
|
||||||
parameter (MPI_VERSION=2)
|
|
||||||
parameter (MPI_SUBVERSION=1)
|
|
||||||
!
|
|
||||||
! Miscellaneous constants
|
|
||||||
!
|
|
||||||
integer MPI_ANY_SOURCE, MPI_ANY_TAG
|
|
||||||
integer MPI_PROC_NULL
|
|
||||||
integer MPI_ROOT
|
|
||||||
integer MPI_UNDEFINED
|
|
||||||
integer MPI_CART, MPI_GRAPH, MPI_KEYVAL_INVALID
|
|
||||||
integer MPI_SOURCE, MPI_TAG, MPI_ERROR
|
|
||||||
integer MPI_TAG_UB, MPI_HOST, MPI_IO, MPI_WTIME_IS_GLOBAL
|
|
||||||
integer MPI_APPNUM, MPI_LASTUSEDCODE, MPI_UNIVERSE_SIZE
|
|
||||||
integer IMPI_CLIENT_SIZE, IMPI_CLIENT_COLOR
|
|
||||||
integer IMPI_HOST_SIZE, IMPI_HOST_COLOR
|
|
||||||
integer MPI_BSEND_OVERHEAD
|
|
||||||
integer MPI_ORDER_C, MPI_ORDER_FORTRAN
|
|
||||||
integer MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_CYCLIC
|
|
||||||
integer MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_DFLT_DARG
|
|
||||||
integer MPI_TYPECLASS_INTEGER, MPI_TYPECLASS_REAL
|
|
||||||
integer MPI_TYPECLASS_COMPLEX
|
|
||||||
integer MPI_MODE_NOCHECK, MPI_MODE_NOPRECEDE, MPI_MODE_NOPUT
|
|
||||||
integer MPI_MODE_NOSTORE, MPI_MODE_NOSUCCEED
|
|
||||||
integer MPI_LOCK_EXCLUSIVE, MPI_LOCK_SHARED
|
|
||||||
integer MPI_WIN_BASE, MPI_WIN_SIZE, MPI_WIN_DISP_UNIT
|
|
||||||
integer MPI_MESSAGE_NO_PROC
|
|
||||||
|
|
||||||
parameter (MPI_ANY_SOURCE=-1)
|
|
||||||
parameter (MPI_ANY_TAG=-1)
|
|
||||||
parameter (MPI_PROC_NULL=-2)
|
|
||||||
parameter (MPI_ROOT=-4)
|
|
||||||
parameter (MPI_UNDEFINED=-32766)
|
|
||||||
parameter (MPI_CART=1)
|
|
||||||
parameter (MPI_GRAPH=2)
|
|
||||||
parameter (MPI_KEYVAL_INVALID=-1)
|
|
||||||
parameter (MPI_SOURCE=1)
|
|
||||||
parameter (MPI_TAG=2)
|
|
||||||
parameter (MPI_ERROR=3)
|
|
||||||
parameter (MPI_TAG_UB=0)
|
|
||||||
parameter (MPI_HOST=1)
|
|
||||||
parameter (MPI_IO=2)
|
|
||||||
parameter (MPI_WTIME_IS_GLOBAL=3)
|
|
||||||
parameter (MPI_APPNUM=4)
|
|
||||||
parameter (MPI_LASTUSEDCODE=5)
|
|
||||||
parameter (MPI_UNIVERSE_SIZE=6)
|
|
||||||
parameter (MPI_WIN_BASE=7)
|
|
||||||
parameter (MPI_WIN_SIZE=8)
|
|
||||||
parameter (MPI_WIN_DISP_UNIT=9)
|
|
||||||
parameter (IMPI_CLIENT_SIZE=10)
|
|
||||||
parameter (IMPI_CLIENT_COLOR=11)
|
|
||||||
parameter (IMPI_HOST_SIZE=12)
|
|
||||||
parameter (IMPI_HOST_COLOR=13)
|
|
||||||
|
|
||||||
parameter (MPI_BSEND_OVERHEAD=128)
|
|
||||||
parameter (MPI_ORDER_C=0)
|
|
||||||
parameter (MPI_ORDER_FORTRAN=1)
|
|
||||||
parameter (MPI_DISTRIBUTE_BLOCK=0)
|
|
||||||
parameter (MPI_DISTRIBUTE_CYCLIC=1)
|
|
||||||
parameter (MPI_DISTRIBUTE_NONE=2)
|
|
||||||
parameter (MPI_DISTRIBUTE_DFLT_DARG=-1)
|
|
||||||
parameter (MPI_TYPECLASS_INTEGER=1)
|
|
||||||
parameter (MPI_TYPECLASS_REAL=2)
|
|
||||||
parameter (MPI_TYPECLASS_COMPLEX=3)
|
|
||||||
parameter (MPI_MODE_NOCHECK=1)
|
|
||||||
parameter (MPI_MODE_NOPRECEDE=2)
|
|
||||||
parameter (MPI_MODE_NOPUT=4)
|
|
||||||
parameter (MPI_MODE_NOSTORE=8)
|
|
||||||
parameter (MPI_MODE_NOSUCCEED=16)
|
|
||||||
parameter (MPI_LOCK_EXCLUSIVE=1)
|
|
||||||
parameter (MPI_LOCK_SHARED=2)
|
|
||||||
parameter (MPI_MESSAGE_NO_PROC=1)
|
|
||||||
|
|
||||||
!
|
|
||||||
! MPI sentinel values
|
|
||||||
!
|
|
||||||
! Several of these types were chosen with care to match specific
|
|
||||||
! overloaded functions in the F90 bindings. They should also match
|
|
||||||
! the types of their corresponding C variables. Do not arbitrarily
|
|
||||||
! change their types without also updating the F90 bindings and
|
|
||||||
! their corresponding types in ompi/mpi/f77/constants.h and
|
|
||||||
! ompi/mpi/runtime/ompi_init.c!
|
|
||||||
!
|
|
||||||
! MPI_BOTTOM is only used where choice buffers can be used (meaning
|
|
||||||
! that we already have overloaded F90 bindings for all available
|
|
||||||
! types), so any type is fine.
|
|
||||||
integer MPI_BOTTOM
|
|
||||||
! MPI_IN_PLACE has the same rationale as MPI_BOTTOM.
|
|
||||||
integer MPI_IN_PLACE
|
|
||||||
! Making MPI_ARGV_NULL be the same type as the parameter that is
|
|
||||||
! exepected in the F90 binding for MPI_COMM_SPAWN means that we
|
|
||||||
! don't need another binding for MPI_COMM_SPAWN.
|
|
||||||
character MPI_ARGV_NULL(1)
|
|
||||||
! The array_of_argv parameter in the F90 bindings for
|
|
||||||
! MPI_COMM_SPAWN_MULTIPLE takes a variable number of dimensions
|
|
||||||
! (specified by the "count" parameter), so it's not possible to have
|
|
||||||
! a single variable match all possible values. Hence, make it an
|
|
||||||
! entirely different type (one that would never likely be used by a
|
|
||||||
! correct program, e.g., double) and have a separate F90 binding for
|
|
||||||
! matching just this type.
|
|
||||||
double precision MPI_ARGVS_NULL
|
|
||||||
! MPI_ERRCODES_IGNORE has similar rationale to MPI_ARGV_NULL. The
|
|
||||||
! F77 functions are all smart enough to check that the errcodes
|
|
||||||
! parameter is not ERRCODES_IGNORE before assigning values into it
|
|
||||||
! (hence, the fact that this is an array of only 1 element does not
|
|
||||||
! matter -- we'll never overrun it because we never assign values
|
|
||||||
! into it).
|
|
||||||
integer MPI_ERRCODES_IGNORE(1)
|
|
||||||
! MPI_STATUS_IGNORE has similar rationale to MPI_ERRCODES_IGNORE.
|
|
||||||
integer MPI_STATUS_IGNORE(MPI_STATUS_SIZE)
|
|
||||||
! MPI_STATUSES_IGNORE has similar rationale to MPI_ARGVS_NULL.
|
|
||||||
double precision MPI_STATUSES_IGNORE
|
|
||||||
|
|
||||||
common/mpi_fortran_bottom/MPI_BOTTOM
|
|
||||||
common/mpi_fortran_in_place/MPI_IN_PLACE
|
|
||||||
common/mpi_fortran_argv_null/MPI_ARGV_NULL
|
|
||||||
common/mpi_fortran_argvs_null/MPI_ARGVS_NULL
|
|
||||||
common/mpi_fortran_errcodes_ignore/MPI_ERRCODES_IGNORE
|
|
||||||
common/mpi_fortran_status_ignore/MPI_STATUS_IGNORE
|
|
||||||
common/mpi_fortran_statuses_ignore/MPI_STATUSES_IGNORE
|
|
||||||
!
|
|
||||||
! MPI_Init_thread constants
|
|
||||||
!
|
|
||||||
integer MPI_THREAD_SINGLE, MPI_THREAD_FUNNELED
|
|
||||||
integer MPI_THREAD_SERIALIZED, MPI_THREAD_MULTIPLE
|
|
||||||
|
|
||||||
parameter (MPI_THREAD_SINGLE=0)
|
|
||||||
parameter (MPI_THREAD_FUNNELED=1)
|
|
||||||
parameter (MPI_THREAD_SERIALIZED=2)
|
|
||||||
parameter (MPI_THREAD_MULTIPLE=3)
|
|
||||||
!
|
|
||||||
! error classes
|
|
||||||
!
|
|
||||||
integer MPI_SUCCESS
|
|
||||||
integer MPI_ERR_BUFFER
|
|
||||||
integer MPI_ERR_COUNT
|
|
||||||
integer MPI_ERR_TYPE
|
|
||||||
integer MPI_ERR_TAG
|
|
||||||
integer MPI_ERR_COMM
|
|
||||||
integer MPI_ERR_RANK
|
|
||||||
integer MPI_ERR_REQUEST
|
|
||||||
integer MPI_ERR_ROOT
|
|
||||||
integer MPI_ERR_GROUP
|
|
||||||
integer MPI_ERR_OP
|
|
||||||
integer MPI_ERR_TOPOLOGY
|
|
||||||
integer MPI_ERR_DIMS
|
|
||||||
integer MPI_ERR_ARG
|
|
||||||
integer MPI_ERR_UNKNOWN
|
|
||||||
integer MPI_ERR_TRUNCATE
|
|
||||||
integer MPI_ERR_OTHER
|
|
||||||
integer MPI_ERR_INTERN
|
|
||||||
integer MPI_ERR_IN_STATUS
|
|
||||||
integer MPI_ERR_PENDING
|
|
||||||
integer MPI_ERR_ACCESS
|
|
||||||
integer MPI_ERR_AMODE
|
|
||||||
integer MPI_ERR_ASSERT
|
|
||||||
integer MPI_ERR_BAD_FILE
|
|
||||||
integer MPI_ERR_BASE
|
|
||||||
integer MPI_ERR_CONVERSION
|
|
||||||
integer MPI_ERR_DISP
|
|
||||||
integer MPI_ERR_DUP_DATAREP
|
|
||||||
integer MPI_ERR_FILE_EXISTS
|
|
||||||
integer MPI_ERR_FILE_IN_USE
|
|
||||||
integer MPI_ERR_FILE
|
|
||||||
integer MPI_ERR_INFO_KEY
|
|
||||||
integer MPI_ERR_INFO_NOKEY
|
|
||||||
integer MPI_ERR_INFO_VALUE
|
|
||||||
integer MPI_ERR_INFO
|
|
||||||
integer MPI_ERR_IO
|
|
||||||
integer MPI_ERR_KEYVAL
|
|
||||||
integer MPI_ERR_LOCKTYPE
|
|
||||||
integer MPI_ERR_NAME
|
|
||||||
integer MPI_ERR_NO_MEM
|
|
||||||
integer MPI_ERR_NOT_SAME
|
|
||||||
integer MPI_ERR_NO_SPACE
|
|
||||||
integer MPI_ERR_NO_SUCH_FILE
|
|
||||||
integer MPI_ERR_PORT
|
|
||||||
integer MPI_ERR_QUOTA
|
|
||||||
integer MPI_ERR_READ_ONLY
|
|
||||||
integer MPI_ERR_RMA_CONFLICT
|
|
||||||
integer MPI_ERR_RMA_SYNC
|
|
||||||
integer MPI_ERR_SERVICE
|
|
||||||
integer MPI_ERR_SIZE
|
|
||||||
integer MPI_ERR_SPAWN
|
|
||||||
integer MPI_ERR_UNSUPPORTED_DATAREP
|
|
||||||
integer MPI_ERR_UNSUPPORTED_OPERATION
|
|
||||||
integer MPI_ERR_WIN
|
|
||||||
|
|
||||||
integer MPI_ERR_SYSRESOURCE
|
|
||||||
integer MPI_ERR_LASTCODE
|
|
||||||
|
|
||||||
parameter( MPI_SUCCESS = 0)
|
|
||||||
parameter( MPI_ERR_BUFFER = 1)
|
|
||||||
parameter( MPI_ERR_COUNT = 2)
|
|
||||||
parameter( MPI_ERR_TYPE = 3)
|
|
||||||
parameter( MPI_ERR_TAG = 4)
|
|
||||||
parameter( MPI_ERR_COMM = 5)
|
|
||||||
parameter( MPI_ERR_RANK = 6)
|
|
||||||
parameter( MPI_ERR_REQUEST = 7)
|
|
||||||
parameter( MPI_ERR_ROOT = 8)
|
|
||||||
parameter( MPI_ERR_GROUP = 9)
|
|
||||||
parameter( MPI_ERR_OP = 10)
|
|
||||||
parameter( MPI_ERR_TOPOLOGY = 11)
|
|
||||||
parameter( MPI_ERR_DIMS = 12)
|
|
||||||
parameter( MPI_ERR_ARG = 13)
|
|
||||||
parameter( MPI_ERR_UNKNOWN = 14)
|
|
||||||
parameter( MPI_ERR_TRUNCATE = 15)
|
|
||||||
parameter( MPI_ERR_OTHER = 16)
|
|
||||||
parameter( MPI_ERR_INTERN = 17)
|
|
||||||
parameter( MPI_ERR_IN_STATUS = 18)
|
|
||||||
parameter( MPI_ERR_PENDING = 19)
|
|
||||||
parameter( MPI_ERR_ACCESS = 20)
|
|
||||||
parameter( MPI_ERR_AMODE = 21)
|
|
||||||
parameter( MPI_ERR_ASSERT = 22)
|
|
||||||
parameter( MPI_ERR_BAD_FILE = 23)
|
|
||||||
parameter( MPI_ERR_BASE = 24)
|
|
||||||
parameter( MPI_ERR_CONVERSION = 25)
|
|
||||||
parameter( MPI_ERR_DISP = 26)
|
|
||||||
parameter( MPI_ERR_DUP_DATAREP = 27)
|
|
||||||
parameter( MPI_ERR_FILE_EXISTS = 28)
|
|
||||||
parameter( MPI_ERR_FILE_IN_USE = 29)
|
|
||||||
parameter( MPI_ERR_FILE = 30)
|
|
||||||
parameter( MPI_ERR_INFO_KEY = 31)
|
|
||||||
parameter( MPI_ERR_INFO_NOKEY = 32)
|
|
||||||
parameter( MPI_ERR_INFO_VALUE = 33)
|
|
||||||
parameter( MPI_ERR_INFO = 34)
|
|
||||||
parameter( MPI_ERR_IO = 35)
|
|
||||||
parameter( MPI_ERR_KEYVAL = 36)
|
|
||||||
parameter( MPI_ERR_LOCKTYPE = 37)
|
|
||||||
parameter( MPI_ERR_NAME = 38)
|
|
||||||
parameter( MPI_ERR_NO_MEM = 39)
|
|
||||||
parameter( MPI_ERR_NOT_SAME = 40)
|
|
||||||
parameter( MPI_ERR_NO_SPACE = 41)
|
|
||||||
parameter( MPI_ERR_NO_SUCH_FILE = 42)
|
|
||||||
parameter( MPI_ERR_PORT = 43)
|
|
||||||
parameter( MPI_ERR_QUOTA = 44)
|
|
||||||
parameter( MPI_ERR_READ_ONLY = 45)
|
|
||||||
parameter( MPI_ERR_RMA_CONFLICT = 46)
|
|
||||||
parameter( MPI_ERR_RMA_SYNC = 47)
|
|
||||||
parameter( MPI_ERR_SERVICE = 48)
|
|
||||||
parameter( MPI_ERR_SIZE = 49)
|
|
||||||
parameter( MPI_ERR_SPAWN = 50)
|
|
||||||
parameter( MPI_ERR_UNSUPPORTED_DATAREP = 51)
|
|
||||||
parameter( MPI_ERR_UNSUPPORTED_OPERATION= 52)
|
|
||||||
parameter( MPI_ERR_WIN = 53)
|
|
||||||
|
|
||||||
parameter( MPI_ERR_SYSRESOURCE = -2)
|
|
||||||
parameter( MPI_ERR_LASTCODE = 54)
|
|
||||||
|
|
||||||
!
|
|
||||||
! comparison results
|
|
||||||
!
|
|
||||||
integer MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL
|
|
||||||
|
|
||||||
parameter (MPI_IDENT=0)
|
|
||||||
parameter (MPI_CONGRUENT=1)
|
|
||||||
parameter (MPI_SIMILAR=2)
|
|
||||||
parameter (MPI_UNEQUAL=3)
|
|
||||||
!
|
|
||||||
! datatype combiners
|
|
||||||
!
|
|
||||||
integer MPI_COMBINER_NAMED
|
|
||||||
integer MPI_COMBINER_DUP
|
|
||||||
integer MPI_COMBINER_CONTIGUOUS
|
|
||||||
integer MPI_COMBINER_VECTOR
|
|
||||||
integer MPI_COMBINER_HVECTOR_INTEGER
|
|
||||||
integer MPI_COMBINER_HVECTOR
|
|
||||||
integer MPI_COMBINER_INDEXED
|
|
||||||
integer MPI_COMBINER_HINDEXED_INTEGER
|
|
||||||
integer MPI_COMBINER_HINDEXED
|
|
||||||
integer MPI_COMBINER_INDEXED_BLOCK
|
|
||||||
integer MPI_COMBINER_STRUCT_INTEGER
|
|
||||||
integer MPI_COMBINER_STRUCT
|
|
||||||
integer MPI_COMBINER_SUBARRAY
|
|
||||||
integer MPI_COMBINER_DARRAY
|
|
||||||
integer MPI_COMBINER_F90_REAL
|
|
||||||
integer MPI_COMBINER_F90_COMPLEX
|
|
||||||
integer MPI_COMBINER_F90_INTEGER
|
|
||||||
integer MPI_COMBINER_RESIZED
|
|
||||||
integer MPI_COMBINER_HINDEXED_BLOCK
|
|
||||||
|
|
||||||
parameter (MPI_COMBINER_NAMED=0)
|
|
||||||
parameter (MPI_COMBINER_DUP=1)
|
|
||||||
parameter (MPI_COMBINER_CONTIGUOUS=2)
|
|
||||||
parameter (MPI_COMBINER_VECTOR=3)
|
|
||||||
parameter (MPI_COMBINER_HVECTOR_INTEGER=4)
|
|
||||||
parameter (MPI_COMBINER_HVECTOR=5)
|
|
||||||
parameter (MPI_COMBINER_INDEXED=6)
|
|
||||||
parameter (MPI_COMBINER_HINDEXED_INTEGER=7)
|
|
||||||
parameter (MPI_COMBINER_HINDEXED=8)
|
|
||||||
parameter (MPI_COMBINER_INDEXED_BLOCK=9)
|
|
||||||
parameter (MPI_COMBINER_STRUCT_INTEGER=10)
|
|
||||||
parameter (MPI_COMBINER_STRUCT=11)
|
|
||||||
parameter (MPI_COMBINER_SUBARRAY=12)
|
|
||||||
parameter (MPI_COMBINER_DARRAY=13)
|
|
||||||
parameter (MPI_COMBINER_F90_REAL=14)
|
|
||||||
parameter (MPI_COMBINER_F90_COMPLEX=15)
|
|
||||||
parameter (MPI_COMBINER_F90_INTEGER=16)
|
|
||||||
parameter (MPI_COMBINER_RESIZED=17)
|
|
||||||
parameter (MPI_COMBINER_HINDEXED_BLOCK=18)
|
|
||||||
|
|
||||||
!
|
|
||||||
! Communicator split type constants.
|
|
||||||
!
|
|
||||||
integer MPI_COMM_TYPE_SHARED
|
|
||||||
parameter (MPI_COMM_TYPE_SHARED=0)
|
|
||||||
|
|
||||||
!
|
|
||||||
! Generated input below, located at bottom of mpif-common.h file
|
|
||||||
!
|
|
||||||
|
|
@ -1,471 +0,0 @@
|
|||||||
#!/usr/bin/env perl
|
|
||||||
#
|
|
||||||
# Copyright (c) 2011 Cisco Systems, Inc. All rights reserved.
|
|
||||||
# $COPYRIGHT$
|
|
||||||
#
|
|
||||||
# Additional copyrights may follow
|
|
||||||
#
|
|
||||||
# $HEADER$
|
|
||||||
#
|
|
||||||
|
|
||||||
# This file generates common parameter values needed for the three
|
|
||||||
# MPI bindings. It creates the files:
|
|
||||||
#
|
|
||||||
# ompi/include/mpif-common.h
|
|
||||||
# ommp/mpi/fortran/use-mpi-f08/constants.h
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
# Read a file; return its contents in a string
|
|
||||||
|
|
||||||
sub read_file {
|
|
||||||
my ($filename_in) = @_;
|
|
||||||
|
|
||||||
open(FILE_IN, $filename_in) || die "Couldn't open file $filename_in";
|
|
||||||
my $fin;
|
|
||||||
$fin .= $_
|
|
||||||
while (<FILE_IN>);
|
|
||||||
close(FILE_IN);
|
|
||||||
|
|
||||||
return $fin;
|
|
||||||
}
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
# Write an output file only if a) the output file does not already
|
|
||||||
# exist, or b) it exists, but its contents are different than $str.
|
|
||||||
|
|
||||||
sub write_file {
|
|
||||||
my ($filename_out, $str) = @_;
|
|
||||||
|
|
||||||
my $need_write = 0;
|
|
||||||
if (! -f $filename_out) {
|
|
||||||
$need_write = 1;
|
|
||||||
} else {
|
|
||||||
open(FILE_IN, $filename_out) || die "Couldn't open $filename_out";
|
|
||||||
my $tmp;
|
|
||||||
$tmp .= $_
|
|
||||||
while (<FILE_IN>);
|
|
||||||
close(FILE_IN);
|
|
||||||
if ($str ne $tmp) {
|
|
||||||
$need_write = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($need_write) {
|
|
||||||
open(FILE_OUT, ">$filename_out") || die "Couldn't open $filename_out";
|
|
||||||
print FILE_OUT $str;
|
|
||||||
close(FILE_OUT);
|
|
||||||
print "created $filename_out\n";
|
|
||||||
} else {
|
|
||||||
print "$filename_out unchanged; not written\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
print "creating Fortran header files (with common constants)...\n";
|
|
||||||
|
|
||||||
# Find the OMPI topdir. It is likely the pwd.
|
|
||||||
my $topdir;
|
|
||||||
if (-r "ompi/include/mpi.h.in") {
|
|
||||||
$topdir = ".";
|
|
||||||
} elsif (-r "include/mpi.h.in") {
|
|
||||||
$topdir = "..";
|
|
||||||
} elsif (-r "mpi.h.in") {
|
|
||||||
$topdir = "../..";
|
|
||||||
} else {
|
|
||||||
print "Please run this script from the Open MPI topdir or topdir/include/mpi\n";
|
|
||||||
print "Aborting.\n";
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
my $MPI_COMM_WORLD = 0;
|
|
||||||
my $MPI_COMM_SELF = 1;
|
|
||||||
my $MPI_GROUP_EMPTY = 1;
|
|
||||||
my $MPI_ERRORS_ARE_FATAL = 1;
|
|
||||||
my $MPI_ERRORS_RETURN = 2;
|
|
||||||
|
|
||||||
#
|
|
||||||
# lookup table indices
|
|
||||||
#
|
|
||||||
my $MPI_MAX = 1;
|
|
||||||
my $MPI_MIN = 2;
|
|
||||||
my $MPI_SUM = 3;
|
|
||||||
my $MPI_PROD = 4;
|
|
||||||
my $MPI_LAND = 5;
|
|
||||||
my $MPI_BAND = 6;
|
|
||||||
my $MPI_LOR = 7;
|
|
||||||
my $MPI_BOR = 8;
|
|
||||||
my $MPI_LXOR = 9;
|
|
||||||
my $MPI_BXOR = 10;
|
|
||||||
my $MPI_MAXLOC = 11;
|
|
||||||
my $MPI_MINLOC = 12;
|
|
||||||
my $MPI_REPLACE = 13;
|
|
||||||
|
|
||||||
#
|
|
||||||
# NULL "handles" (indices)
|
|
||||||
#
|
|
||||||
my $MPI_COMM_NULL = 2;
|
|
||||||
my $MPI_DATATYPE_NULL = 0;
|
|
||||||
my $MPI_ERRHANDLER_NULL = 0;
|
|
||||||
my $MPI_GROUP_NULL = 0;
|
|
||||||
my $MPI_INFO_NULL = 0;
|
|
||||||
my $MPI_MESSAGE_NULL = 0;
|
|
||||||
my $MPI_OP_NULL = 0;
|
|
||||||
my $MPI_REQUEST_NULL = 0;
|
|
||||||
my $MPI_WIN_NULL = 0;
|
|
||||||
my $MPI_MESSAGE_NULL = 0;
|
|
||||||
|
|
||||||
my $MPI_BYTE = 1;
|
|
||||||
my $MPI_PACKED = 2;
|
|
||||||
my $MPI_UB = 3;
|
|
||||||
my $MPI_LB = 4;
|
|
||||||
my $MPI_CHARACTER = 5;
|
|
||||||
my $MPI_LOGICAL = 6;
|
|
||||||
my $MPI_INTEGER = 7;
|
|
||||||
my $MPI_INTEGER1 = 8;
|
|
||||||
my $MPI_INTEGER2 = 9;
|
|
||||||
my $MPI_INTEGER4 = 10;
|
|
||||||
my $MPI_INTEGER8 = 11;
|
|
||||||
my $MPI_INTEGER16 = 12;
|
|
||||||
my $MPI_REAL = 13;
|
|
||||||
my $MPI_REAL4 = 14;
|
|
||||||
my $MPI_REAL8 = 15;
|
|
||||||
my $MPI_REAL16 = 16;
|
|
||||||
my $MPI_DOUBLE_PRECISION = 17;
|
|
||||||
my $MPI_COMPLEX = 18;
|
|
||||||
my $MPI_COMPLEX8 = 19;
|
|
||||||
my $MPI_COMPLEX16 = 20;
|
|
||||||
my $MPI_COMPLEX32 = 21;
|
|
||||||
my $MPI_DOUBLE_COMPLEX = 22;
|
|
||||||
my $MPI_2REAL = 23;
|
|
||||||
my $MPI_2DOUBLE_PRECISION = 24;
|
|
||||||
my $MPI_2INTEGER = 25;
|
|
||||||
my $MPI_2COMPLEX = 26;
|
|
||||||
my $MPI_2DOUBLE_COMPLEX = 27;
|
|
||||||
my $MPI_REAL2 = 28;
|
|
||||||
my $MPI_LOGICAL1 = 29;
|
|
||||||
my $MPI_LOGICAL2 = 30;
|
|
||||||
my $MPI_LOGICAL4 = 31;
|
|
||||||
my $MPI_LOGICAL8 = 32;
|
|
||||||
my $MPI_WCHAR = 33;
|
|
||||||
my $MPI_CHAR = 34;
|
|
||||||
my $MPI_UNSIGNED_CHAR = 35;
|
|
||||||
my $MPI_SIGNED_CHAR = 36;
|
|
||||||
my $MPI_SHORT = 37;
|
|
||||||
my $MPI_UNSIGNED_SHORT = 38;
|
|
||||||
my $MPI_INT = 39;
|
|
||||||
my $MPI_UNSIGNED = 40;
|
|
||||||
my $MPI_LONG = 41;
|
|
||||||
my $MPI_UNSIGNED_LONG = 42;
|
|
||||||
my $MPI_LONG_LONG_INT = 43;
|
|
||||||
my $MPI_UNSIGNED_LONG_LONG = 44;
|
|
||||||
my $MPI_FLOAT = 45;
|
|
||||||
my $MPI_DOUBLE = 46;
|
|
||||||
my $MPI_LONG_DOUBLE = 47;
|
|
||||||
my $MPI_FLOAT_INT = 48;
|
|
||||||
my $MPI_DOUBLE_INT = 49;
|
|
||||||
my $MPI_LONGDBL_INT = 50;
|
|
||||||
my $MPI_LONG_INT = 51;
|
|
||||||
my $MPI_2INT = 52;
|
|
||||||
my $MPI_SHORT_INT = 53;
|
|
||||||
my $MPI_CXX_BOOL = 54;
|
|
||||||
my $MPI_CXX_CPLEX = 55;
|
|
||||||
my $MPI_CXX_DBLCPLEX = 56;
|
|
||||||
my $MPI_CXX_LDBLCPLEX = 57;
|
|
||||||
my $MPI_INT8_T = 58;
|
|
||||||
my $MPI_UINT8_T = 59;
|
|
||||||
my $MPI_INT16_T = 60;
|
|
||||||
my $MPI_UINT16_T = 61;
|
|
||||||
my $MPI_INT32_T = 62;
|
|
||||||
my $MPI_UINT32_T = 63;
|
|
||||||
my $MPI_INT64_T = 64;
|
|
||||||
my $MPI_UINT64_T = 65;
|
|
||||||
my $MPI_AINT = 66;
|
|
||||||
my $MPI_OFFSET = 67;
|
|
||||||
|
|
||||||
#
|
|
||||||
# create ompi/include/mpif-common.h
|
|
||||||
#
|
|
||||||
|
|
||||||
my $filename_in = "$topdir/ompi/include/mpif-common.h.fin";
|
|
||||||
my $filename_out = $filename_in;
|
|
||||||
$filename_out =~ s/\.fin$//;
|
|
||||||
|
|
||||||
my $input = read_file($filename_in);
|
|
||||||
|
|
||||||
# Add warning to the top
|
|
||||||
$input = "! -*- fortran -*-
|
|
||||||
! WARNING! THIS IS A GENERATED FILE!!
|
|
||||||
! ANY EDITS YOU PUT HERE WILL BE LOST!
|
|
||||||
! ==> Instead, edit topdir/ompi/include/mpif-common.pl.
|
|
||||||
|
|
||||||
$input";
|
|
||||||
|
|
||||||
# Add more to the end
|
|
||||||
$input .= "!
|
|
||||||
! NULL 'handles' (indices)
|
|
||||||
!
|
|
||||||
|
|
||||||
integer MPI_GROUP_NULL, MPI_COMM_NULL, MPI_DATATYPE_NULL
|
|
||||||
integer MPI_REQUEST_NULL, MPI_OP_NULL, MPI_ERRHANDLER_NULL
|
|
||||||
integer MPI_INFO_NULL, MPI_WIN_NULL, MPI_MESSAGE_NULL
|
|
||||||
|
|
||||||
parameter (MPI_GROUP_NULL=$MPI_GROUP_NULL)
|
|
||||||
parameter (MPI_COMM_NULL=$MPI_COMM_NULL)
|
|
||||||
parameter (MPI_DATATYPE_NULL=$MPI_DATATYPE_NULL)
|
|
||||||
parameter (MPI_REQUEST_NULL=$MPI_REQUEST_NULL)
|
|
||||||
parameter (MPI_OP_NULL=$MPI_OP_NULL)
|
|
||||||
parameter (MPI_ERRHANDLER_NULL=$MPI_ERRHANDLER_NULL)
|
|
||||||
parameter (MPI_INFO_NULL=$MPI_INFO_NULL)
|
|
||||||
parameter (MPI_WIN_NULL=$MPI_WIN_NULL)
|
|
||||||
parameter (MPI_MESSAGE_NULL=$MPI_MESSAGE_NULL)
|
|
||||||
|
|
||||||
integer MPI_COMM_WORLD, MPI_COMM_SELF
|
|
||||||
integer MPI_GROUP_EMPTY
|
|
||||||
integer MPI_ERRORS_ARE_FATAL, MPI_ERRORS_RETURN
|
|
||||||
|
|
||||||
integer OMPI_MPI_COMM_WORLD
|
|
||||||
integer OMPI_MPI_COMM_SELF
|
|
||||||
|
|
||||||
parameter (MPI_COMM_WORLD=$MPI_COMM_WORLD)
|
|
||||||
parameter (MPI_COMM_SELF=$MPI_COMM_SELF)
|
|
||||||
parameter (MPI_GROUP_EMPTY=$MPI_GROUP_EMPTY)
|
|
||||||
parameter (MPI_ERRORS_ARE_FATAL=$MPI_ERRORS_ARE_FATAL)
|
|
||||||
parameter (MPI_ERRORS_RETURN=$MPI_ERRORS_RETURN)
|
|
||||||
|
|
||||||
!
|
|
||||||
! lookup table indices
|
|
||||||
!
|
|
||||||
|
|
||||||
integer MPI_MAX, MPI_MIN, MPI_SUM, MPI_PROD, MPI_LAND
|
|
||||||
integer MPI_BAND, MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR
|
|
||||||
integer MPI_MAXLOC, MPI_MINLOC, MPI_REPLACE
|
|
||||||
|
|
||||||
parameter (MPI_MAX=$MPI_MAX)
|
|
||||||
parameter (MPI_MIN=$MPI_MIN)
|
|
||||||
parameter (MPI_SUM=$MPI_SUM)
|
|
||||||
parameter (MPI_PROD=$MPI_PROD)
|
|
||||||
parameter (MPI_LAND=$MPI_LAND)
|
|
||||||
parameter (MPI_BAND=$MPI_BAND)
|
|
||||||
parameter (MPI_LOR=$MPI_LOR)
|
|
||||||
parameter (MPI_BOR=$MPI_BOR)
|
|
||||||
parameter (MPI_LXOR=$MPI_LXOR)
|
|
||||||
parameter (MPI_BXOR=$MPI_BXOR)
|
|
||||||
parameter (MPI_MAXLOC=$MPI_MAXLOC)
|
|
||||||
parameter (MPI_MINLOC=$MPI_MINLOC)
|
|
||||||
parameter (MPI_REPLACE=$MPI_REPLACE)
|
|
||||||
|
|
||||||
integer MPI_BYTE, MPI_PACKED, MPI_UB, MPI_LB
|
|
||||||
integer MPI_CHARACTER, MPI_LOGICAL
|
|
||||||
integer MPI_INTEGER, MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4
|
|
||||||
integer MPI_INTEGER8, MPI_INTEGER16
|
|
||||||
integer MPI_REAL, MPI_REAL2, MPI_REAL4, MPI_REAL8, MPI_REAL16
|
|
||||||
integer MPI_DOUBLE_PRECISION
|
|
||||||
integer MPI_COMPLEX, MPI_COMPLEX8, MPI_COMPLEX16, MPI_COMPLEX32
|
|
||||||
integer MPI_DOUBLE_COMPLEX
|
|
||||||
integer MPI_2REAL, MPI_2DOUBLE_PRECISION, MPI_2INTEGER
|
|
||||||
integer MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX
|
|
||||||
|
|
||||||
! Note that MPI_LOGICALx are not defined by the MPI spec, but there are
|
|
||||||
! other MPI implementations that have them, so it's good for us to have
|
|
||||||
! as well.
|
|
||||||
|
|
||||||
integer MPI_LOGICAL1, MPI_LOGICAL2, MPI_LOGICAL4, MPI_LOGICAL8
|
|
||||||
|
|
||||||
! All other MPI types including the C and C++, as well as the
|
|
||||||
! ones defined in the MPI 2.2
|
|
||||||
|
|
||||||
integer MPI_WCHAR, MPI_CHAR
|
|
||||||
integer MPI_SIGNED_CHAR, MPI_UNSIGNED_CHAR
|
|
||||||
integer MPI_SHORT, MPI_UNSIGNED_SHORT
|
|
||||||
integer MPI_INT, MPI_UNSIGNED, MPI_LONG
|
|
||||||
integer MPI_UNSIGNED_LONG, MPI_LONG_LONG_INT
|
|
||||||
integer MPI_UNSIGNED_LONG_LONG
|
|
||||||
integer MPI_FLOAT, MPI_DOUBLE, MPI_LONG_DOUBLE
|
|
||||||
integer MPI_FLOAT_INT, MPI_DOUBLE_INT
|
|
||||||
integer MPI_LONGDBL_INT, MPI_LONG_INT
|
|
||||||
integer MPI_2INT, MPI_SHORT_INT
|
|
||||||
integer MPI_CXX_BOOL, MPI_CXX_CPLEX
|
|
||||||
integer MPI_CXX_DBLCPLEX, MPI_CXX_LDBLCPLEX
|
|
||||||
integer MPI_INT8_T, MPI_UINT8_T
|
|
||||||
integer MPI_INT16_T, MPI_UINT16_T
|
|
||||||
integer MPI_INT32_T, MPI_UINT32_T
|
|
||||||
integer MPI_INT64_T, MPI_UINT64_T
|
|
||||||
integer MPI_AINT, MPI_OFFSET
|
|
||||||
|
|
||||||
!
|
|
||||||
! Do NOT change the order of these parameters
|
|
||||||
!
|
|
||||||
|
|
||||||
parameter (MPI_BYTE = $MPI_BYTE)
|
|
||||||
parameter (MPI_PACKED = $MPI_PACKED)
|
|
||||||
parameter (MPI_UB = $MPI_UB)
|
|
||||||
parameter (MPI_LB = $MPI_LB)
|
|
||||||
parameter (MPI_CHARACTER = $MPI_CHARACTER)
|
|
||||||
parameter (MPI_LOGICAL = $MPI_LOGICAL)
|
|
||||||
parameter (MPI_INTEGER = $MPI_INTEGER)
|
|
||||||
parameter (MPI_INTEGER1 = $MPI_INTEGER1)
|
|
||||||
parameter (MPI_INTEGER2 = $MPI_INTEGER2)
|
|
||||||
parameter (MPI_INTEGER4 = $MPI_INTEGER4)
|
|
||||||
parameter (MPI_INTEGER8 = $MPI_INTEGER8)
|
|
||||||
parameter (MPI_INTEGER16 = $MPI_INTEGER16)
|
|
||||||
parameter (MPI_REAL = $MPI_REAL)
|
|
||||||
parameter (MPI_REAL4 = $MPI_REAL4)
|
|
||||||
parameter (MPI_REAL8 = $MPI_REAL8)
|
|
||||||
parameter (MPI_REAL16 = $MPI_REAL16)
|
|
||||||
parameter (MPI_DOUBLE_PRECISION = $MPI_DOUBLE_PRECISION)
|
|
||||||
parameter (MPI_COMPLEX = $MPI_COMPLEX)
|
|
||||||
parameter (MPI_COMPLEX8 = $MPI_COMPLEX8)
|
|
||||||
parameter (MPI_COMPLEX16 = $MPI_COMPLEX16)
|
|
||||||
parameter (MPI_COMPLEX32 = $MPI_COMPLEX32)
|
|
||||||
parameter (MPI_DOUBLE_COMPLEX = $MPI_DOUBLE_COMPLEX)
|
|
||||||
parameter (MPI_2REAL = $MPI_2REAL)
|
|
||||||
parameter (MPI_2DOUBLE_PRECISION = $MPI_2DOUBLE_PRECISION)
|
|
||||||
parameter (MPI_2INTEGER = $MPI_2INTEGER)
|
|
||||||
parameter (MPI_2COMPLEX = $MPI_2COMPLEX)
|
|
||||||
parameter (MPI_2DOUBLE_COMPLEX = $MPI_2DOUBLE_COMPLEX)
|
|
||||||
parameter (MPI_REAL2 = $MPI_REAL2)
|
|
||||||
parameter (MPI_LOGICAL1 = $MPI_LOGICAL1)
|
|
||||||
parameter (MPI_LOGICAL2 = $MPI_LOGICAL2)
|
|
||||||
parameter (MPI_LOGICAL4 = $MPI_LOGICAL4)
|
|
||||||
parameter (MPI_LOGICAL8 = $MPI_LOGICAL8)
|
|
||||||
parameter (MPI_WCHAR = $MPI_WCHAR)
|
|
||||||
parameter (MPI_CHAR = $MPI_CHAR)
|
|
||||||
parameter (MPI_UNSIGNED_CHAR = $MPI_UNSIGNED_CHAR)
|
|
||||||
parameter (MPI_SIGNED_CHAR = $MPI_SIGNED_CHAR)
|
|
||||||
parameter (MPI_SHORT = $MPI_SHORT)
|
|
||||||
parameter (MPI_UNSIGNED_SHORT = $MPI_UNSIGNED_SHORT)
|
|
||||||
parameter (MPI_INT = $MPI_INT)
|
|
||||||
parameter (MPI_UNSIGNED = $MPI_UNSIGNED)
|
|
||||||
parameter (MPI_LONG = $MPI_LONG)
|
|
||||||
parameter (MPI_UNSIGNED_LONG = $MPI_UNSIGNED_LONG)
|
|
||||||
parameter (MPI_LONG_LONG_INT = $MPI_LONG_LONG_INT)
|
|
||||||
parameter (MPI_UNSIGNED_LONG_LONG = $MPI_UNSIGNED_LONG_LONG)
|
|
||||||
parameter (MPI_FLOAT = $MPI_FLOAT)
|
|
||||||
parameter (MPI_DOUBLE = $MPI_DOUBLE)
|
|
||||||
parameter (MPI_LONG_DOUBLE = $MPI_LONG_DOUBLE)
|
|
||||||
parameter (MPI_FLOAT_INT = $MPI_FLOAT_INT)
|
|
||||||
parameter (MPI_DOUBLE_INT = $MPI_DOUBLE_INT)
|
|
||||||
parameter (MPI_LONGDBL_INT = $MPI_LONGDBL_INT)
|
|
||||||
parameter (MPI_LONG_INT = $MPI_LONG_INT)
|
|
||||||
parameter (MPI_2INT = $MPI_2INT)
|
|
||||||
parameter (MPI_SHORT_INT = $MPI_SHORT_INT)
|
|
||||||
parameter (MPI_CXX_BOOL = $MPI_CXX_BOOL)
|
|
||||||
parameter (MPI_CXX_CPLEX = $MPI_CXX_CPLEX)
|
|
||||||
parameter (MPI_CXX_DBLCPLEX = $MPI_CXX_DBLCPLEX)
|
|
||||||
parameter (MPI_CXX_LDBLCPLEX = $MPI_CXX_LDBLCPLEX)
|
|
||||||
parameter (MPI_INT8_T = $MPI_INT8_T)
|
|
||||||
parameter (MPI_UINT8_T = $MPI_UINT8_T)
|
|
||||||
parameter (MPI_INT16_T = $MPI_INT16_T)
|
|
||||||
parameter (MPI_UINT16_T = $MPI_UINT16_T)
|
|
||||||
parameter (MPI_INT32_T = $MPI_INT32_T)
|
|
||||||
parameter (MPI_UINT32_T = $MPI_UINT32_T)
|
|
||||||
parameter (MPI_INT64_T = $MPI_INT64_T)
|
|
||||||
parameter (MPI_UINT64_T = $MPI_UINT64_T)
|
|
||||||
parameter (MPI_AINT = $MPI_AINT)
|
|
||||||
parameter (MPI_OFFSET = $MPI_OFFSET)\n";
|
|
||||||
|
|
||||||
# Write the file
|
|
||||||
write_file($filename_out, $input);
|
|
||||||
|
|
||||||
#
|
|
||||||
# create ompi/mpi/fortran/use-mpi-f08/constants.h
|
|
||||||
#
|
|
||||||
|
|
||||||
$filename_in = "$topdir/ompi/mpi/fortran/use-mpi-f08/constants.h.fin";
|
|
||||||
$filename_out = $filename_in;
|
|
||||||
$filename_out =~ s/\.fin$//;
|
|
||||||
|
|
||||||
$input = read_file($filename_in);
|
|
||||||
|
|
||||||
# Add warning to the top
|
|
||||||
$input = "/* WARNING! THIS IS A GENERATED FILE!!
|
|
||||||
* ANY EDITS YOU PUT HERE WILL BE LOST!
|
|
||||||
* Instead, edit topdir/ompi/include/mpif-common.pl
|
|
||||||
*/
|
|
||||||
|
|
||||||
$input";
|
|
||||||
|
|
||||||
# Add more to the end
|
|
||||||
$input .= "
|
|
||||||
#define OMPI_MPI_COMM_WORLD $MPI_COMM_WORLD
|
|
||||||
#define OMPI_MPI_COMM_SELF $MPI_COMM_SELF
|
|
||||||
#define OMPI_MPI_GROUP_EMPTY $MPI_GROUP_EMPTY
|
|
||||||
#define OMPI_MPI_ERRORS_ARE_FATAL $MPI_ERRORS_ARE_FATAL
|
|
||||||
#define OMPI_MPI_ERRORS_RETURN $MPI_ERRORS_RETURN
|
|
||||||
|
|
||||||
/*
|
|
||||||
* lookup table indices
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define OMPI_MPI_MAX $MPI_MAX
|
|
||||||
#define OMPI_MPI_MIN $MPI_MIN
|
|
||||||
#define OMPI_MPI_SUM $MPI_SUM
|
|
||||||
#define OMPI_MPI_PROD $MPI_PROD
|
|
||||||
#define OMPI_MPI_LAND $MPI_LAND
|
|
||||||
#define OMPI_MPI_BAND $MPI_BAND
|
|
||||||
#define OMPI_MPI_LOR $MPI_LOR
|
|
||||||
#define OMPI_MPI_BOR $MPI_BOR
|
|
||||||
#define OMPI_MPI_LXOR $MPI_LXOR
|
|
||||||
#define OMPI_MPI_BXOR $MPI_BXOR
|
|
||||||
#define OMPI_MPI_MAXLOC $MPI_MAXLOC
|
|
||||||
#define OMPI_MPI_MINLOC $MPI_MINLOC
|
|
||||||
#define OMPI_MPI_REPLACE $MPI_REPLACE
|
|
||||||
|
|
||||||
/*
|
|
||||||
* NULL 'handles' (indices)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define OMPI_MPI_GROUP_NULL $MPI_GROUP_NULL
|
|
||||||
#define OMPI_MPI_COMM_NULL $MPI_COMM_NULL
|
|
||||||
#define OMPI_MPI_DATATYPE_NULL $MPI_DATATYPE_NULL
|
|
||||||
#define OMPI_MPI_REQUEST_NULL $MPI_REQUEST_NULL
|
|
||||||
#define OMPI_MPI_OP_NULL $MPI_OP_NULL
|
|
||||||
#define OMPI_MPI_ERRHANDLER_NULL $MPI_ERRHANDLER_NULL
|
|
||||||
#define OMPI_MPI_INFO_NULL $MPI_INFO_NULL
|
|
||||||
#define OMPI_MPI_WIN_NULL $MPI_WIN_NULL
|
|
||||||
#define OMPI_MPI_MESSAGE_NULL $MPI_MESSAGE_NULL
|
|
||||||
|
|
||||||
#define OMPI_MPI_BYTE $MPI_BYTE
|
|
||||||
#define OMPI_MPI_PACKED $MPI_PACKED
|
|
||||||
#define OMPI_MPI_UB $MPI_UB
|
|
||||||
#define OMPI_MPI_LB $MPI_LB
|
|
||||||
#define OMPI_MPI_CHARACTER $MPI_CHARACTER
|
|
||||||
#define OMPI_MPI_LOGICAL $MPI_LOGICAL
|
|
||||||
#define OMPI_MPI_INTEGER $MPI_INTEGER
|
|
||||||
#define OMPI_MPI_INTEGER1 $MPI_INTEGER1
|
|
||||||
#define OMPI_MPI_INTEGER2 $MPI_INTEGER2
|
|
||||||
#define OMPI_MPI_INTEGER4 $MPI_INTEGER4
|
|
||||||
#define OMPI_MPI_INTEGER8 $MPI_INTEGER8
|
|
||||||
#define OMPI_MPI_INTEGER16 $MPI_INTEGER16
|
|
||||||
#define OMPI_MPI_REAL $MPI_REAL
|
|
||||||
#define OMPI_MPI_REAL4 $MPI_REAL4
|
|
||||||
#define OMPI_MPI_REAL8 $MPI_REAL8
|
|
||||||
#define OMPI_MPI_REAL16 $MPI_REAL16
|
|
||||||
#define OMPI_MPI_DOUBLE_PRECISION $MPI_DOUBLE_PRECISION
|
|
||||||
#define OMPI_MPI_COMPLEX $MPI_COMPLEX
|
|
||||||
#define OMPI_MPI_COMPLEX8 $MPI_COMPLEX8
|
|
||||||
#define OMPI_MPI_COMPLEX16 $MPI_COMPLEX16
|
|
||||||
#define OMPI_MPI_COMPLEX32 $MPI_COMPLEX32
|
|
||||||
#define OMPI_MPI_DOUBLE_COMPLEX $MPI_DOUBLE_COMPLEX
|
|
||||||
#define OMPI_MPI_2REAL $MPI_2REAL
|
|
||||||
#define OMPI_MPI_2DOUBLE_PRECISION $MPI_2DOUBLE_PRECISION
|
|
||||||
#define OMPI_MPI_2INTEGER $MPI_2INTEGER
|
|
||||||
#define OMPI_MPI_2COMPLEX $MPI_2COMPLEX
|
|
||||||
#define OMPI_MPI_2DOUBLE_COMPLEX $MPI_2DOUBLE_COMPLEX
|
|
||||||
#define OMPI_MPI_REAL2 $MPI_REAL2
|
|
||||||
#define OMPI_MPI_LOGICAL1 $MPI_LOGICAL1
|
|
||||||
#define OMPI_MPI_LOGICAL2 $MPI_LOGICAL2
|
|
||||||
#define OMPI_MPI_LOGICAL4 $MPI_LOGICAL4
|
|
||||||
#define OMPI_MPI_LOGICAL8 $MPI_LOGICAL8\n
|
|
||||||
|
|
||||||
#endif /* USE_MPI_F08_CONSTANTS_H */\n";
|
|
||||||
|
|
||||||
write_file($filename_out, $input);
|
|
||||||
exit(0);
|
|
@ -17,66 +17,22 @@
|
|||||||
!
|
!
|
||||||
! $HEADER$
|
! $HEADER$
|
||||||
!
|
!
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
!
|
|
||||||
! Do ***not*** copy this file to the directory where your Fortran
|
|
||||||
! fortran application is compiled unless it is absolutely necessary! Most
|
|
||||||
! modern Fortran compilers now support the -I command line flag, which
|
|
||||||
! tells the compiler where to find .h files (specifically, this one). For
|
|
||||||
! example:
|
|
||||||
!
|
|
||||||
! shell$ mpif77 foo.f -o foo -I$OMPI_HOME/include
|
|
||||||
!
|
|
||||||
! will probably do the trick (assuming that you have set OMPI_HOME
|
|
||||||
! properly).
|
|
||||||
!
|
|
||||||
! That being said, OMPI's "mpif77" wrapper compiler should
|
|
||||||
! automatically include the -I option for you. The following command
|
|
||||||
! should be equivalent to the command listed above:
|
|
||||||
!
|
|
||||||
! shell$ mpif77 foo.f -o foo
|
|
||||||
!
|
|
||||||
! You should not copy this file to your local directory because it is
|
|
||||||
! possible that this file will be changed between versions of Open MPI.
|
|
||||||
! Indeed, this mpif.h is incompatible with the mpif.f of other
|
|
||||||
! implementations of MPI. Using this mpif.h with other implementations
|
|
||||||
! of MPI, or with other versions of Open MPI will result in undefined
|
|
||||||
! behavior (to include incorrect results, segmentation faults,
|
|
||||||
! unexplainable "hanging" in your application, etc.). Always use the
|
|
||||||
! -I command line option instead (or let mpif77 do it for you).
|
|
||||||
!
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
! WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
!
|
|
||||||
! This file is included as a back-end file to both mpif.h (i.e., the
|
|
||||||
! standardized MPI Fortran header file) and a bunch of the MPI
|
|
||||||
! Fortran 90 subroutine implementations found in ompi/mpi/f90.
|
|
||||||
!
|
!
|
||||||
! This file contains the output from configure that is relevant for
|
! This file contains the output from configure that is relevant for
|
||||||
! Fortran applications (both 77 and 90) and a few values that are
|
! Fortran applications and a few values that are necessary to
|
||||||
! necessary to compile the F90 module (e.g., MPI_STATUS_SIZE).
|
! compile the Fortran modules (e.g., MPI_STATUS_SIZE).
|
||||||
!
|
!
|
||||||
|
|
||||||
! Include the MPI I/O stuff, if needed
|
|
||||||
@OMPI_MPIF_MPI_IO_INCLUDE@
|
|
||||||
|
|
||||||
!
|
!
|
||||||
! OMPI version
|
! OMPI version
|
||||||
! This file is generated from configure; do not edit it manually.
|
! This file is generated from configure; do not edit it manually.
|
||||||
!
|
!
|
||||||
integer OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION
|
integer OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION
|
||||||
integer OMPI_RELEASE_VERSION
|
integer OMPI_RELEASE_VERSION
|
||||||
character*32 OMPI_GREEK_VERSION
|
|
||||||
character*32 OMPI_SVN_VERSION
|
|
||||||
parameter (OMPI_MAJOR_VERSION=@OMPI_MAJOR_VERSION@)
|
parameter (OMPI_MAJOR_VERSION=@OMPI_MAJOR_VERSION@)
|
||||||
parameter (OMPI_MINOR_VERSION=@OMPI_MINOR_VERSION@)
|
parameter (OMPI_MINOR_VERSION=@OMPI_MINOR_VERSION@)
|
||||||
parameter (OMPI_RELEASE_VERSION=@OMPI_RELEASE_VERSION@)
|
parameter (OMPI_RELEASE_VERSION=@OMPI_RELEASE_VERSION@)
|
||||||
parameter (OMPI_GREEK_VERSION="@OMPI_GREEK_VERSION@")
|
|
||||||
parameter (OMPI_SVN_VERSION="@OMPI_SVN_VERSION@")
|
|
||||||
!
|
!
|
||||||
! Kind parameters
|
! Kind parameters
|
||||||
!
|
!
|
||||||
|
44
ompi/include/mpif-externals.h
Обычный файл
44
ompi/include/mpif-externals.h
Обычный файл
@ -0,0 +1,44 @@
|
|||||||
|
! -*- fortran -*-
|
||||||
|
!
|
||||||
|
! Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
|
||||||
|
! University Research and Technology
|
||||||
|
! Corporation. All rights reserved.
|
||||||
|
! Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||||
|
! of Tennessee Research Foundation. All rights
|
||||||
|
! reserved.
|
||||||
|
! Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||||
|
! University of Stuttgart. All rights reserved.
|
||||||
|
! Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
|
! All rights reserved.
|
||||||
|
! Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved.
|
||||||
|
! $COPYRIGHT$
|
||||||
|
!
|
||||||
|
! Additional copyrights may follow
|
||||||
|
!
|
||||||
|
! $HEADER$
|
||||||
|
!
|
||||||
|
|
||||||
|
!
|
||||||
|
! These "external" statements are specific to the MPI mpif.h
|
||||||
|
! interface (and are toxic to the MPI module interfaces),.
|
||||||
|
!
|
||||||
|
external MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN
|
||||||
|
external MPI_COMM_NULL_COPY_FN, MPI_COMM_NULL_DELETE_FN
|
||||||
|
external MPI_TYPE_NULL_COPY_FN, MPI_TYPE_NULL_DELETE_FN
|
||||||
|
external MPI_DUP_FN, MPI_COMM_DUP_FN, MPI_TYPE_DUP_FN
|
||||||
|
external MPI_WIN_NULL_COPY_FN
|
||||||
|
external MPI_WIN_NULL_DELETE_FN
|
||||||
|
external MPI_WIN_DUP_FN
|
||||||
|
! Note that MPI_CONVERSION_FN_NULL is a "constant" (it is only ever
|
||||||
|
! checked for comparison; it is never invoked), but it is passed as
|
||||||
|
! a function pointer (to MPI_REGISTER_DATAREP) and therefore must be
|
||||||
|
! the same size/type. It is therefore external'ed here, and not
|
||||||
|
! defined with an integer value in mpif-common.h.
|
||||||
|
external MPI_CONVERSION_FN_NULL
|
||||||
|
|
||||||
|
!
|
||||||
|
! double precision functions
|
||||||
|
!
|
||||||
|
external MPI_WTIME, MPI_WTICK , PMPI_WTICK, PMPI_WTIME
|
||||||
|
double precision MPI_WTIME, MPI_WTICK , PMPI_WTICK, PMPI_WTIME
|
||||||
|
|
63
ompi/include/mpif-sentinels.h
Обычный файл
63
ompi/include/mpif-sentinels.h
Обычный файл
@ -0,0 +1,63 @@
|
|||||||
|
! -*- fortran -*-
|
||||||
|
!
|
||||||
|
! Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
|
||||||
|
! University Research and Technology
|
||||||
|
! Corporation. All rights reserved.
|
||||||
|
! Copyright (c) 2004-2010 The University of Tennessee and The University
|
||||||
|
! of Tennessee Research Foundation. All rights
|
||||||
|
! reserved.
|
||||||
|
! Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
|
||||||
|
! University of Stuttgart. All rights reserved.
|
||||||
|
! Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
|
! All rights reserved.
|
||||||
|
! Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved.
|
||||||
|
! Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
||||||
|
! $COPYRIGHT$
|
||||||
|
!
|
||||||
|
! Additional copyrights may follow
|
||||||
|
!
|
||||||
|
! $HEADER$
|
||||||
|
!
|
||||||
|
|
||||||
|
!
|
||||||
|
! All of these types were chosen with care to match the types of
|
||||||
|
! their corresponding C variables. Do not arbitrarily change
|
||||||
|
! their types without also updating:
|
||||||
|
!
|
||||||
|
! - the "mpi" module bindings
|
||||||
|
! - the "mpi_f08" module bindings
|
||||||
|
! - ompi/mpi/fortran/base/constants.h
|
||||||
|
! - ompi/mpi/runtime/ompi_init.c
|
||||||
|
!
|
||||||
|
|
||||||
|
! MPI_BOTTOM is only used where choice buffers can be used (meaning
|
||||||
|
! that we already have overloaded F90 bindings for all available
|
||||||
|
! types), so any type is fine.
|
||||||
|
integer MPI_BOTTOM
|
||||||
|
! MPI_IN_PLACE has the same rationale as MPI_BOTTOM.
|
||||||
|
integer MPI_IN_PLACE
|
||||||
|
! Making MPI_ARGV_NULL be the same type as the parameter that is
|
||||||
|
! exepected in the F90 binding for MPI_COMM_SPAWN means that we
|
||||||
|
! don't need another interface for MPI_COMM_SPAWN.
|
||||||
|
character MPI_ARGV_NULL(1)
|
||||||
|
! Ditto for MPI_ARGVS_NULL / MPI_COMM_SPAWN_MULTIPLE.
|
||||||
|
character MPI_ARGVS_NULL(1)
|
||||||
|
! MPI_ERRCODES_IGNORE has similar rationale to MPI_ARGV_NULL. The
|
||||||
|
! F77 functions are all smart enough to check that the errcodes
|
||||||
|
! parameter is not ERRCODES_IGNORE before assigning values into it
|
||||||
|
! (hence, the fact that this is an array of only 1 element does not
|
||||||
|
! matter -- we'll never overrun it because we never assign values
|
||||||
|
! into it).
|
||||||
|
integer MPI_ERRCODES_IGNORE(1)
|
||||||
|
! MPI_STATUS_IGNORE has similar rationale to MPI_ERRCODES_IGNORE.
|
||||||
|
integer MPI_STATUS_IGNORE(MPI_STATUS_SIZE)
|
||||||
|
! Ditto for MPI_STATUSES_IGNORE
|
||||||
|
integer MPI_STATUSES_IGNORE(MPI_STATUS_SIZE, 1)
|
||||||
|
|
||||||
|
common/mpi_fortran_bottom/MPI_BOTTOM
|
||||||
|
common/mpi_fortran_in_place/MPI_IN_PLACE
|
||||||
|
common/mpi_fortran_argv_null/MPI_ARGV_NULL
|
||||||
|
common/mpi_fortran_argvs_null/MPI_ARGVS_NULL
|
||||||
|
common/mpi_fortran_errcodes_ignore/MPI_ERRCODES_IGNORE
|
||||||
|
common/mpi_fortran_status_ignore/MPI_STATUS_IGNORE
|
||||||
|
common/mpi_fortran_statuses_ignore/MPI_STATUSES_IGNORE
|
460
ompi/include/mpif-values.pl
Исполняемый файл
460
ompi/include/mpif-values.pl
Исполняемый файл
@ -0,0 +1,460 @@
|
|||||||
|
#!/usr/bin/env perl
|
||||||
|
#
|
||||||
|
* Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved.
|
||||||
|
# $COPYRIGHT$
|
||||||
|
#
|
||||||
|
# Additional copyrights may follow
|
||||||
|
#
|
||||||
|
# $HEADER$
|
||||||
|
#
|
||||||
|
|
||||||
|
# This script creates header files to be compiled with the various
|
||||||
|
# Fortran bindings. In some cases, we need Fortran PARAMETER values;
|
||||||
|
# in other cases, we need #define preprocessor macros.
|
||||||
|
#
|
||||||
|
# This script generates both cases, and ensures that the values are
|
||||||
|
# the same between both (e.g., that MPI_COMM_WORLD is both a fortran
|
||||||
|
# INTEGER PARAMETER of value 0 and is #define'd to be 0).
|
||||||
|
#
|
||||||
|
# Additionally, since Open MPI provides the configure ability to
|
||||||
|
# compile out the entire MPI IO interface, all the IO
|
||||||
|
# handles/constants are generated in separate .h files in the
|
||||||
|
# non-preprocessor case, and included in relevant #if's in the
|
||||||
|
# preprocessor case.
|
||||||
|
#
|
||||||
|
# Files are generated in the following directories:
|
||||||
|
#
|
||||||
|
# ompi/include
|
||||||
|
# ompi/mpi/fortran/use-mpi-f08
|
||||||
|
#
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Write an output file only if a) the output file does not already
|
||||||
|
# exist, or b) it exists, but its contents are different than $str.
|
||||||
|
|
||||||
|
sub write_file {
|
||||||
|
my ($filename_out, $str) = @_;
|
||||||
|
|
||||||
|
my $need_write = 0;
|
||||||
|
if (! -f $filename_out) {
|
||||||
|
$need_write = 1;
|
||||||
|
} else {
|
||||||
|
open(FILE_IN, $filename_out) || die "Couldn't open $filename_out";
|
||||||
|
my $tmp;
|
||||||
|
$tmp .= $_
|
||||||
|
while (<FILE_IN>);
|
||||||
|
close(FILE_IN);
|
||||||
|
if ($str ne $tmp) {
|
||||||
|
$need_write = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($need_write) {
|
||||||
|
open(FILE_OUT, ">$filename_out") || die "Couldn't open $filename_out";
|
||||||
|
print FILE_OUT $str;
|
||||||
|
close(FILE_OUT);
|
||||||
|
print "created $filename_out\n";
|
||||||
|
} else {
|
||||||
|
print "$filename_out unchanged; not written\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
print "creating Fortran header files (with common constants)...\n";
|
||||||
|
|
||||||
|
# Find the OMPI topdir. It is likely the pwd.
|
||||||
|
my $topdir;
|
||||||
|
if (-r "ompi/include/mpi.h.in") {
|
||||||
|
$topdir = ".";
|
||||||
|
} elsif (-r "include/mpi.h.in") {
|
||||||
|
$topdir = "..";
|
||||||
|
} elsif (-r "mpi.h.in") {
|
||||||
|
$topdir = "../..";
|
||||||
|
} else {
|
||||||
|
print "Please run this script from the Open MPI topdir or topdir/include/mpi\n";
|
||||||
|
print "Aborting.\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
my $handles;
|
||||||
|
|
||||||
|
$handles->{MPI_COMM_WORLD} = 0;
|
||||||
|
$handles->{MPI_COMM_SELF} = 1;
|
||||||
|
$handles->{MPI_GROUP_EMPTY} = 1;
|
||||||
|
$handles->{MPI_ERRORS_ARE_FATAL} = 1;
|
||||||
|
$handles->{MPI_ERRORS_RETURN} = 2;
|
||||||
|
|
||||||
|
$handles->{MPI_MAX} = 1;
|
||||||
|
$handles->{MPI_MIN} = 2;
|
||||||
|
$handles->{MPI_SUM} = 3;
|
||||||
|
$handles->{MPI_PROD} = 4;
|
||||||
|
$handles->{MPI_LAND} = 5;
|
||||||
|
$handles->{MPI_BAND} = 6;
|
||||||
|
$handles->{MPI_LOR} = 7;
|
||||||
|
$handles->{MPI_BOR} = 8;
|
||||||
|
$handles->{MPI_LXOR} = 9;
|
||||||
|
$handles->{MPI_BXOR} = 10;
|
||||||
|
$handles->{MPI_MAXLOC} = 11;
|
||||||
|
$handles->{MPI_MINLOC} = 12;
|
||||||
|
$handles->{MPI_REPLACE} = 13;
|
||||||
|
|
||||||
|
$handles->{MPI_COMM_NULL} = 2;
|
||||||
|
$handles->{MPI_DATATYPE_NULL} = 0;
|
||||||
|
$handles->{MPI_ERRHANDLER_NULL} = 0;
|
||||||
|
$handles->{MPI_GROUP_NULL} = 0;
|
||||||
|
$handles->{MPI_INFO_NULL} = 0;
|
||||||
|
$handles->{MPI_MESSAGE_NULL} = 0;
|
||||||
|
$handles->{MPI_OP_NULL} = 0;
|
||||||
|
$handles->{MPI_REQUEST_NULL} = 0;
|
||||||
|
$handles->{MPI_WIN_NULL} = 0;
|
||||||
|
$handles->{MPI_MESSAGE_NULL} = 0;
|
||||||
|
|
||||||
|
$handles->{MPI_BYTE} = 1;
|
||||||
|
$handles->{MPI_PACKED} = 2;
|
||||||
|
$handles->{MPI_UB} = 3;
|
||||||
|
$handles->{MPI_LB} = 4;
|
||||||
|
$handles->{MPI_CHARACTER} = 5;
|
||||||
|
$handles->{MPI_LOGICAL} = 6;
|
||||||
|
$handles->{MPI_INTEGER} = 7;
|
||||||
|
$handles->{MPI_INTEGER1} = 8;
|
||||||
|
$handles->{MPI_INTEGER2} = 9;
|
||||||
|
$handles->{MPI_INTEGER4} = 10;
|
||||||
|
$handles->{MPI_INTEGER8} = 11;
|
||||||
|
$handles->{MPI_INTEGER16} = 12;
|
||||||
|
$handles->{MPI_REAL} = 13;
|
||||||
|
$handles->{MPI_REAL4} = 14;
|
||||||
|
$handles->{MPI_REAL8} = 15;
|
||||||
|
$handles->{MPI_REAL16} = 16;
|
||||||
|
$handles->{MPI_DOUBLE_PRECISION} = 17;
|
||||||
|
$handles->{MPI_COMPLEX} = 18;
|
||||||
|
$handles->{MPI_COMPLEX8} = 19;
|
||||||
|
$handles->{MPI_COMPLEX16} = 20;
|
||||||
|
$handles->{MPI_COMPLEX32} = 21;
|
||||||
|
$handles->{MPI_DOUBLE_COMPLEX} = 22;
|
||||||
|
$handles->{MPI_2REAL} = 23;
|
||||||
|
$handles->{MPI_2DOUBLE_PRECISION} = 24;
|
||||||
|
$handles->{MPI_2INTEGER} = 25;
|
||||||
|
$handles->{MPI_2COMPLEX} = 26;
|
||||||
|
$handles->{MPI_2DOUBLE_COMPLEX} = 27;
|
||||||
|
$handles->{MPI_REAL2} = 28;
|
||||||
|
$handles->{MPI_LOGICAL1} = 29;
|
||||||
|
$handles->{MPI_LOGICAL2} = 30;
|
||||||
|
$handles->{MPI_LOGICAL4} = 31;
|
||||||
|
$handles->{MPI_LOGICAL8} = 32;
|
||||||
|
$handles->{MPI_WCHAR} = 33;
|
||||||
|
$handles->{MPI_CHAR} = 34;
|
||||||
|
$handles->{MPI_UNSIGNED_CHAR} = 35;
|
||||||
|
$handles->{MPI_SIGNED_CHAR} = 36;
|
||||||
|
$handles->{MPI_SHORT} = 37;
|
||||||
|
$handles->{MPI_UNSIGNED_SHORT} = 38;
|
||||||
|
$handles->{MPI_INT} = 39;
|
||||||
|
$handles->{MPI_UNSIGNED} = 40;
|
||||||
|
$handles->{MPI_LONG} = 41;
|
||||||
|
$handles->{MPI_UNSIGNED_LONG} = 42;
|
||||||
|
$handles->{MPI_LONG_LONG_INT} = 43;
|
||||||
|
$handles->{MPI_UNSIGNED_LONG_LONG} = 44;
|
||||||
|
$handles->{MPI_FLOAT} = 45;
|
||||||
|
$handles->{MPI_DOUBLE} = 46;
|
||||||
|
$handles->{MPI_LONG_DOUBLE} = 47;
|
||||||
|
$handles->{MPI_FLOAT_INT} = 48;
|
||||||
|
$handles->{MPI_DOUBLE_INT} = 49;
|
||||||
|
$handles->{MPI_LONGDBL_INT} = 50;
|
||||||
|
$handles->{MPI_LONG_INT} = 51;
|
||||||
|
$handles->{MPI_2INT} = 52;
|
||||||
|
$handles->{MPI_SHORT_INT} = 53;
|
||||||
|
$handles->{MPI_CXX_BOOL} = 54;
|
||||||
|
$handles->{MPI_CXX_CPLEX} = 55;
|
||||||
|
$handles->{MPI_CXX_DBLCPLEX} = 56;
|
||||||
|
$handles->{MPI_CXX_LDBLCPLEX} = 57;
|
||||||
|
$handles->{MPI_INT8_T} = 58;
|
||||||
|
$handles->{MPI_UINT8_T} = 59;
|
||||||
|
$handles->{MPI_INT16_T} = 60;
|
||||||
|
$handles->{MPI_UINT16_T} = 61;
|
||||||
|
$handles->{MPI_INT32_T} = 62;
|
||||||
|
$handles->{MPI_UINT32_T} = 63;
|
||||||
|
$handles->{MPI_INT64_T} = 64;
|
||||||
|
$handles->{MPI_UINT64_T} = 65;
|
||||||
|
$handles->{MPI_AINT} = 66;
|
||||||
|
$handles->{MPI_OFFSET} = 67;
|
||||||
|
|
||||||
|
$handles->{MPI_MESSAGE_NO_PROC} = 1;
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
my $io_handles;
|
||||||
|
|
||||||
|
$io_handles->{MPI_FILE_NULL} = 0;
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
my $constants;
|
||||||
|
|
||||||
|
$constants->{MPI_VERSION} = 2;
|
||||||
|
$constants->{MPI_SUBVERSION} = 1;
|
||||||
|
|
||||||
|
$constants->{MPI_ANY_SOURCE} = -1;
|
||||||
|
$constants->{MPI_ANY_TAG} = -1;
|
||||||
|
$constants->{MPI_PROC_NULL} = -2;
|
||||||
|
$constants->{MPI_ROOT} = -4;
|
||||||
|
$constants->{MPI_UNDEFINED} = -32766;
|
||||||
|
$constants->{MPI_CART} = 1;
|
||||||
|
$constants->{MPI_GRAPH} = 2;
|
||||||
|
$constants->{MPI_KEYVAL_INVALID} = -1;
|
||||||
|
$constants->{MPI_SOURCE} = 1;
|
||||||
|
$constants->{MPI_TAG} = 2;
|
||||||
|
$constants->{MPI_ERROR} = 3;
|
||||||
|
$constants->{MPI_TAG_UB} = 0;
|
||||||
|
$constants->{MPI_HOST} = 1;
|
||||||
|
$constants->{MPI_IO} = 2;
|
||||||
|
$constants->{MPI_WTIME_IS_GLOBAL} = 3;
|
||||||
|
$constants->{MPI_APPNUM} = 4;
|
||||||
|
$constants->{MPI_LASTUSEDCODE} = 5;
|
||||||
|
$constants->{MPI_UNIVERSE_SIZE} = 6;
|
||||||
|
$constants->{MPI_WIN_BASE} = 7;
|
||||||
|
$constants->{MPI_WIN_SIZE} = 8;
|
||||||
|
$constants->{MPI_WIN_DISP_UNIT} = 9;
|
||||||
|
|
||||||
|
$constants->{MPI_BSEND_OVERHEAD} = 128;
|
||||||
|
$constants->{MPI_ORDER_C} = 0;
|
||||||
|
$constants->{MPI_ORDER_FORTRAN} = 1;
|
||||||
|
$constants->{MPI_DISTRIBUTE_BLOCK} = 0;
|
||||||
|
$constants->{MPI_DISTRIBUTE_CYCLIC} = 1;
|
||||||
|
$constants->{MPI_DISTRIBUTE_NONE} = 2;
|
||||||
|
$constants->{MPI_DISTRIBUTE_DFLT_DARG} = -1;
|
||||||
|
$constants->{MPI_TYPECLASS_INTEGER} = 1;
|
||||||
|
$constants->{MPI_TYPECLASS_REAL} = 2;
|
||||||
|
$constants->{MPI_TYPECLASS_COMPLEX} = 3;
|
||||||
|
$constants->{MPI_MODE_NOCHECK} = 1;
|
||||||
|
$constants->{MPI_MODE_NOPRECEDE} = 2;
|
||||||
|
$constants->{MPI_MODE_NOPUT} = 4;
|
||||||
|
$constants->{MPI_MODE_NOSTORE} = 8;
|
||||||
|
$constants->{MPI_MODE_NOSUCCEED} = 16;
|
||||||
|
$constants->{MPI_LOCK_EXCLUSIVE} = 1;
|
||||||
|
$constants->{MPI_LOCK_SHARED} = 2;
|
||||||
|
|
||||||
|
$constants->{MPI_THREAD_SINGLE} = 0;
|
||||||
|
$constants->{MPI_THREAD_FUNNELED} = 1;
|
||||||
|
$constants->{MPI_THREAD_SERIALIZED} = 2;
|
||||||
|
$constants->{MPI_THREAD_MULTIPLE} = 3;
|
||||||
|
|
||||||
|
$constants->{MPI_SUCCESS} = 0;
|
||||||
|
$constants->{MPI_ERR_BUFFER} = 1;
|
||||||
|
$constants->{MPI_ERR_COUNT} = 2;
|
||||||
|
$constants->{MPI_ERR_TYPE} = 3;
|
||||||
|
$constants->{MPI_ERR_TAG} = 4;
|
||||||
|
$constants->{MPI_ERR_COMM} = 5;
|
||||||
|
$constants->{MPI_ERR_RANK} = 6;
|
||||||
|
$constants->{MPI_ERR_REQUEST} = 7;
|
||||||
|
$constants->{MPI_ERR_ROOT} = 8;
|
||||||
|
$constants->{MPI_ERR_GROUP} = 9;
|
||||||
|
$constants->{MPI_ERR_OP} = 10;
|
||||||
|
$constants->{MPI_ERR_TOPOLOGY} = 11;
|
||||||
|
$constants->{MPI_ERR_DIMS} = 12;
|
||||||
|
$constants->{MPI_ERR_ARG} = 13;
|
||||||
|
$constants->{MPI_ERR_UNKNOWN} = 14;
|
||||||
|
$constants->{MPI_ERR_TRUNCATE} = 15;
|
||||||
|
$constants->{MPI_ERR_OTHER} = 16;
|
||||||
|
$constants->{MPI_ERR_INTERN} = 17;
|
||||||
|
$constants->{MPI_ERR_IN_STATUS} = 18;
|
||||||
|
$constants->{MPI_ERR_PENDING} = 19;
|
||||||
|
$constants->{MPI_ERR_ACCESS} = 20;
|
||||||
|
$constants->{MPI_ERR_AMODE} = 21;
|
||||||
|
$constants->{MPI_ERR_ASSERT} = 22;
|
||||||
|
$constants->{MPI_ERR_BAD_FILE} = 23;
|
||||||
|
$constants->{MPI_ERR_BASE} = 24;
|
||||||
|
$constants->{MPI_ERR_CONVERSION} = 25;
|
||||||
|
$constants->{MPI_ERR_DISP} = 26;
|
||||||
|
$constants->{MPI_ERR_DUP_DATAREP} = 27;
|
||||||
|
$constants->{MPI_ERR_FILE_EXISTS} = 28;
|
||||||
|
$constants->{MPI_ERR_FILE_IN_USE} = 29;
|
||||||
|
$constants->{MPI_ERR_FILE} = 30;
|
||||||
|
$constants->{MPI_ERR_INFO_KEY} = 31;
|
||||||
|
$constants->{MPI_ERR_INFO_NOKEY} = 32;
|
||||||
|
$constants->{MPI_ERR_INFO_VALUE} = 33;
|
||||||
|
$constants->{MPI_ERR_INFO} = 34;
|
||||||
|
$constants->{MPI_ERR_IO} = 35;
|
||||||
|
$constants->{MPI_ERR_KEYVAL} = 36;
|
||||||
|
$constants->{MPI_ERR_LOCKTYPE} = 37;
|
||||||
|
$constants->{MPI_ERR_NAME} = 38;
|
||||||
|
$constants->{MPI_ERR_NO_MEM} = 39;
|
||||||
|
$constants->{MPI_ERR_NOT_SAME} = 40;
|
||||||
|
$constants->{MPI_ERR_NO_SPACE} = 41;
|
||||||
|
$constants->{MPI_ERR_NO_SUCH_FILE} = 42;
|
||||||
|
$constants->{MPI_ERR_PORT} = 43;
|
||||||
|
$constants->{MPI_ERR_QUOTA} = 44;
|
||||||
|
$constants->{MPI_ERR_READ_ONLY} = 45;
|
||||||
|
$constants->{MPI_ERR_RMA_CONFLICT} = 46;
|
||||||
|
$constants->{MPI_ERR_RMA_SYNC} = 47;
|
||||||
|
$constants->{MPI_ERR_SERVICE} = 48;
|
||||||
|
$constants->{MPI_ERR_SIZE} = 49;
|
||||||
|
$constants->{MPI_ERR_SPAWN} = 50;
|
||||||
|
$constants->{MPI_ERR_UNSUPPORTED_DATAREP} = 51;
|
||||||
|
$constants->{MPI_ERR_UNSUPPORTED_OPERATION} = 53;
|
||||||
|
$constants->{MPI_ERR_LASTCODE} = 54;
|
||||||
|
|
||||||
|
$constants->{MPI_ERR_SYSRESOURCE} = -2;
|
||||||
|
|
||||||
|
$constants->{MPI_IDENT} = 0;
|
||||||
|
$constants->{MPI_CONGRUENT} = 1;
|
||||||
|
$constants->{MPI_SIMILAR} = 2;
|
||||||
|
$constants->{MPI_UNEQUAL} = 3;
|
||||||
|
|
||||||
|
$constants->{MPI_COMBINER_NAMED} = 0;
|
||||||
|
$constants->{MPI_COMBINER_DUP} = 1;
|
||||||
|
$constants->{MPI_COMBINER_CONTIGUOUS} = 2;
|
||||||
|
$constants->{MPI_COMBINER_VECTOR} = 3;
|
||||||
|
$constants->{MPI_COMBINER_HVECTOR_INTEGER} = 4;
|
||||||
|
$constants->{MPI_COMBINER_HVECTOR} = 5;
|
||||||
|
$constants->{MPI_COMBINER_INDEXED} = 6;
|
||||||
|
$constants->{MPI_COMBINER_HINDEXED_INTEGER} = 7;
|
||||||
|
$constants->{MPI_COMBINER_HINDEXED} = 8;
|
||||||
|
$constants->{MPI_COMBINER_INDEXED_BLOCK} = 9;
|
||||||
|
$constants->{MPI_COMBINER_STRUCT_INTEGER} = 10;
|
||||||
|
$constants->{MPI_COMBINER_STRUCT} = 11;
|
||||||
|
$constants->{MPI_COMBINER_SUBARRAY} = 12;
|
||||||
|
$constants->{MPI_COMBINER_DARRAY} = 13;
|
||||||
|
$constants->{MPI_COMBINER_F90_REAL} = 14;
|
||||||
|
$constants->{MPI_COMBINER_F90_COMPLEX} = 15;
|
||||||
|
$constants->{MPI_COMBINER_F90_INTEGER} = 16;
|
||||||
|
$constants->{MPI_COMBINER_RESIZED} = 17;
|
||||||
|
$constants->{MPI_COMBINER_HINDEXED_BLOCK} = 18;
|
||||||
|
|
||||||
|
$constants->{MPI_COMM_TYPE_SHARED} = 0;
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
my $io_constants;
|
||||||
|
|
||||||
|
$io_constants->{MPI_SEEK_SET} = 600;
|
||||||
|
$io_constants->{MPI_SEEK_CUR} = 602;
|
||||||
|
$io_constants->{MPI_SEEK_END} = 604;
|
||||||
|
$io_constants->{MPI_MODE_CREATE} = 1;
|
||||||
|
$io_constants->{MPI_MODE_RDONLY} = 2;
|
||||||
|
$io_constants->{MPI_MODE_WRONLY} = 4;
|
||||||
|
$io_constants->{MPI_MODE_RDWR} = 8;
|
||||||
|
$io_constants->{MPI_MODE_DELETE_ON_CLOSE} = 16;
|
||||||
|
$io_constants->{MPI_MODE_UNIQUE_OPEN} = 32;
|
||||||
|
$io_constants->{MPI_MODE_EXCL} = 64;
|
||||||
|
$io_constants->{MPI_MODE_APPEND} = 128;
|
||||||
|
$io_constants->{MPI_MODE_SEQUENTIAL} = 256;
|
||||||
|
$io_constants->{MPI_DISPLACEMENT_CURRENT} = -54278278;
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Fortran handles file
|
||||||
|
|
||||||
|
my $header = '! -*- fortran -*-
|
||||||
|
! WARNING! THIS IS A GENERATED FILE!!
|
||||||
|
! ANY EDITS YOU PUT HERE WILL BE LOST!
|
||||||
|
! ==> Instead, edit topdir/ompi/include/mpif-values.pl.
|
||||||
|
|
||||||
|
! Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
|
||||||
|
! University Research and Technology
|
||||||
|
! Corporation. All rights reserved.
|
||||||
|
! Copyright (c) 2004-2010 The University of Tennessee and The University
|
||||||
|
! of Tennessee Research Foundation. All rights
|
||||||
|
! reserved.
|
||||||
|
! Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
|
||||||
|
! University of Stuttgart. All rights reserved.
|
||||||
|
! Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
|
! All rights reserved.
|
||||||
|
! Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved.
|
||||||
|
! Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
||||||
|
! $COPYRIGHT$
|
||||||
|
!
|
||||||
|
! Additional copyrights may follow
|
||||||
|
!
|
||||||
|
! $HEADER$
|
||||||
|
!
|
||||||
|
|
||||||
|
';
|
||||||
|
|
||||||
|
sub write_fortran_file {
|
||||||
|
my ($header, $vals, $file) = @_;
|
||||||
|
|
||||||
|
foreach my $key (sort(keys(%{$vals}))) {
|
||||||
|
$header .= " integer $key\n";
|
||||||
|
}
|
||||||
|
$header .= "\n";
|
||||||
|
foreach my $key (sort(keys(%{$vals}))) {
|
||||||
|
$header .= " parameter ($key=$vals->{$key})\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
write_file($file, $header);
|
||||||
|
}
|
||||||
|
|
||||||
|
write_fortran_file($header, $handles,
|
||||||
|
"$topdir/ompi/include/mpif-handles.h");
|
||||||
|
write_fortran_file($header, $constants,
|
||||||
|
"$topdir/ompi/include/mpif-constants.h");
|
||||||
|
write_fortran_file($header, $io_handles,
|
||||||
|
"$topdir/ompi/include/mpif-io-handles.h");
|
||||||
|
write_fortran_file($header, $io_constants,
|
||||||
|
"$topdir/ompi/include/mpif-io-constants.h");
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Create preprocessor files
|
||||||
|
|
||||||
|
my $output = '/* WARNING! THIS IS A GENERATED FILE!!
|
||||||
|
* ANY EDITS YOU PUT HERE WILL BE LOST!
|
||||||
|
* Instead, edit topdir/ompi/include/mpif-values.pl
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||||
|
* University Research and Technology
|
||||||
|
* Corporation. All rights reserved.
|
||||||
|
* Copyright (c) 2004-2006 The University of Tennessee and The University
|
||||||
|
* of Tennessee Research Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
* Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
|
||||||
|
* University of Stuttgart. All rights reserved.
|
||||||
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
|
* All rights reserved.
|
||||||
|
* Copyright (c) 2007-2009 Cisco Systems, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2008-2009 Sun Microsystems, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
||||||
|
* Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||||
|
* All rights reserved.
|
||||||
|
* $COPYRIGHT$
|
||||||
|
*
|
||||||
|
* Additional copyrights may follow
|
||||||
|
*
|
||||||
|
* $HEADER$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef USE_MPI_F08_CONSTANTS_H
|
||||||
|
#define USE_MPI_F08_CONSTANTS_H
|
||||||
|
|
||||||
|
';
|
||||||
|
|
||||||
|
foreach my $key (sort(keys(%{$constants}))) {
|
||||||
|
$output .= "#define OMPI_$key $constants->{$key}\n";
|
||||||
|
}
|
||||||
|
$output .= "\n";
|
||||||
|
foreach my $key (sort(keys(%{$handles}))) {
|
||||||
|
$output .= "#define OMPI_$key $handles->{$key}\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$output .= "\n#if OMPI_PROVIDE_MPI_FILE_INTERFACE\n";
|
||||||
|
foreach my $key (sort(keys(%{$io_constants}))) {
|
||||||
|
$output .= "#define OMPI_$key $io_constants->{$key}\n";
|
||||||
|
}
|
||||||
|
$output .= "\n";
|
||||||
|
foreach my $key (sort(keys(%{$io_handles}))) {
|
||||||
|
$output .= "#define OMPI_$key $io_handles->{$key}\n";
|
||||||
|
}
|
||||||
|
$output .= "#endif /* OMPI_PROVIDE_MPI_FILE_INTERFACE */
|
||||||
|
|
||||||
|
#endif /* USE_MPI_F08_CONSTANTS_H */\n";
|
||||||
|
|
||||||
|
write_file("$topdir/ompi/mpi/fortran/use-mpi-f08/constants.h", $output);
|
||||||
|
|
||||||
|
exit(0);
|
@ -10,7 +10,7 @@
|
|||||||
! University of Stuttgart. All rights reserved.
|
! University of Stuttgart. All rights reserved.
|
||||||
! Copyright (c) 2004-2005 The Regents of the University of California.
|
! Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
! All rights reserved.
|
! All rights reserved.
|
||||||
! Copyright (c) 2006-2007 Cisco Systems, Inc. All rights reserved.
|
! Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved.
|
||||||
! $COPYRIGHT$
|
! $COPYRIGHT$
|
||||||
!
|
!
|
||||||
! Additional copyrights may follow
|
! Additional copyrights may follow
|
||||||
@ -51,35 +51,10 @@
|
|||||||
! WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
|
! WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
!
|
include 'mpif-config.h'
|
||||||
! Include the back-end file that has the bulk of the MPI Fortran
|
include 'mpif-constants.h'
|
||||||
! interface.
|
include 'mpif-handles.h'
|
||||||
!
|
@OMPI_MPIF_IO_CONSTANTS_INCLUDE@
|
||||||
|
@OMPI_MPIF_IO_HANDLES_INCLUDE@
|
||||||
include 'mpif-common.h'
|
include 'mpif-externals.h'
|
||||||
|
include 'mpif-sentinels.h'
|
||||||
!
|
|
||||||
! These "external" statements are specific to the MPI mpif.h interface
|
|
||||||
! (and are toxic to the MPI F90 interface), and are therefore in the
|
|
||||||
! MPI Fortran-specific header file (i.e., this one).
|
|
||||||
!
|
|
||||||
external MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN
|
|
||||||
external MPI_COMM_NULL_COPY_FN, MPI_COMM_NULL_DELETE_FN
|
|
||||||
external MPI_TYPE_NULL_COPY_FN, MPI_TYPE_NULL_DELETE_FN
|
|
||||||
external MPI_DUP_FN, MPI_COMM_DUP_FN, MPI_TYPE_DUP_FN
|
|
||||||
external MPI_WIN_NULL_COPY_FN
|
|
||||||
external MPI_WIN_NULL_DELETE_FN
|
|
||||||
external MPI_WIN_DUP_FN
|
|
||||||
! Note that MPI_CONVERSION_FN_NULL is a "constant" (it is only ever
|
|
||||||
! checked for comparison; it is never invoked), but it is passed as
|
|
||||||
! a function pointer (to MPI_REGISTER_DATAREP) and therefore must be
|
|
||||||
! the same size/type. It is therefore external'ed here, and not
|
|
||||||
! defined with an integer value in mpif-common.h.
|
|
||||||
external MPI_CONVERSION_FN_NULL
|
|
||||||
|
|
||||||
!
|
|
||||||
! double precision functions
|
|
||||||
!
|
|
||||||
external MPI_WTIME, MPI_WTICK @MPIF_H_PMPI_W_FUNCS@
|
|
||||||
double precision MPI_WTIME, MPI_WTICK @MPIF_H_PMPI_W_FUNCS@
|
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2006-2007 Los Alamos National Security, LLC.
|
# Copyright (c) 2006-2007 Los Alamos National Security, LLC.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
|
# Copyright (c) 2012 Cisco Systems, Inc. All rights reserved.
|
||||||
# $COPYRIGHT$
|
# $COPYRIGHT$
|
||||||
#
|
#
|
||||||
# Additional copyrights may follow
|
# Additional copyrights may follow
|
||||||
@ -20,16 +21,22 @@ AC_DEFUN([MCA_ompi_io_CONFIG],
|
|||||||
Default is to use the internal component system and
|
Default is to use the internal component system and
|
||||||
its specially modified version of ROMIO])])
|
its specially modified version of ROMIO])])
|
||||||
|
|
||||||
|
OMPI_MPIF_IO_CONSTANTS_INCLUDE=
|
||||||
|
OMPI_MPIF_IO_HANDLES_INCLUDE=
|
||||||
AS_IF([test "$enable_mpi_io" != "no"],
|
AS_IF([test "$enable_mpi_io" != "no"],
|
||||||
[define_mpi_io=1
|
[define_mpi_io=1
|
||||||
OMPI_MPIF_MPI_IO_INCLUDE="include \"mpif-mpi-io.h\""],
|
OMPI_MPIF_IO_CONSTANTS_INCLUDE="include \"mpif-io-constants.h\""
|
||||||
[define_mpi_io=0
|
OMPI_MPIF_IO_HANDLES_INCLUDE="include \"mpif-io-handles.h\""],
|
||||||
OMPI_MPIF_MPI_IO_INCLUDE=""])
|
[define_mpi_io=0])
|
||||||
|
AC_SUBST(OMPI_MPIF_IO_CONSTANTS_INCLUDE)
|
||||||
|
AC_SUBST(OMPI_MPIF_IO_HANDLES_INCLUDE)
|
||||||
|
|
||||||
MCA_CONFIGURE_FRAMEWORK([$1], [$2], [$define_mpi_io])
|
MCA_CONFIGURE_FRAMEWORK([$1], [$2], [$define_mpi_io])
|
||||||
|
|
||||||
|
OMPI_PROVIDE_MPI_FILE_INTERFACE=$define_mpi_io
|
||||||
|
AC_SUBST(OMPI_PROVIDE_MPI_FILE_INTERFACE)
|
||||||
AC_DEFINE_UNQUOTED([OMPI_PROVIDE_MPI_FILE_INTERFACE], [$define_mpi_io],
|
AC_DEFINE_UNQUOTED([OMPI_PROVIDE_MPI_FILE_INTERFACE], [$define_mpi_io],
|
||||||
[Whether OMPI should provide MPI File interface])
|
[Whether OMPI should provide MPI File interface])
|
||||||
AM_CONDITIONAL([OMPI_PROVIDE_MPI_FILE_INTERFACE], [test "$define_mpi_io" = "1"])
|
AM_CONDITIONAL([OMPI_PROVIDE_MPI_FILE_INTERFACE], [test "$define_mpi_io" = "1"])
|
||||||
AC_SUBST([OMPI_MPIF_MPI_IO_INCLUDE])
|
|
||||||
])
|
])
|
||||||
|
@ -100,13 +100,13 @@ DECL(int, MPI_FORTRAN_IN_PLACE, mpi_fortran_in_place,
|
|||||||
mpi_fortran_in_place_, mpi_fortran_in_place__);
|
mpi_fortran_in_place_, mpi_fortran_in_place__);
|
||||||
DECL(char *, MPI_FORTRAN_ARGV_NULL, mpi_fortran_argv_null,
|
DECL(char *, MPI_FORTRAN_ARGV_NULL, mpi_fortran_argv_null,
|
||||||
mpi_fortran_argv_null_, mpi_fortran_argv_null__);
|
mpi_fortran_argv_null_, mpi_fortran_argv_null__);
|
||||||
DECL(double, MPI_FORTRAN_ARGVS_NULL, mpi_fortran_argvs_null,
|
DECL(char *, MPI_FORTRAN_ARGVS_NULL, mpi_fortran_argvs_null,
|
||||||
mpi_fortran_argvs_null_, mpi_fortran_argvs_null__);
|
mpi_fortran_argvs_null_, mpi_fortran_argvs_null__);
|
||||||
DECL(int *, MPI_FORTRAN_ERRCODES_IGNORE, mpi_fortran_errcodes_ignore,
|
DECL(int *, MPI_FORTRAN_ERRCODES_IGNORE, mpi_fortran_errcodes_ignore,
|
||||||
mpi_fortran_errcodes_ignore_, mpi_fortran_errcodes_ignore__);
|
mpi_fortran_errcodes_ignore_, mpi_fortran_errcodes_ignore__);
|
||||||
DECL(int *, MPI_FORTRAN_STATUS_IGNORE, mpi_fortran_status_ignore,
|
DECL(int *, MPI_FORTRAN_STATUS_IGNORE, mpi_fortran_status_ignore,
|
||||||
mpi_fortran_status_ignore_, mpi_fortran_status_ignore__);
|
mpi_fortran_status_ignore_, mpi_fortran_status_ignore__);
|
||||||
DECL(double, MPI_FORTRAN_STATUSES_IGNORE, mpi_fortran_statuses_ignore,
|
DECL(int *, MPI_FORTRAN_STATUSES_IGNORE, mpi_fortran_statuses_ignore,
|
||||||
mpi_fortran_statuses_ignore_, mpi_fortran_statuses_ignore__);
|
mpi_fortran_statuses_ignore_, mpi_fortran_statuses_ignore__);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -156,6 +156,8 @@ SUBROUTINE MPI_Win_errhandler_function(win, error_code) &
|
|||||||
END SUBROUTINE
|
END SUBROUTINE
|
||||||
END INTERFACE
|
END INTERFACE
|
||||||
|
|
||||||
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
|
||||||
OMPI_ABSTRACT INTERFACE
|
OMPI_ABSTRACT INTERFACE
|
||||||
SUBROUTINE MPI_File_errhandler_function(file, error_code) &
|
SUBROUTINE MPI_File_errhandler_function(file, error_code) &
|
||||||
BIND(C)
|
BIND(C)
|
||||||
@ -166,6 +168,8 @@ SUBROUTINE MPI_File_errhandler_function(file, error_code) &
|
|||||||
END SUBROUTINE
|
END SUBROUTINE
|
||||||
END INTERFACE
|
END INTERFACE
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
OMPI_ABSTRACT INTERFACE
|
OMPI_ABSTRACT INTERFACE
|
||||||
SUBROUTINE MPI_Grequest_query_function(extra_state,status,ierror) &
|
SUBROUTINE MPI_Grequest_query_function(extra_state,status,ierror) &
|
||||||
BIND(C)
|
BIND(C)
|
||||||
|
@ -461,7 +461,7 @@ subroutine MPI_Testall_f08(count,array_of_requests,flag,array_of_statuses,ierror
|
|||||||
INTEGER, INTENT(IN) :: count
|
INTEGER, INTENT(IN) :: count
|
||||||
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
||||||
LOGICAL, INTENT(OUT) :: flag
|
LOGICAL, INTENT(OUT) :: flag
|
||||||
TYPE(MPI_Status) :: array_of_statuses(count)
|
TYPE(MPI_Status) :: array_of_statuses(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
end subroutine MPI_Testall_f08
|
end subroutine MPI_Testall_f08
|
||||||
end interface MPI_Testall
|
end interface MPI_Testall
|
||||||
@ -523,7 +523,7 @@ subroutine MPI_Waitall_f08(count,array_of_requests,array_of_statuses,ierror &
|
|||||||
implicit none
|
implicit none
|
||||||
INTEGER, INTENT(IN) :: count
|
INTEGER, INTENT(IN) :: count
|
||||||
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
||||||
TYPE(MPI_Status) :: array_of_statuses(count)
|
TYPE(MPI_Status) :: array_of_statuses(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
end subroutine MPI_Waitall_f08
|
end subroutine MPI_Waitall_f08
|
||||||
end interface MPI_Waitall
|
end interface MPI_Waitall
|
||||||
@ -2564,7 +2564,7 @@ subroutine MPI_Error_string_f08(errorcode,string,resultlen,ierror)
|
|||||||
end subroutine MPI_Error_string_f08
|
end subroutine MPI_Error_string_f08
|
||||||
end interface MPI_Error_string
|
end interface MPI_Error_string
|
||||||
|
|
||||||
#if OMPI_PROFILE_FILE_INTERFACE
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
|
||||||
interface MPI_File_call_errhandler
|
interface MPI_File_call_errhandler
|
||||||
subroutine MPI_File_call_errhandler_f08(fh,errorcode,ierror &
|
subroutine MPI_File_call_errhandler_f08(fh,errorcode,ierror &
|
||||||
@ -2611,7 +2611,7 @@ subroutine MPI_File_set_errhandler_f08(file,errhandler,ierror &
|
|||||||
end subroutine MPI_File_set_errhandler_f08
|
end subroutine MPI_File_set_errhandler_f08
|
||||||
end interface MPI_File_set_errhandler
|
end interface MPI_File_set_errhandler
|
||||||
|
|
||||||
#endif ! OMPI_PROFILE_FILE_INTERFACE
|
#endif ! OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
|
||||||
interface MPI_Finalize
|
interface MPI_Finalize
|
||||||
subroutine MPI_Finalize_f08(ierror &
|
subroutine MPI_Finalize_f08(ierror &
|
||||||
@ -2903,7 +2903,7 @@ subroutine MPI_Comm_spawn_f08(command,argv,maxprocs,info,root,comm,intercomm, &
|
|||||||
TYPE(MPI_Info), INTENT(IN) :: info
|
TYPE(MPI_Info), INTENT(IN) :: info
|
||||||
TYPE(MPI_Comm), INTENT(IN) :: comm
|
TYPE(MPI_Comm), INTENT(IN) :: comm
|
||||||
TYPE(MPI_Comm), INTENT(OUT) :: intercomm
|
TYPE(MPI_Comm), INTENT(OUT) :: intercomm
|
||||||
INTEGER, INTENT(OUT) :: array_of_errcodes(*)
|
INTEGER :: array_of_errcodes(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
end subroutine MPI_Comm_spawn_f08
|
end subroutine MPI_Comm_spawn_f08
|
||||||
end interface MPI_Comm_spawn
|
end interface MPI_Comm_spawn
|
||||||
@ -2919,7 +2919,7 @@ subroutine MPI_Comm_spawn_multiple_f08(count,array_of_commands,array_of_argv,arr
|
|||||||
TYPE(MPI_Info), INTENT(IN) :: array_of_info(*)
|
TYPE(MPI_Info), INTENT(IN) :: array_of_info(*)
|
||||||
TYPE(MPI_Comm), INTENT(IN) :: comm
|
TYPE(MPI_Comm), INTENT(IN) :: comm
|
||||||
TYPE(MPI_Comm), INTENT(OUT) :: intercomm
|
TYPE(MPI_Comm), INTENT(OUT) :: intercomm
|
||||||
INTEGER, INTENT(OUT) :: array_of_errcodes(*)
|
INTEGER :: array_of_errcodes(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
end subroutine MPI_Comm_spawn_multiple_f08
|
end subroutine MPI_Comm_spawn_multiple_f08
|
||||||
end interface MPI_Comm_spawn_multiple
|
end interface MPI_Comm_spawn_multiple
|
||||||
@ -3233,7 +3233,7 @@ subroutine MPI_Status_set_elements_f08(status,datatype,count,ierror &
|
|||||||
end subroutine MPI_Status_set_elements_f08
|
end subroutine MPI_Status_set_elements_f08
|
||||||
end interface MPI_Status_set_elements
|
end interface MPI_Status_set_elements
|
||||||
|
|
||||||
#if OMPI_PROFILE_FILE_INTERFACE
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
|
||||||
interface MPI_File_close
|
interface MPI_File_close
|
||||||
subroutine MPI_File_close_f08(fh,ierror &
|
subroutine MPI_File_close_f08(fh,ierror &
|
||||||
@ -4004,7 +4004,7 @@ subroutine MPI_File_write_shared_f08(fh,buf,count,datatype,status,ierror &
|
|||||||
end subroutine MPI_File_write_shared_f08
|
end subroutine MPI_File_write_shared_f08
|
||||||
end interface MPI_File_write_shared
|
end interface MPI_File_write_shared
|
||||||
|
|
||||||
#endif ! OMPI_PROFILE_FILE_INTERFACE
|
#endif ! OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
|
||||||
interface MPI_Register_datarep
|
interface MPI_Register_datarep
|
||||||
subroutine MPI_Register_datarep_f08(datarep,read_conversion_fn,write_conversion_fn, &
|
subroutine MPI_Register_datarep_f08(datarep,read_conversion_fn,write_conversion_fn, &
|
||||||
@ -4110,6 +4110,18 @@ subroutine MPI_Comm_split_type_f08(comm,split_type,key,info,newcomm,ierror &
|
|||||||
end subroutine MPI_Comm_split_type_f08
|
end subroutine MPI_Comm_split_type_f08
|
||||||
end interface MPI_Comm_split_type
|
end interface MPI_Comm_split_type
|
||||||
|
|
||||||
|
interface MPI_F_sync_reg
|
||||||
|
subroutine MPI_F_sync_reg_f08(buf &
|
||||||
|
) OMPI_F08_INTERFACE_BIND_C("MPI_F_sync_reg_f08")
|
||||||
|
implicit none
|
||||||
|
!DEC$ ATTRIBUTES NO_ARG_CHECK :: buf
|
||||||
|
!$PRAGMA IGNORE_TKR buf
|
||||||
|
!DIR$ IGNORE_TKR buf
|
||||||
|
!IBM* IGNORE_TKR buf
|
||||||
|
OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf
|
||||||
|
end subroutine MPI_F_sync_reg_f08
|
||||||
|
end interface MPI_F_sync_reg
|
||||||
|
|
||||||
interface MPI_Get_library_version
|
interface MPI_Get_library_version
|
||||||
subroutine MPI_Get_library_version_f08(name,resultlen,ierror)
|
subroutine MPI_Get_library_version_f08(name,resultlen,ierror)
|
||||||
use :: mpi_f08_types, only : MPI_MAX_PROCESSOR_NAME
|
use :: mpi_f08_types, only : MPI_MAX_PROCESSOR_NAME
|
||||||
|
@ -15,7 +15,11 @@ module mpi_f08_types
|
|||||||
|
|
||||||
use, intrinsic :: ISO_C_BINDING
|
use, intrinsic :: ISO_C_BINDING
|
||||||
|
|
||||||
include "mpif-all-common.h"
|
include "mpif-config.h"
|
||||||
|
include "mpif-constants.h"
|
||||||
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
include "mpif-io-constants.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
!
|
!
|
||||||
! kind parameters
|
! kind parameters
|
||||||
@ -40,9 +44,11 @@ module mpi_f08_types
|
|||||||
integer :: MPI_VAL
|
integer :: MPI_VAL
|
||||||
end type MPI_Errhandler
|
end type MPI_Errhandler
|
||||||
|
|
||||||
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
type, BIND(C) :: MPI_File
|
type, BIND(C) :: MPI_File
|
||||||
integer :: MPI_VAL
|
integer :: MPI_VAL
|
||||||
end type MPI_File
|
end type MPI_File
|
||||||
|
#endif
|
||||||
|
|
||||||
type, BIND(C) :: MPI_Group
|
type, BIND(C) :: MPI_Group
|
||||||
integer :: MPI_VAL
|
integer :: MPI_VAL
|
||||||
@ -85,18 +91,18 @@ module mpi_f08_types
|
|||||||
logical, parameter :: MPI_ASYNCHRONOUS_PROTECTS_NONBL = .false.
|
logical, parameter :: MPI_ASYNCHRONOUS_PROTECTS_NONBL = .false.
|
||||||
|
|
||||||
!
|
!
|
||||||
! Pre-defined communicator bindings
|
! Pre-defined handles
|
||||||
!
|
!
|
||||||
|
|
||||||
type(MPI_Comm), protected, bind(C, name="ompi_f08_mpi_comm_world") :: MPI_COMM_WORLD
|
type(MPI_Comm), protected, bind(C, name="ompi_f08_mpi_comm_world") :: MPI_COMM_WORLD
|
||||||
type(MPI_Comm), protected, bind(C, name="ompi_f08_mpi_comm_self") :: MPI_COMM_SELF
|
type(MPI_Comm), protected, bind(C, name="ompi_f08_mpi_comm_self") :: MPI_COMM_SELF
|
||||||
|
|
||||||
type(MPI_Group), protected, bind(C, name="ompi_f08_mpi_group_empty") :: MPI_GROUP_EMPTY
|
type(MPI_Group), protected, bind(C, name="ompi_f08_mpi_group_empty") :: MPI_GROUP_EMPTY
|
||||||
|
|
||||||
type(MPI_Errhandler), protected, bind(C, name="ompi_f08_mpi_errors_are_fatal") :: MPI_ERRORS_ARE_FATAL
|
type(MPI_Errhandler), protected, bind(C, name="ompi_f08_mpi_errors_are_fatal") :: MPI_ERRORS_ARE_FATAL
|
||||||
type(MPI_Errhandler), protected, bind(C, name="ompi_f08_mpi_errors_return") :: MPI_ERRORS_RETURN
|
type(MPI_Errhandler), protected, bind(C, name="ompi_f08_mpi_errors_return") :: MPI_ERRORS_RETURN
|
||||||
|
|
||||||
!
|
type(MPI_Message), protected, bind(C, name="ompi_f08_mpi_message_no_proc") :: MPI_MESSAGE_NO_PROC
|
||||||
! lookup table indices
|
|
||||||
!
|
|
||||||
|
|
||||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_max" ) :: MPI_MAX
|
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_max" ) :: MPI_MAX
|
||||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_min" ) :: MPI_MIN
|
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_min" ) :: MPI_MIN
|
||||||
@ -125,6 +131,9 @@ module mpi_f08_types
|
|||||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_op_null") :: MPI_OP_NULL;
|
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_op_null") :: MPI_OP_NULL;
|
||||||
type(MPI_Request), protected, bind(C, name="ompi_f08_mpi_request_null") :: MPI_REQUEST_NULL;
|
type(MPI_Request), protected, bind(C, name="ompi_f08_mpi_request_null") :: MPI_REQUEST_NULL;
|
||||||
type(MPI_Win), protected, bind(C, name="ompi_f08_mpi_win_null") :: MPI_WIN_NULL;
|
type(MPI_Win), protected, bind(C, name="ompi_f08_mpi_win_null") :: MPI_WIN_NULL;
|
||||||
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
type(MPI_File), protected, bind(C, name="ompi_f08_mpi_file_null") :: MPI_FILE_NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
!
|
!
|
||||||
! Pre-defined datatype bindings
|
! Pre-defined datatype bindings
|
||||||
@ -166,15 +175,156 @@ module mpi_f08_types
|
|||||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_logical4") :: MPI_LOGICAL4
|
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_logical4") :: MPI_LOGICAL4
|
||||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_logical8") :: MPI_LOGICAL8
|
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_logical8") :: MPI_LOGICAL8
|
||||||
|
|
||||||
!
|
!... Special sentinel constants
|
||||||
! Special sentinel constants
|
!------------------------------
|
||||||
!
|
|
||||||
type(MPI_STATUS), bind(C, name="mpi_fortran_status_ignore") :: MPI_STATUS_IGNORE
|
type(MPI_STATUS), bind(C, name="mpi_fortran_status_ignore") :: MPI_STATUS_IGNORE
|
||||||
type(MPI_STATUS), bind(C, name="mpi_fortran_statuses_ignore") :: MPI_STATUSES_IGNORE(1)
|
type(MPI_STATUS), bind(C, name="mpi_fortran_statuses_ignore") :: MPI_STATUSES_IGNORE(1)
|
||||||
integer, bind(C, name="mpi_fortran_bottom") :: MPI_BOTTOM = C_INT
|
integer, bind(C, name="mpi_fortran_bottom") :: MPI_BOTTOM
|
||||||
integer, bind(C, name="mpi_fortran_in_place") :: MPI_IN_PLACE = C_INT
|
integer, bind(C, name="mpi_fortran_in_place") :: MPI_IN_PLACE
|
||||||
integer, bind(C, name="mpi_fortran_argv_null") :: MPI_ARGV_NULL = C_INT
|
integer, bind(C, name="mpi_fortran_argv_null") :: MPI_ARGV_NULL
|
||||||
integer, bind(C, name="mpi_fortran_argvs_null") :: MPI_ARGVS_NULL = C_INT
|
integer, bind(C, name="mpi_fortran_argvs_null") :: MPI_ARGVS_NULL
|
||||||
integer, bind(C, name="mpi_fortran_errcodes_ignore") :: MPI_ERRCODES_IGNORE = C_INT
|
integer, bind(C, name="mpi_fortran_errcodes_ignore") :: MPI_ERRCODES_IGNORE
|
||||||
|
|
||||||
|
!... Interfaces for operators with handles
|
||||||
|
!-----------------------------------------
|
||||||
|
interface operator (.EQ.)
|
||||||
|
module procedure ompi_comm_op_eq
|
||||||
|
module procedure ompi_datatype_op_eq
|
||||||
|
module procedure ompi_errhandler_op_eq
|
||||||
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
module procedure ompi_file_op_eq
|
||||||
|
#endif
|
||||||
|
module procedure ompi_group_op_eq
|
||||||
|
module procedure ompi_info_op_eq
|
||||||
|
module procedure ompi_message_op_eq
|
||||||
|
module procedure ompi_op_op_eq
|
||||||
|
module procedure ompi_request_op_eq
|
||||||
|
module procedure ompi_win_op_eq
|
||||||
|
end interface
|
||||||
|
|
||||||
|
interface operator (.NE.)
|
||||||
|
module procedure ompi_comm_op_ne
|
||||||
|
module procedure ompi_datatype_op_ne
|
||||||
|
module procedure ompi_errhandler_op_ne
|
||||||
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
module procedure ompi_file_op_ne
|
||||||
|
#endif
|
||||||
|
module procedure ompi_group_op_ne
|
||||||
|
module procedure ompi_info_op_ne
|
||||||
|
module procedure ompi_message_op_ne
|
||||||
|
module procedure ompi_op_op_ne
|
||||||
|
module procedure ompi_request_op_ne
|
||||||
|
module procedure ompi_win_op_ne
|
||||||
|
end interface
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
!... .EQ. operator
|
||||||
|
!-----------------
|
||||||
|
logical function ompi_comm_op_eq(a, b)
|
||||||
|
type(MPI_Comm), intent(in) :: a, b
|
||||||
|
ompi_comm_op_eq = (a%MPI_VAL .EQ. b%MPI_VAL)
|
||||||
|
end function ompi_comm_op_eq
|
||||||
|
|
||||||
|
logical function ompi_datatype_op_eq(a, b)
|
||||||
|
type(MPI_Datatype), intent(in) :: a, b
|
||||||
|
ompi_datatype_op_eq = (a%MPI_VAL .EQ. b%MPI_VAL)
|
||||||
|
end function ompi_datatype_op_eq
|
||||||
|
|
||||||
|
logical function ompi_errhandler_op_eq(a, b)
|
||||||
|
type(MPI_Errhandler), intent(in) :: a, b
|
||||||
|
ompi_errhandler_op_eq = (a%MPI_VAL .EQ. b%MPI_VAL)
|
||||||
|
end function ompi_errhandler_op_eq
|
||||||
|
|
||||||
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
logical function ompi_file_op_eq(a, b)
|
||||||
|
type(MPI_File), intent(in) :: a, b
|
||||||
|
ompi_file_op_eq = (a%MPI_VAL .EQ. b%MPI_VAL)
|
||||||
|
end function ompi_file_op_eq
|
||||||
|
#endif
|
||||||
|
|
||||||
|
logical function ompi_group_op_eq(a, b)
|
||||||
|
type(MPI_Group), intent(in) :: a, b
|
||||||
|
ompi_group_op_eq = (a%MPI_VAL .EQ. b%MPI_VAL)
|
||||||
|
end function ompi_group_op_eq
|
||||||
|
|
||||||
|
logical function ompi_info_op_eq(a, b)
|
||||||
|
type(MPI_Info), intent(in) :: a, b
|
||||||
|
ompi_info_op_eq = (a%MPI_VAL .EQ. b%MPI_VAL)
|
||||||
|
end function ompi_info_op_eq
|
||||||
|
|
||||||
|
logical function ompi_message_op_eq(a, b)
|
||||||
|
type(MPI_Message), intent(in) :: a, b
|
||||||
|
ompi_message_op_eq = (a%MPI_VAL .EQ. b%MPI_VAL)
|
||||||
|
end function ompi_message_op_eq
|
||||||
|
|
||||||
|
logical function ompi_op_op_eq(a, b)
|
||||||
|
type(MPI_Op), intent(in) :: a, b
|
||||||
|
ompi_op_op_eq = (a%MPI_VAL .EQ. b%MPI_VAL)
|
||||||
|
end function ompi_op_op_eq
|
||||||
|
|
||||||
|
logical function ompi_request_op_eq(a, b)
|
||||||
|
type(MPI_Request), intent(in) :: a, b
|
||||||
|
ompi_request_op_eq = (a%MPI_VAL .EQ. b%MPI_VAL)
|
||||||
|
end function ompi_request_op_eq
|
||||||
|
|
||||||
|
logical function ompi_win_op_eq(a, b)
|
||||||
|
type(MPI_Win), intent(in) :: a, b
|
||||||
|
ompi_win_op_eq = (a%MPI_VAL .EQ. b%MPI_VAL)
|
||||||
|
end function ompi_win_op_eq
|
||||||
|
|
||||||
|
!... .NE. operator
|
||||||
|
!-----------------
|
||||||
|
logical function ompi_comm_op_ne(a, b)
|
||||||
|
type(MPI_Comm), intent(in) :: a, b
|
||||||
|
ompi_comm_op_ne = (a%MPI_VAL .NE. b%MPI_VAL)
|
||||||
|
end function ompi_comm_op_ne
|
||||||
|
|
||||||
|
logical function ompi_datatype_op_ne(a, b)
|
||||||
|
type(MPI_Datatype), intent(in) :: a, b
|
||||||
|
ompi_datatype_op_ne = (a%MPI_VAL .NE. b%MPI_VAL)
|
||||||
|
end function ompi_datatype_op_ne
|
||||||
|
|
||||||
|
logical function ompi_errhandler_op_ne(a, b)
|
||||||
|
type(MPI_Errhandler), intent(in) :: a, b
|
||||||
|
ompi_errhandler_op_ne = (a%MPI_VAL .NE. b%MPI_VAL)
|
||||||
|
end function ompi_errhandler_op_ne
|
||||||
|
|
||||||
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
logical function ompi_file_op_ne(a, b)
|
||||||
|
type(MPI_File), intent(in) :: a, b
|
||||||
|
ompi_file_op_ne = (a%MPI_VAL .NE. b%MPI_VAL)
|
||||||
|
end function ompi_file_op_ne
|
||||||
|
#endif
|
||||||
|
|
||||||
|
logical function ompi_group_op_ne(a, b)
|
||||||
|
type(MPI_Group), intent(in) :: a, b
|
||||||
|
ompi_group_op_ne = (a%MPI_VAL .NE. b%MPI_VAL)
|
||||||
|
end function ompi_group_op_ne
|
||||||
|
|
||||||
|
logical function ompi_info_op_ne(a, b)
|
||||||
|
type(MPI_Info), intent(in) :: a, b
|
||||||
|
ompi_info_op_ne = (a%MPI_VAL .NE. b%MPI_VAL)
|
||||||
|
end function ompi_info_op_ne
|
||||||
|
|
||||||
|
logical function ompi_message_op_ne(a, b)
|
||||||
|
type(MPI_Message), intent(in) :: a, b
|
||||||
|
ompi_message_op_ne = (a%MPI_VAL .NE. b%MPI_VAL)
|
||||||
|
end function ompi_message_op_ne
|
||||||
|
|
||||||
|
logical function ompi_op_op_ne(a, b)
|
||||||
|
type(MPI_Op), intent(in) :: a, b
|
||||||
|
ompi_op_op_ne = (a%MPI_VAL .NE. b%MPI_VAL)
|
||||||
|
end function ompi_op_op_ne
|
||||||
|
|
||||||
|
logical function ompi_request_op_ne(a, b)
|
||||||
|
type(MPI_Request), intent(in) :: a, b
|
||||||
|
ompi_request_op_ne = (a%MPI_VAL .NE. b%MPI_VAL)
|
||||||
|
end function ompi_request_op_ne
|
||||||
|
|
||||||
|
logical function ompi_win_op_ne(a, b)
|
||||||
|
type(MPI_Win), intent(in) :: a, b
|
||||||
|
ompi_win_op_ne = (a%MPI_VAL .NE. b%MPI_VAL)
|
||||||
|
end function ompi_win_op_ne
|
||||||
|
|
||||||
end module mpi_f08_types
|
end module mpi_f08_types
|
||||||
|
@ -461,7 +461,7 @@ subroutine PMPI_Testall_f08(count,array_of_requests,flag,array_of_statuses,ierro
|
|||||||
INTEGER, INTENT(IN) :: count
|
INTEGER, INTENT(IN) :: count
|
||||||
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
||||||
LOGICAL, INTENT(OUT) :: flag
|
LOGICAL, INTENT(OUT) :: flag
|
||||||
TYPE(MPI_Status) :: array_of_statuses(count)
|
TYPE(MPI_Status) :: array_of_statuses(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
end subroutine PMPI_Testall_f08
|
end subroutine PMPI_Testall_f08
|
||||||
end interface PMPI_Testall
|
end interface PMPI_Testall
|
||||||
@ -523,7 +523,7 @@ subroutine PMPI_Waitall_f08(count,array_of_requests,array_of_statuses,ierror &
|
|||||||
implicit none
|
implicit none
|
||||||
INTEGER, INTENT(IN) :: count
|
INTEGER, INTENT(IN) :: count
|
||||||
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
||||||
TYPE(MPI_Status) :: array_of_statuses(count)
|
TYPE(MPI_Status) :: array_of_statuses(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
end subroutine PMPI_Waitall_f08
|
end subroutine PMPI_Waitall_f08
|
||||||
end interface PMPI_Waitall
|
end interface PMPI_Waitall
|
||||||
@ -2564,7 +2564,7 @@ subroutine PMPI_Error_string_f08(errorcode,string,resultlen,ierror)
|
|||||||
end subroutine PMPI_Error_string_f08
|
end subroutine PMPI_Error_string_f08
|
||||||
end interface PMPI_Error_string
|
end interface PMPI_Error_string
|
||||||
|
|
||||||
#if OMPI_PROFILE_FILE_INTERFACE
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
|
||||||
interface PMPI_File_call_errhandler
|
interface PMPI_File_call_errhandler
|
||||||
subroutine PMPI_File_call_errhandler_f08(fh,errorcode,ierror &
|
subroutine PMPI_File_call_errhandler_f08(fh,errorcode,ierror &
|
||||||
@ -2611,7 +2611,7 @@ subroutine PMPI_File_set_errhandler_f08(file,errhandler,ierror &
|
|||||||
end subroutine PMPI_File_set_errhandler_f08
|
end subroutine PMPI_File_set_errhandler_f08
|
||||||
end interface PMPI_File_set_errhandler
|
end interface PMPI_File_set_errhandler
|
||||||
|
|
||||||
#endif ! OMPI_PROFILE_FILE_INTERFACE
|
#endif ! OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
|
||||||
interface PMPI_Finalize
|
interface PMPI_Finalize
|
||||||
subroutine PMPI_Finalize_f08(ierror &
|
subroutine PMPI_Finalize_f08(ierror &
|
||||||
@ -2903,7 +2903,7 @@ subroutine PMPI_Comm_spawn_f08(command,argv,maxprocs,info,root,comm,intercomm, &
|
|||||||
TYPE(MPI_Info), INTENT(IN) :: info
|
TYPE(MPI_Info), INTENT(IN) :: info
|
||||||
TYPE(MPI_Comm), INTENT(IN) :: comm
|
TYPE(MPI_Comm), INTENT(IN) :: comm
|
||||||
TYPE(MPI_Comm), INTENT(OUT) :: intercomm
|
TYPE(MPI_Comm), INTENT(OUT) :: intercomm
|
||||||
INTEGER, INTENT(OUT) :: array_of_errcodes(*)
|
INTEGER :: array_of_errcodes(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
end subroutine PMPI_Comm_spawn_f08
|
end subroutine PMPI_Comm_spawn_f08
|
||||||
end interface PMPI_Comm_spawn
|
end interface PMPI_Comm_spawn
|
||||||
@ -2919,7 +2919,7 @@ subroutine PMPI_Comm_spawn_multiple_f08(count,array_of_commands,array_of_argv,ar
|
|||||||
TYPE(MPI_Info), INTENT(IN) :: array_of_info(*)
|
TYPE(MPI_Info), INTENT(IN) :: array_of_info(*)
|
||||||
TYPE(MPI_Comm), INTENT(IN) :: comm
|
TYPE(MPI_Comm), INTENT(IN) :: comm
|
||||||
TYPE(MPI_Comm), INTENT(OUT) :: intercomm
|
TYPE(MPI_Comm), INTENT(OUT) :: intercomm
|
||||||
INTEGER, INTENT(OUT) :: array_of_errcodes(*)
|
INTEGER :: array_of_errcodes(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
end subroutine PMPI_Comm_spawn_multiple_f08
|
end subroutine PMPI_Comm_spawn_multiple_f08
|
||||||
end interface PMPI_Comm_spawn_multiple
|
end interface PMPI_Comm_spawn_multiple
|
||||||
@ -3233,7 +3233,7 @@ subroutine PMPI_Status_set_elements_f08(status,datatype,count,ierror &
|
|||||||
end subroutine PMPI_Status_set_elements_f08
|
end subroutine PMPI_Status_set_elements_f08
|
||||||
end interface PMPI_Status_set_elements
|
end interface PMPI_Status_set_elements
|
||||||
|
|
||||||
#if OMPI_PROFILE_FILE_INTERFACE
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
|
||||||
interface PMPI_File_close
|
interface PMPI_File_close
|
||||||
subroutine PMPI_File_close_f08(fh,ierror &
|
subroutine PMPI_File_close_f08(fh,ierror &
|
||||||
@ -4004,7 +4004,7 @@ subroutine PMPI_File_write_shared_f08(fh,buf,count,datatype,status,ierror &
|
|||||||
end subroutine PMPI_File_write_shared_f08
|
end subroutine PMPI_File_write_shared_f08
|
||||||
end interface PMPI_File_write_shared
|
end interface PMPI_File_write_shared
|
||||||
|
|
||||||
#endif ! OMPI_PROFILE_FILE_INTERFACE
|
#endif ! OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
|
||||||
interface PMPI_Register_datarep
|
interface PMPI_Register_datarep
|
||||||
subroutine PMPI_Register_datarep_f08(datarep,read_conversion_fn,write_conversion_fn, &
|
subroutine PMPI_Register_datarep_f08(datarep,read_conversion_fn,write_conversion_fn, &
|
||||||
@ -4110,6 +4110,18 @@ subroutine PMPI_Comm_split_type_f08(comm,split_type,key,info,newcomm,ierror &
|
|||||||
end subroutine PMPI_Comm_split_type_f08
|
end subroutine PMPI_Comm_split_type_f08
|
||||||
end interface PMPI_Comm_split_type
|
end interface PMPI_Comm_split_type
|
||||||
|
|
||||||
|
interface PMPI_F_sync_reg
|
||||||
|
subroutine PMPI_F_sync_reg_f08(buf &
|
||||||
|
) OMPI_F08_INTERFACE_BIND_C("PMPI_F_sync_reg_f08")
|
||||||
|
implicit none
|
||||||
|
!DEC$ ATTRIBUTES NO_ARG_CHECK :: buf
|
||||||
|
!$PRAGMA IGNORE_TKR buf
|
||||||
|
!DIR$ IGNORE_TKR buf
|
||||||
|
!IBM* IGNORE_TKR buf
|
||||||
|
OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf
|
||||||
|
end subroutine PMPI_F_sync_reg_f08
|
||||||
|
end interface PMPI_F_sync_reg
|
||||||
|
|
||||||
interface PMPI_Get_library_version
|
interface PMPI_Get_library_version
|
||||||
subroutine PMPI_Get_library_version_f08(name,resultlen,ierror)
|
subroutine PMPI_Get_library_version_f08(name,resultlen,ierror)
|
||||||
use :: mpi_f08_types, only : MPI_MAX_PROCESSOR_NAME
|
use :: mpi_f08_types, only : MPI_MAX_PROCESSOR_NAME
|
||||||
|
@ -17,6 +17,9 @@
|
|||||||
#ifndef OMPI_FORTRAN_CONFIGURE_OUTPUT_H
|
#ifndef OMPI_FORTRAN_CONFIGURE_OUTPUT_H
|
||||||
#define OMPI_FORTRAN_CONFIGURE_OUTPUT_H
|
#define OMPI_FORTRAN_CONFIGURE_OUTPUT_H
|
||||||
|
|
||||||
|
! Whether we're building the MPI IO interface or not
|
||||||
|
#define OMPI_PROVIDE_MPI_FILE_INTERFACE @OMPI_PROVIDE_MPI_FILE_INTERFACE@
|
||||||
|
|
||||||
! Whether we're using wrapper F08 functions or not
|
! Whether we're using wrapper F08 functions or not
|
||||||
#define OMPI_FORTRAN_NEED_WRAPPER_ROUTINES @OMPI_FORTRAN_NEED_WRAPPER_ROUTINES@
|
#define OMPI_FORTRAN_NEED_WRAPPER_ROUTINES @OMPI_FORTRAN_NEED_WRAPPER_ROUTINES@
|
||||||
|
|
||||||
|
@ -144,6 +144,7 @@ libmpi_mpifh_la_SOURCES += \
|
|||||||
error_class_f.c \
|
error_class_f.c \
|
||||||
error_string_f.c \
|
error_string_f.c \
|
||||||
exscan_f.c \
|
exscan_f.c \
|
||||||
|
f_sync_reg_f.c \
|
||||||
finalized_f.c \
|
finalized_f.c \
|
||||||
finalize_f.c \
|
finalize_f.c \
|
||||||
free_mem_f.c \
|
free_mem_f.c \
|
||||||
|
73
ompi/mpi/fortran/mpif-h/f_sync_reg_f.c
Обычный файл
73
ompi/mpi/fortran/mpif-h/f_sync_reg_f.c
Обычный файл
@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||||
|
* University Research and Technology
|
||||||
|
* Corporation. All rights reserved.
|
||||||
|
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||||
|
* of Tennessee Research Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||||
|
* University of Stuttgart. All rights reserved.
|
||||||
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
|
* All rights reserved.
|
||||||
|
* Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2012 University of Oregon. All rights reserved.
|
||||||
|
* $COPYRIGHT$
|
||||||
|
*
|
||||||
|
* Additional copyrights may follow
|
||||||
|
*
|
||||||
|
* $HEADER$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ompi_config.h"
|
||||||
|
|
||||||
|
#include "ompi/mpi/fortran/mpif-h/bindings.h"
|
||||||
|
#include "ompi/mpi/fortran/base/constants.h"
|
||||||
|
|
||||||
|
#if OPAL_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER
|
||||||
|
#pragma weak PMPI_F_SYNC_REG = ompi_f_sync_reg_f
|
||||||
|
#pragma weak pmpi_f_sync_reg = ompi_f_sync_reg_f
|
||||||
|
#pragma weak pmpi_f_sync_reg_ = ompi_f_sync_reg_f
|
||||||
|
#pragma weak pmpi_f_sync_reg__ = ompi_f_sync_reg_f
|
||||||
|
|
||||||
|
#pragma weak PMPI_F_sync_reg_f = ompi_f_sync_reg_f
|
||||||
|
#pragma weak PMPI_F_sync_reg_f08 = ompi_f_sync_reg_f
|
||||||
|
#elif OMPI_PROFILE_LAYER
|
||||||
|
OMPI_GENERATE_F77_BINDINGS (PMPI_F_SYNC_REG,
|
||||||
|
pmpi_f_sync_reg,
|
||||||
|
pmpi_f_sync_reg_,
|
||||||
|
pmpi_f_sync_reg__,
|
||||||
|
pompi_f_sync_reg_f,
|
||||||
|
(char *buf),
|
||||||
|
(buf) )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if OPAL_HAVE_WEAK_SYMBOLS
|
||||||
|
#pragma weak MPI_F_SYNC_REG = ompi_f_sync_reg_f
|
||||||
|
#pragma weak mpi_f_sync_reg = ompi_f_sync_reg_f
|
||||||
|
#pragma weak mpi_f_sync_reg_ = ompi_f_sync_reg_f
|
||||||
|
#pragma weak mpi_f_sync_reg__ = ompi_f_sync_reg_f
|
||||||
|
|
||||||
|
#pragma weak MPI_F_sync_reg_f = ompi_f_sync_reg_f
|
||||||
|
#pragma weak MPI_F_sync_reg_f08 = ompi_f_sync_reg_f
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER
|
||||||
|
OMPI_GENERATE_F77_BINDINGS (MPI_F_SYNC_REG,
|
||||||
|
mpi_f_sync_reg,
|
||||||
|
mpi_f_sync_reg_,
|
||||||
|
mpi_f_sync_reg__,
|
||||||
|
ompi_f_sync_reg_f,
|
||||||
|
(char *buf),
|
||||||
|
(buf) )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if OMPI_PROFILE_LAYER && ! OPAL_HAVE_WEAK_SYMBOLS
|
||||||
|
#include "ompi/mpi/fortran/mpif-h/profile/defines.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void ompi_f_sync_reg_f(char *buf)
|
||||||
|
{
|
||||||
|
/* This is a noop in C to disable potential Fortran optimizations. */
|
||||||
|
return;
|
||||||
|
}
|
@ -113,6 +113,7 @@ nodist_libmpi_mpifh_pmpi_la_SOURCES = \
|
|||||||
perror_class_f.c \
|
perror_class_f.c \
|
||||||
perror_string_f.c \
|
perror_string_f.c \
|
||||||
pexscan_f.c \
|
pexscan_f.c \
|
||||||
|
pf_sync_reg_f.c \
|
||||||
pfinalized_f.c \
|
pfinalized_f.c \
|
||||||
pfinalize_f.c \
|
pfinalize_f.c \
|
||||||
pfree_mem_f.c \
|
pfree_mem_f.c \
|
||||||
|
@ -90,6 +90,7 @@
|
|||||||
#define ompi_error_class_f pompi_error_class_f
|
#define ompi_error_class_f pompi_error_class_f
|
||||||
#define ompi_error_string_f pompi_error_string_f
|
#define ompi_error_string_f pompi_error_string_f
|
||||||
#define ompi_exscan_f pompi_exscan_f
|
#define ompi_exscan_f pompi_exscan_f
|
||||||
|
#define ompi_f_sync_reg_f pompi_f_sync_reg_f
|
||||||
#define ompi_file_call_errhandler_f pompi_file_call_errhandler_f
|
#define ompi_file_call_errhandler_f pompi_file_call_errhandler_f
|
||||||
#define ompi_file_create_errhandler_f pompi_file_create_errhandler_f
|
#define ompi_file_create_errhandler_f pompi_file_create_errhandler_f
|
||||||
#define ompi_file_set_errhandler_f pompi_file_set_errhandler_f
|
#define ompi_file_set_errhandler_f pompi_file_set_errhandler_f
|
||||||
|
@ -146,6 +146,7 @@ PN2(void, MPI_Errhandler_set, mpi_errhandler_set, MPI_ERRHANDLER_SET, (MPI_Fint
|
|||||||
PN2(void, MPI_Error_class, mpi_error_class, MPI_ERROR_CLASS, (MPI_Fint *errorcode, MPI_Fint *errorclass, MPI_Fint *ierr));
|
PN2(void, MPI_Error_class, mpi_error_class, MPI_ERROR_CLASS, (MPI_Fint *errorcode, MPI_Fint *errorclass, MPI_Fint *ierr));
|
||||||
PN2(void, MPI_Error_string, mpi_error_string, MPI_ERROR_STRING, (MPI_Fint *errorcode, char *string, MPI_Fint *resultlen, MPI_Fint *ierr, int string_len));
|
PN2(void, MPI_Error_string, mpi_error_string, MPI_ERROR_STRING, (MPI_Fint *errorcode, char *string, MPI_Fint *resultlen, MPI_Fint *ierr, int string_len));
|
||||||
PN2(void, MPI_Exscan, mpi_exscan, MPI_EXSCAN, (char *sendbuf, char *recvbuf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *op, MPI_Fint *comm, MPI_Fint *ierr));
|
PN2(void, MPI_Exscan, mpi_exscan, MPI_EXSCAN, (char *sendbuf, char *recvbuf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *op, MPI_Fint *comm, MPI_Fint *ierr));
|
||||||
|
PN2(void, MPI_F_sync_reg, mpi_f_sync_reg, MPI_F_SYNC_REG, (char *buf));
|
||||||
PN2(void, MPI_File_call_errhandler, mpi_file_call_errhandler, MPI_FILE_CALL_ERRHANDLER, (MPI_Fint *fh, MPI_Fint *errorcode, MPI_Fint *ierr));
|
PN2(void, MPI_File_call_errhandler, mpi_file_call_errhandler, MPI_FILE_CALL_ERRHANDLER, (MPI_Fint *fh, MPI_Fint *errorcode, MPI_Fint *ierr));
|
||||||
PN2(void, MPI_File_create_errhandler, mpi_file_create_errhandler, MPI_FILE_CREATE_ERRHANDLER, (ompi_errhandler_fortran_handler_fn_t* function, MPI_Fint *errhandler, MPI_Fint *ierr));
|
PN2(void, MPI_File_create_errhandler, mpi_file_create_errhandler, MPI_FILE_CREATE_ERRHANDLER, (ompi_errhandler_fortran_handler_fn_t* function, MPI_Fint *errhandler, MPI_Fint *ierr));
|
||||||
PN2(void, MPI_File_set_errhandler, mpi_file_set_errhandler, MPI_FILE_SET_ERRHANDLER, (MPI_Fint *file, MPI_Fint *errhandler, MPI_Fint *ierr));
|
PN2(void, MPI_File_set_errhandler, mpi_file_set_errhandler, MPI_FILE_SET_ERRHANDLER, (MPI_Fint *file, MPI_Fint *errhandler, MPI_Fint *ierr));
|
||||||
|
@ -95,6 +95,7 @@ mpi_api_files = \
|
|||||||
error_class_f08.F90 \
|
error_class_f08.F90 \
|
||||||
error_string_f08.F90 \
|
error_string_f08.F90 \
|
||||||
exscan_f08.F90 \
|
exscan_f08.F90 \
|
||||||
|
f_sync_reg_f08.F90 \
|
||||||
finalized_f08.F90 \
|
finalized_f08.F90 \
|
||||||
finalize_f08.F90 \
|
finalize_f08.F90 \
|
||||||
free_mem_f08.F90 \
|
free_mem_f08.F90 \
|
||||||
@ -407,6 +408,7 @@ pmpi_api_files = \
|
|||||||
profile/perror_class_f08.F90 \
|
profile/perror_class_f08.F90 \
|
||||||
profile/perror_string_f08.F90 \
|
profile/perror_string_f08.F90 \
|
||||||
profile/pexscan_f08.F90 \
|
profile/pexscan_f08.F90 \
|
||||||
|
profile/pf_sync_reg_f08.F90 \
|
||||||
profile/pfinalized_f08.F90 \
|
profile/pfinalized_f08.F90 \
|
||||||
profile/pfinalize_f08.F90 \
|
profile/pfinalize_f08.F90 \
|
||||||
profile/pfree_mem_f08.F90 \
|
profile/pfree_mem_f08.F90 \
|
||||||
|
@ -25,10 +25,8 @@ OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_comm_self = {OMPI_MPI
|
|||||||
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_group_empty = {OMPI_MPI_GROUP_EMPTY};
|
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_group_empty = {OMPI_MPI_GROUP_EMPTY};
|
||||||
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_errors_are_fatal = {OMPI_MPI_ERRORS_ARE_FATAL};
|
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_errors_are_fatal = {OMPI_MPI_ERRORS_ARE_FATAL};
|
||||||
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_errors_return = {OMPI_MPI_ERRORS_RETURN};
|
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_errors_return = {OMPI_MPI_ERRORS_RETURN};
|
||||||
|
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_message_no_proc = {OMPI_MPI_MESSAGE_NO_PROC};
|
||||||
|
|
||||||
/*
|
|
||||||
* lookup table indices
|
|
||||||
*/
|
|
||||||
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_max = {OMPI_MPI_MAX};
|
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_max = {OMPI_MPI_MAX};
|
||||||
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_min = {OMPI_MPI_MIN};
|
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_min = {OMPI_MPI_MIN};
|
||||||
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_sum = {OMPI_MPI_SUM};
|
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_sum = {OMPI_MPI_SUM};
|
||||||
@ -55,6 +53,9 @@ OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_message_null = {OMPI_MPI_
|
|||||||
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_op_null = {OMPI_MPI_OP_NULL};
|
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_op_null = {OMPI_MPI_OP_NULL};
|
||||||
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_request_null = {OMPI_MPI_REQUEST_NULL};
|
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_request_null = {OMPI_MPI_REQUEST_NULL};
|
||||||
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_win_null = {OMPI_MPI_WIN_NULL};
|
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_win_null = {OMPI_MPI_WIN_NULL};
|
||||||
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
OMPI_DECLSPEC ompi_fortran_08_handle_t ompi_f08_mpi_file_null = {OMPI_MPI_FILE_NULL};
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* common block items from ompi/include/mpif-common.h
|
* common block items from ompi/include/mpif-common.h
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
||||||
* University Research and Technology
|
|
||||||
* Corporation. All rights reserved.
|
|
||||||
* Copyright (c) 2004-2006 The University of Tennessee and The University
|
|
||||||
* of Tennessee Research Foundation. All rights
|
|
||||||
* reserved.
|
|
||||||
* Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
|
|
||||||
* University of Stuttgart. All rights reserved.
|
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
||||||
* All rights reserved.
|
|
||||||
* Copyright (c) 2007-2009 Cisco Systems, Inc. All rights reserved.
|
|
||||||
* Copyright (c) 2008-2009 Sun Microsystems, Inc. All rights reserved.
|
|
||||||
* Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
|
||||||
* Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
|
||||||
* All rights reserved.
|
|
||||||
* $COPYRIGHT$
|
|
||||||
*
|
|
||||||
* Additional copyrights may follow
|
|
||||||
*
|
|
||||||
* $HEADER$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef USE_MPI_F08_CONSTANTS_H
|
|
||||||
#define USE_MPI_F08_CONSTANTS_H
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file contains macro definitions for parameter values used in the
|
|
||||||
* MPI_F08 Fortran bindings. The values are the same as those in
|
|
||||||
* ompi/include/mpif-common.h and are generated by the script
|
|
||||||
* ompi/include/mpif-common.pl.
|
|
||||||
*/
|
|
||||||
|
|
18
ompi/mpi/fortran/use-mpi-f08/f_sync_reg_f08.F90
Обычный файл
18
ompi/mpi/fortran/use-mpi-f08/f_sync_reg_f08.F90
Обычный файл
@ -0,0 +1,18 @@
|
|||||||
|
! -*- f90 -*-
|
||||||
|
!
|
||||||
|
! Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved.
|
||||||
|
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||||
|
! All rights reserved.
|
||||||
|
! Copyright (c) 2012 University of Oregon. All rights reserved.
|
||||||
|
! $COPYRIGHT$
|
||||||
|
|
||||||
|
#include "ompi/mpi/fortran/configure-fortran-output.h"
|
||||||
|
|
||||||
|
subroutine MPI_F_sync_reg_f08(buf)
|
||||||
|
use :: mpi_f08, only : ompi_f_sync_reg_f
|
||||||
|
implicit none
|
||||||
|
OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
|
||||||
|
|
||||||
|
call ompi_f_sync_reg_f(buf)
|
||||||
|
|
||||||
|
end subroutine MPI_F_sync_reg_f08
|
@ -3017,6 +3017,12 @@ subroutine ompi_comm_split_type_f(comm,split_type,key,info,newcomm,ierror) &
|
|||||||
INTEGER, INTENT(OUT) :: ierror
|
INTEGER, INTENT(OUT) :: ierror
|
||||||
end subroutine ompi_comm_split_type_f
|
end subroutine ompi_comm_split_type_f
|
||||||
|
|
||||||
|
subroutine ompi_f_sync_reg_f(buf) &
|
||||||
|
BIND(C, name="ompi_f_sync_reg_f")
|
||||||
|
implicit none
|
||||||
|
OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
|
||||||
|
end subroutine ompi_f_sync_reg_f
|
||||||
|
|
||||||
subroutine ompi_get_library_version_f(name,resultlen,ierror,name_len) &
|
subroutine ompi_get_library_version_f(name,resultlen,ierror,name_len) &
|
||||||
BIND(C, name="ompi_get_library_version_f")
|
BIND(C, name="ompi_get_library_version_f")
|
||||||
use, intrinsic :: ISO_C_BINDING, only : C_CHAR
|
use, intrinsic :: ISO_C_BINDING, only : C_CHAR
|
||||||
|
@ -3023,6 +3023,12 @@ subroutine pompi_comm_split_type_f(comm,split_type,key,info,newcomm,ierror) &
|
|||||||
INTEGER, INTENT(OUT) :: ierror
|
INTEGER, INTENT(OUT) :: ierror
|
||||||
end subroutine pompi_comm_split_type_f
|
end subroutine pompi_comm_split_type_f
|
||||||
|
|
||||||
|
subroutine pompi_f_sync_reg_f(buf) &
|
||||||
|
BIND(C, name="pompi_f_sync_reg_f")
|
||||||
|
implicit none
|
||||||
|
OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
|
||||||
|
end subroutine pompi_f_sync_reg_f
|
||||||
|
|
||||||
subroutine pompi_get_library_version_f(name,resultlen,ierror,name_len) &
|
subroutine pompi_get_library_version_f(name,resultlen,ierror,name_len) &
|
||||||
BIND(C, name="pompi_get_library_version_f")
|
BIND(C, name="pompi_get_library_version_f")
|
||||||
use, intrinsic :: ISO_C_BINDING, only : C_CHAR
|
use, intrinsic :: ISO_C_BINDING, only : C_CHAR
|
||||||
|
18
ompi/mpi/fortran/use-mpi-f08/profile/pf_sync_reg_f08.F90
Обычный файл
18
ompi/mpi/fortran/use-mpi-f08/profile/pf_sync_reg_f08.F90
Обычный файл
@ -0,0 +1,18 @@
|
|||||||
|
! -*- f90 -*-
|
||||||
|
!
|
||||||
|
! Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved.
|
||||||
|
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||||
|
! All rights reserved.
|
||||||
|
! Copyright (c) 2012 University of Oregon. All rights reserved.
|
||||||
|
! $COPYRIGHT$
|
||||||
|
|
||||||
|
#include "ompi/mpi/fortran/configure-fortran-output.h"
|
||||||
|
|
||||||
|
subroutine PMPI_F_sync_reg_f08(buf)
|
||||||
|
use :: mpi_f08, only : ompi_f_sync_reg_f
|
||||||
|
implicit none
|
||||||
|
OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
|
||||||
|
|
||||||
|
call ompi_f_sync_reg_f(buf)
|
||||||
|
|
||||||
|
end subroutine PMPI_F_sync_reg_f08
|
@ -12,7 +12,7 @@ subroutine PMPI_Testall_f08(count,array_of_requests,flag,array_of_statuses,ierro
|
|||||||
INTEGER, INTENT(IN) :: count
|
INTEGER, INTENT(IN) :: count
|
||||||
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
||||||
LOGICAL, INTENT(OUT) :: flag
|
LOGICAL, INTENT(OUT) :: flag
|
||||||
TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(count)
|
TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
integer :: c_ierror
|
integer :: c_ierror
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ subroutine PMPI_Waitall_f08(count,array_of_requests,array_of_statuses,ierror)
|
|||||||
implicit none
|
implicit none
|
||||||
INTEGER, INTENT(IN) :: count
|
INTEGER, INTENT(IN) :: count
|
||||||
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
||||||
TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(count)
|
TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
integer :: c_ierror
|
integer :: c_ierror
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ subroutine MPI_Testall_f08(count,array_of_requests,flag,array_of_statuses,ierror
|
|||||||
INTEGER, INTENT(IN) :: count
|
INTEGER, INTENT(IN) :: count
|
||||||
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
||||||
LOGICAL, INTENT(OUT) :: flag
|
LOGICAL, INTENT(OUT) :: flag
|
||||||
TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(count)
|
TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
integer :: c_ierror
|
integer :: c_ierror
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ subroutine MPI_Waitall_f08(count,array_of_requests,array_of_statuses,ierror)
|
|||||||
implicit none
|
implicit none
|
||||||
INTEGER, INTENT(IN) :: count
|
INTEGER, INTENT(IN) :: count
|
||||||
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
|
||||||
TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(count)
|
TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(*)
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
integer :: c_ierror
|
integer :: c_ierror
|
||||||
|
|
||||||
|
@ -13,16 +13,22 @@
|
|||||||
# mpi" MPI bindings.
|
# mpi" MPI bindings.
|
||||||
if OMPI_BUILD_FORTRAN_USEMPI_IGNORE_TKR_BINDINGS
|
if OMPI_BUILD_FORTRAN_USEMPI_IGNORE_TKR_BINDINGS
|
||||||
|
|
||||||
|
AM_CPPFLAGS = -DOMPI_PROFILE_LAYER=0 -DOMPI_COMPILING_FORTRAN_WRAPPERS=1
|
||||||
|
|
||||||
AM_FCFLAGS = -I$(top_builddir)/ompi/include -I$(top_srcdir)/ompi/include \
|
AM_FCFLAGS = -I$(top_builddir)/ompi/include -I$(top_srcdir)/ompi/include \
|
||||||
-I$(top_builddir) -I$(top_srcdir) $(FCFLAGS_f90)
|
-I$(top_builddir) -I$(top_srcdir) $(FCFLAGS_f90)
|
||||||
|
|
||||||
lib_LTLIBRARIES = libmpi_usempi_ignore_tkr.la
|
lib_LTLIBRARIES = libmpi_usempi_ignore_tkr.la
|
||||||
|
|
||||||
mpi-ignore-tkr.F90: mpi-ignore-tkr-interfaces.h
|
mpi-ignore-tkr-interfaces.h: mpi-ignore-tkr-interfaces.h.in
|
||||||
mpi-ignore-tkr.F90: mpi-ignore-tkr-file-interfaces.h
|
mpi-ignore-tkr-file-interfaces.h: mpi-ignore-tkr-file-interfaces.h.in
|
||||||
|
|
||||||
|
mpi-ignore-tkr.lo: mpi-ignore-tkr-interfaces.h
|
||||||
|
mpi-ignore-tkr.lo: mpi-ignore-tkr-file-interfaces.h
|
||||||
mpi-ignore-tkr.lo: mpi-ignore-tkr.F90
|
mpi-ignore-tkr.lo: mpi-ignore-tkr.F90
|
||||||
|
|
||||||
libmpi_usempi_ignore_tkr_la_SOURCES = mpi-ignore-tkr.F90
|
libmpi_usempi_ignore_tkr_la_SOURCES = \
|
||||||
|
mpi-ignore-tkr.F90
|
||||||
# These files are generated; do not distribute them
|
# These files are generated; do not distribute them
|
||||||
nodist_libmpi_usempi_ignore_tkr_la_SOURCES = \
|
nodist_libmpi_usempi_ignore_tkr_la_SOURCES = \
|
||||||
mpi-ignore-tkr-interfaces.h \
|
mpi-ignore-tkr-interfaces.h \
|
||||||
|
@ -3025,24 +3025,14 @@ end interface
|
|||||||
|
|
||||||
interface MPI_Testall
|
interface MPI_Testall
|
||||||
|
|
||||||
subroutine MPI_TestallS(count, array_of_requests, flag, array_of_statuses, ierr)
|
subroutine MPI_Testall(count, array_of_requests, flag, array_of_statuses, ierr)
|
||||||
include 'mpif-config.h'
|
include 'mpif-config.h'
|
||||||
integer, intent(in) :: count
|
integer, intent(in) :: count
|
||||||
integer, dimension(count), intent(inout) :: array_of_requests
|
integer, dimension(count), intent(inout) :: array_of_requests
|
||||||
logical, intent(out) :: flag
|
logical, intent(out) :: flag
|
||||||
integer, dimension(MPI_STATUS_SIZE, count), intent(out) :: array_of_statuses
|
integer, dimension(MPI_STATUS_SIZE, *), intent(out) :: array_of_statuses
|
||||||
integer, intent(out) :: ierr
|
integer, intent(out) :: ierr
|
||||||
end subroutine MPI_TestallS
|
end subroutine MPI_Testall
|
||||||
|
|
||||||
|
|
||||||
subroutine MPI_TestallI(count, array_of_requests, flag, array_of_statuses, ierr)
|
|
||||||
include 'mpif-config.h'
|
|
||||||
integer, intent(in) :: count
|
|
||||||
integer, dimension(count), intent(inout) :: array_of_requests
|
|
||||||
logical, intent(out) :: flag
|
|
||||||
double precision, intent(out) :: array_of_statuses
|
|
||||||
integer, intent(out) :: ierr
|
|
||||||
end subroutine MPI_TestallI
|
|
||||||
|
|
||||||
end interface
|
end interface
|
||||||
|
|
||||||
@ -3065,28 +3055,16 @@ end interface
|
|||||||
|
|
||||||
interface MPI_Testsome
|
interface MPI_Testsome
|
||||||
|
|
||||||
subroutine MPI_TestsomeS(incount, array_of_requests, outcount, array_of_indices, array_of_statuses&
|
subroutine MPI_Testsome(incount, array_of_requests, outcount, array_of_indices, array_of_statuses&
|
||||||
, ierr)
|
, ierr)
|
||||||
include 'mpif-config.h'
|
include 'mpif-config.h'
|
||||||
integer, intent(in) :: incount
|
integer, intent(in) :: incount
|
||||||
integer, dimension(incount), intent(inout) :: array_of_requests
|
integer, dimension(incount), intent(inout) :: array_of_requests
|
||||||
integer, intent(out) :: outcount
|
integer, intent(out) :: outcount
|
||||||
integer, dimension(*), intent(out) :: array_of_indices
|
integer, dimension(*), intent(out) :: array_of_indices
|
||||||
integer, dimension(MPI_STATUS_SIZE, incount), intent(out) :: array_of_statuses
|
integer, dimension(MPI_STATUS_SIZE, *), intent(out) :: array_of_statuses
|
||||||
integer, intent(out) :: ierr
|
integer, intent(out) :: ierr
|
||||||
end subroutine MPI_TestsomeS
|
end subroutine MPI_Testsome
|
||||||
|
|
||||||
|
|
||||||
subroutine MPI_TestsomeI(incount, array_of_requests, outcount, array_of_indices, array_of_statuses&
|
|
||||||
, ierr)
|
|
||||||
include 'mpif-config.h'
|
|
||||||
integer, intent(in) :: incount
|
|
||||||
integer, dimension(incount), intent(inout) :: array_of_requests
|
|
||||||
integer, intent(out) :: outcount
|
|
||||||
integer, dimension(*), intent(out) :: array_of_indices
|
|
||||||
double precision, intent(out) :: array_of_statuses
|
|
||||||
integer, intent(out) :: ierr
|
|
||||||
end subroutine MPI_TestsomeI
|
|
||||||
|
|
||||||
end interface
|
end interface
|
||||||
|
|
||||||
@ -3650,22 +3628,13 @@ end interface
|
|||||||
|
|
||||||
interface MPI_Waitall
|
interface MPI_Waitall
|
||||||
|
|
||||||
subroutine MPI_WaitallS(count, array_of_requests, array_of_statuses, ierr)
|
subroutine MPI_Waitall(count, array_of_requests, array_of_statuses, ierr)
|
||||||
include 'mpif-config.h'
|
include 'mpif-config.h'
|
||||||
integer, intent(in) :: count
|
integer, intent(in) :: count
|
||||||
integer, dimension(count), intent(inout) :: array_of_requests
|
integer, dimension(count), intent(inout) :: array_of_requests
|
||||||
integer, dimension(MPI_STATUS_SIZE, count), intent(out) :: array_of_statuses
|
integer, dimension(MPI_STATUS_SIZE, *), intent(out) :: array_of_statuses
|
||||||
integer, intent(out) :: ierr
|
integer, intent(out) :: ierr
|
||||||
end subroutine MPI_WaitallS
|
end subroutine MPI_Waitall
|
||||||
|
|
||||||
|
|
||||||
subroutine MPI_WaitallI(count, array_of_requests, array_of_statuses, ierr)
|
|
||||||
include 'mpif-config.h'
|
|
||||||
integer, intent(in) :: count
|
|
||||||
integer, dimension(count), intent(inout) :: array_of_requests
|
|
||||||
double precision, intent(out) :: array_of_statuses
|
|
||||||
integer, intent(out) :: ierr
|
|
||||||
end subroutine MPI_WaitallI
|
|
||||||
|
|
||||||
end interface
|
end interface
|
||||||
|
|
||||||
@ -3686,28 +3655,16 @@ end interface
|
|||||||
|
|
||||||
interface MPI_Waitsome
|
interface MPI_Waitsome
|
||||||
|
|
||||||
subroutine MPI_WaitsomeS(incount, array_of_requests, outcount, array_of_indices, array_of_statuses&
|
subroutine MPI_Waitsome(incount, array_of_requests, outcount, array_of_indices, array_of_statuses&
|
||||||
, ierr)
|
, ierr)
|
||||||
include 'mpif-config.h'
|
include 'mpif-config.h'
|
||||||
integer, intent(in) :: incount
|
integer, intent(in) :: incount
|
||||||
integer, dimension(incount), intent(inout) :: array_of_requests
|
integer, dimension(incount), intent(inout) :: array_of_requests
|
||||||
integer, intent(out) :: outcount
|
integer, intent(out) :: outcount
|
||||||
integer, dimension(*), intent(out) :: array_of_indices
|
integer, dimension(*), intent(out) :: array_of_indices
|
||||||
integer, dimension(MPI_STATUS_SIZE, incount), intent(out) :: array_of_statuses
|
integer, dimension(MPI_STATUS_SIZE, *), intent(out) :: array_of_statuses
|
||||||
integer, intent(out) :: ierr
|
integer, intent(out) :: ierr
|
||||||
end subroutine MPI_WaitsomeS
|
end subroutine MPI_Waitsome
|
||||||
|
|
||||||
|
|
||||||
subroutine MPI_WaitsomeI(incount, array_of_requests, outcount, array_of_indices, array_of_statuses&
|
|
||||||
, ierr)
|
|
||||||
include 'mpif-config.h'
|
|
||||||
integer, intent(in) :: incount
|
|
||||||
integer, dimension(incount), intent(inout) :: array_of_requests
|
|
||||||
integer, intent(out) :: outcount
|
|
||||||
integer, dimension(*), intent(out) :: array_of_indices
|
|
||||||
double precision, intent(out) :: array_of_statuses
|
|
||||||
integer, intent(out) :: ierr
|
|
||||||
end subroutine MPI_WaitsomeI
|
|
||||||
|
|
||||||
end interface
|
end interface
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
! -*- f90 -*-
|
||||||
!
|
!
|
||||||
! Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
! Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||||
! University Research and Technology
|
! University Research and Technology
|
||||||
@ -17,9 +18,18 @@
|
|||||||
! $HEADER$
|
! $HEADER$
|
||||||
!
|
!
|
||||||
|
|
||||||
|
#include "ompi/mpi/fortran/configure-fortran-output.h"
|
||||||
|
|
||||||
module mpi
|
module mpi
|
||||||
|
|
||||||
include "mpif-common.h"
|
include "mpif-config.h"
|
||||||
|
include "mpif-constants.h"
|
||||||
|
include "mpif-handles.h"
|
||||||
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
include "mpif-io-constants.h"
|
||||||
|
include "mpif-io-handles.h"
|
||||||
|
#endif
|
||||||
|
include "mpif-sentinels.h"
|
||||||
|
|
||||||
! The MPI attribute callback functions need to be explictly called out
|
! The MPI attribute callback functions need to be explictly called out
|
||||||
! so that they don't end up in the MPI namespace. See a longer
|
! so that they don't end up in the MPI namespace. See a longer
|
||||||
@ -34,7 +44,7 @@ module mpi
|
|||||||
! The ignore-TKR version of the MPI interfaces
|
! The ignore-TKR version of the MPI interfaces
|
||||||
|
|
||||||
include "ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-interfaces.h"
|
include "ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-interfaces.h"
|
||||||
#if OMPI_PROVIDE_FILE_INTERFACE
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
include "ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h"
|
include "ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ if OMPI_BUILD_FORTRAN_USEMPI_TKR_BINDINGS
|
|||||||
# mpi-f90-interfaces.h |
|
# mpi-f90-interfaces.h |
|
||||||
# | |
|
# | |
|
||||||
# \|/ \|/
|
# \|/ \|/
|
||||||
# used by mpi.f90 used by mpi_*.f90
|
# used by mpi.F90 used by mpi_*.f90
|
||||||
# / | |
|
# / | |
|
||||||
# / \|/ \|/
|
# / \|/ \|/
|
||||||
# / generates mpi.o generates mpi_*.o
|
# / generates mpi.o generates mpi_*.o
|
||||||
@ -116,30 +116,30 @@ $(nodist_libmpi_usempi_la_SOURCES): fortran_kinds.sh
|
|||||||
|
|
||||||
# Automake doesn't know how to do F90 dependency analysis, so manually
|
# Automake doesn't know how to do F90 dependency analysis, so manually
|
||||||
# list this here (i.e., "mpi-f90-interfaces.h" is included in
|
# list this here (i.e., "mpi-f90-interfaces.h" is included in
|
||||||
# mpi.f90).
|
# mpi.F90).
|
||||||
|
|
||||||
# Print a warning indicating that compiling mpi.f90 can take a while.
|
# Print a warning indicating that compiling mpi.F90 can take a while.
|
||||||
# The only way to do this portably is to have our own rules for mpi.o
|
# The only way to do this portably is to have our own rules for mpi.o
|
||||||
# and mpi.obj (having a "fake" target that just has echo statement in
|
# and mpi.obj (having a "fake" target that just has echo statement in
|
||||||
# it may trigger mpi.o|obj to be rebuilt because the fake name doesn't
|
# it may trigger mpi.o|obj to be rebuilt because the fake name doesn't
|
||||||
# exist; there aren't good portable ways to indicate that the target
|
# exist; there aren't good portable ways to indicate that the target
|
||||||
# name is fake and should never exist).
|
# name is fake and should never exist).
|
||||||
|
|
||||||
# Note the "-I." in the commands below. This is because mpi.f90
|
# Note the "-I." in the commands below. This is because mpi.F90
|
||||||
# includes mpi-f90-interfaces.h, which will be in the build tree
|
# includes mpi-f90-interfaces.h, which will be in the build tree
|
||||||
# (i.e., the current directory) because it is generated.
|
# (i.e., the current directory) because it is generated.
|
||||||
|
|
||||||
mpi.o: mpi.f90 mpi-f90-interfaces.h
|
mpi.o: mpi.F90 mpi-f90-interfaces.h
|
||||||
@echo "***************************************************************"
|
@echo "***************************************************************"
|
||||||
@echo "* Compiling the mpi.f90 file may take a few minutes."
|
@echo "* Compiling the mpi.F90 file may take a few minutes."
|
||||||
@echo "* This is quite normal -- do not be alarmed if the compile"
|
@echo "* This is quite normal -- do not be alarmed if the compile"
|
||||||
@echo "* process seems to 'hang' at this point for several minutes."
|
@echo "* process seems to 'hang' at this point for several minutes."
|
||||||
@echo "***************************************************************"
|
@echo "***************************************************************"
|
||||||
$(FCCOMPILE) -c -I. -o $@ $(FCFLAGS_f90) $<
|
$(FCCOMPILE) -c -I. -o $@ $(FCFLAGS_f90) $<
|
||||||
|
|
||||||
mpi.obj: mpi.f90 mpi-f90-interfaces.h
|
mpi.obj: mpi.F90 mpi-f90-interfaces.h
|
||||||
@echo "***************************************************************"
|
@echo "***************************************************************"
|
||||||
@echo "* Compiling the mpi.f90 file may take a few minutes."
|
@echo "* Compiling the mpi.F90 file may take a few minutes."
|
||||||
@echo "* This is quite normal -- do not be alarmed if the compile"
|
@echo "* This is quite normal -- do not be alarmed if the compile"
|
||||||
@echo "* process seems to 'hang' at this point for several minutes."
|
@echo "* process seems to 'hang' at this point for several minutes."
|
||||||
@echo "***************************************************************"
|
@echo "***************************************************************"
|
||||||
@ -148,13 +148,13 @@ mpi.obj: mpi.f90 mpi-f90-interfaces.h
|
|||||||
BUILT_SOURCES = mpi-f90-interfaces.h
|
BUILT_SOURCES = mpi-f90-interfaces.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# mpi.f90 is the only f90 source file directly in libmpif90 that gets
|
# mpi.F90 is the only f90 source file directly in libmpif90 that gets
|
||||||
# distributed.
|
# distributed.
|
||||||
|
|
||||||
libmpi_usempi_la_SOURCES = \
|
libmpi_usempi_la_SOURCES = \
|
||||||
attr_fn-f90-interfaces.h \
|
attr_fn-f90-interfaces.h \
|
||||||
conversion_fn_null-f90-interface.h \
|
conversion_fn_null-f90-interface.h \
|
||||||
mpi.f90
|
mpi.F90
|
||||||
libmpi_usempi_la_LIBADD = \
|
libmpi_usempi_la_LIBADD = \
|
||||||
$(top_builddir)/ompi/mpi/fortran/mpif-h/libmpi_mpifh.la
|
$(top_builddir)/ompi/mpi/fortran/mpif-h/libmpi_mpifh.la
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
! -*- f90 -*-
|
||||||
!
|
!
|
||||||
! Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
! Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||||
! University Research and Technology
|
! University Research and Technology
|
||||||
@ -17,9 +18,18 @@
|
|||||||
! $HEADER$
|
! $HEADER$
|
||||||
!
|
!
|
||||||
|
|
||||||
|
#include "ompi/mpi/fortran/configure-fortran-output.h"
|
||||||
|
|
||||||
module mpi
|
module mpi
|
||||||
|
|
||||||
include "mpif-common.h"
|
include "mpif-config.h"
|
||||||
|
include "mpif-constants.h"
|
||||||
|
include "mpif-handles.h"
|
||||||
|
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||||
|
include "mpif-io-constants.h"
|
||||||
|
include "mpif-io-handles.h"
|
||||||
|
#endif
|
||||||
|
include "mpif-sentinels.h"
|
||||||
|
|
||||||
! The MPI attribute callback functions need to be explictly called out
|
! The MPI attribute callback functions need to be explictly called out
|
||||||
! so that they don't end up in the MPI namespace. See a longer
|
! so that they don't end up in the MPI namespace. See a longer
|
@ -8521,25 +8521,23 @@ output_206() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
suffix=$1
|
procedure=$1
|
||||||
status_type=$2
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
subroutine MPI_Testall${suffix}(count, array_of_requests, flag, array_of_statuses, ierr)
|
subroutine ${procedure}(count, array_of_requests, flag, array_of_statuses, ierr)
|
||||||
include 'mpif-config.h'
|
include 'mpif-config.h'
|
||||||
integer, intent(in) :: count
|
integer, intent(in) :: count
|
||||||
integer, dimension(count), intent(inout) :: array_of_requests
|
integer, dimension(count), intent(inout) :: array_of_requests
|
||||||
logical, intent(out) :: flag
|
logical, intent(out) :: flag
|
||||||
$status_type, intent(out) :: array_of_statuses
|
integer, dimension(MPI_STATUS_SIZE, count), intent(out) :: array_of_statuses
|
||||||
integer, intent(out) :: ierr
|
integer, intent(out) :: ierr
|
||||||
end subroutine MPI_Testall${suffix}
|
end subroutine ${procedure}
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
start MPI_Testall small
|
start MPI_Testall small
|
||||||
output_206 S "integer, dimension(MPI_STATUS_SIZE, count)"
|
output_206 MPI_Testall
|
||||||
output_206 I "double precision"
|
|
||||||
end MPI_Testall
|
end MPI_Testall
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
@ -8577,27 +8575,25 @@ output_208() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
suffix=$1
|
procedure=$1
|
||||||
status_type=$2
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
subroutine MPI_Testsome${suffix}(incount, array_of_requests, outcount, array_of_indices, array_of_statuses&
|
subroutine ${procedure}(incount, array_of_requests, outcount, array_of_indices, array_of_statuses&
|
||||||
, ierr)
|
, ierr)
|
||||||
include 'mpif-config.h'
|
include 'mpif-config.h'
|
||||||
integer, intent(in) :: incount
|
integer, intent(in) :: incount
|
||||||
integer, dimension(incount), intent(inout) :: array_of_requests
|
integer, dimension(incount), intent(inout) :: array_of_requests
|
||||||
integer, intent(out) :: outcount
|
integer, intent(out) :: outcount
|
||||||
integer, dimension(*), intent(out) :: array_of_indices
|
integer, dimension(*), intent(out) :: array_of_indices
|
||||||
$status_type, intent(out) :: array_of_statuses
|
integer, dimension(MPI_STATUS_SIZE, *), intent(out) :: array_of_statuses
|
||||||
integer, intent(out) :: ierr
|
integer, intent(out) :: ierr
|
||||||
end subroutine MPI_Testsome${suffix}
|
end subroutine ${procedure}
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
start MPI_Testsome small
|
start MPI_Testsome small
|
||||||
output_208 S "integer, dimension(MPI_STATUS_SIZE, incount)"
|
output_208 MPI_Testsome
|
||||||
output_208 I "double precision"
|
|
||||||
end MPI_Testsome
|
end MPI_Testsome
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
@ -9658,24 +9654,22 @@ output_248() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
suffix=$1
|
procedure=$1
|
||||||
status_type=$2
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
subroutine MPI_Waitall${suffix}(count, array_of_requests, array_of_statuses, ierr)
|
subroutine ${procedure}(count, array_of_requests, array_of_statuses, ierr)
|
||||||
include 'mpif-config.h'
|
include 'mpif-config.h'
|
||||||
integer, intent(in) :: count
|
integer, intent(in) :: count
|
||||||
integer, dimension(count), intent(inout) :: array_of_requests
|
integer, dimension(count), intent(inout) :: array_of_requests
|
||||||
$status_type, intent(out) :: array_of_statuses
|
integer, dimension(MPI_STATUS_SIZE, *), intent(out) :: array_of_statuses
|
||||||
integer, intent(out) :: ierr
|
integer, intent(out) :: ierr
|
||||||
end subroutine MPI_Waitall${suffix}
|
end subroutine ${procedure}
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
start MPI_Waitall small
|
start MPI_Waitall small
|
||||||
output_248 S "integer, dimension(MPI_STATUS_SIZE, count)"
|
output_248 MPI_Waitall
|
||||||
output_248 I "double precision"
|
|
||||||
end MPI_Waitall
|
end MPI_Waitall
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
@ -9711,27 +9705,25 @@ output_250() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
suffix=$1
|
procedure=$1
|
||||||
status_type=$2
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
subroutine MPI_Waitsome${suffix}(incount, array_of_requests, outcount, array_of_indices, array_of_statuses&
|
subroutine ${procedure}(incount, array_of_requests, outcount, array_of_indices, array_of_statuses&
|
||||||
, ierr)
|
, ierr)
|
||||||
include 'mpif-config.h'
|
include 'mpif-config.h'
|
||||||
integer, intent(in) :: incount
|
integer, intent(in) :: incount
|
||||||
integer, dimension(incount), intent(inout) :: array_of_requests
|
integer, dimension(incount), intent(inout) :: array_of_requests
|
||||||
integer, intent(out) :: outcount
|
integer, intent(out) :: outcount
|
||||||
integer, dimension(*), intent(out) :: array_of_indices
|
integer, dimension(*), intent(out) :: array_of_indices
|
||||||
$status_type, intent(out) :: array_of_statuses
|
integer, dimension(MPI_STATUS_SIZE, *), intent(out) :: array_of_statuses
|
||||||
integer, intent(out) :: ierr
|
integer, intent(out) :: ierr
|
||||||
end subroutine MPI_Waitsome${suffix}
|
end subroutine ${procedure}
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
start MPI_Waitsome small
|
start MPI_Waitsome small
|
||||||
output_250 S "integer, dimension(MPI_STATUS_SIZE, incount)"
|
output_250 MPI_Waitsome
|
||||||
output_250 I "double precision"
|
|
||||||
end MPI_Waitsome
|
end MPI_Waitsome
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
@ -10560,14 +10552,13 @@ output_284() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
procedure=$1
|
procedure=$1
|
||||||
argv_type=$2
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
subroutine ${procedure}(count, array_of_commands, array_of_argv, array_of_maxprocs, array_of_info, &
|
subroutine ${procedure}(count, array_of_commands, array_of_argv, array_of_maxprocs, array_of_info, &
|
||||||
root, comm, intercomm, array_of_errcodes, ierr)
|
root, comm, intercomm, array_of_errcodes, ierr)
|
||||||
integer, intent(in) :: count
|
integer, intent(in) :: count
|
||||||
character(len=*), dimension(*), intent(in) :: array_of_commands
|
character(len=*), dimension(*), intent(in) :: array_of_commands
|
||||||
$argv_type, intent(in) :: array_of_argv
|
character(len=*), dimension(count,*), intent(in) :: array_of_argv
|
||||||
integer, dimension(*), intent(in) :: array_of_maxprocs
|
integer, dimension(*), intent(in) :: array_of_maxprocs
|
||||||
integer, dimension(*), intent(in) :: array_of_info
|
integer, dimension(*), intent(in) :: array_of_info
|
||||||
integer, intent(in) :: root
|
integer, intent(in) :: root
|
||||||
@ -10581,8 +10572,7 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
start MPI_Comm_spawn_multiple small
|
start MPI_Comm_spawn_multiple small
|
||||||
output_284 MPI_Comm_spawn_multipleA "character(len=*), dimension(count,*)"
|
output_284 MPI_Comm_spawn_multiple
|
||||||
output_284 MPI_Comm_spawn_multipleN "double precision"
|
|
||||||
end MPI_Comm_spawn_multiple
|
end MPI_Comm_spawn_multiple
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
|
@ -286,13 +286,13 @@ INST(int, MPI_FORTRAN_IN_PLACE, mpi_fortran_in_place,
|
|||||||
mpi_fortran_in_place_, mpi_fortran_in_place__);
|
mpi_fortran_in_place_, mpi_fortran_in_place__);
|
||||||
INST(char *, MPI_FORTRAN_ARGV_NULL, mpi_fortran_argv_null,
|
INST(char *, MPI_FORTRAN_ARGV_NULL, mpi_fortran_argv_null,
|
||||||
mpi_fortran_argv_null_, mpi_fortran_argv_null__);
|
mpi_fortran_argv_null_, mpi_fortran_argv_null__);
|
||||||
INST(double, MPI_FORTRAN_ARGVS_NULL, mpi_fortran_argvs_null,
|
INST(char *, MPI_FORTRAN_ARGVS_NULL, mpi_fortran_argvs_null,
|
||||||
mpi_fortran_argvs_null_, mpi_fortran_argvs_null__);
|
mpi_fortran_argvs_null_, mpi_fortran_argvs_null__);
|
||||||
INST(int *, MPI_FORTRAN_ERRCODES_IGNORE, mpi_fortran_errcodes_ignore,
|
INST(int *, MPI_FORTRAN_ERRCODES_IGNORE, mpi_fortran_errcodes_ignore,
|
||||||
mpi_fortran_errcodes_ignore_, mpi_fortran_errcodes_ignore__);
|
mpi_fortran_errcodes_ignore_, mpi_fortran_errcodes_ignore__);
|
||||||
INST(int *, MPI_FORTRAN_STATUS_IGNORE, mpi_fortran_status_ignore,
|
INST(int *, MPI_FORTRAN_STATUS_IGNORE, mpi_fortran_status_ignore,
|
||||||
mpi_fortran_status_ignore_, mpi_fortran_status_ignore__);
|
mpi_fortran_status_ignore_, mpi_fortran_status_ignore__);
|
||||||
INST (double, MPI_FORTRAN_STATUSES_IGNORE, mpi_fortran_statuses_ignore,
|
INST(int *, MPI_FORTRAN_STATUSES_IGNORE, mpi_fortran_statuses_ignore,
|
||||||
mpi_fortran_statuses_ignore_, mpi_fortran_statuses_ignore__);
|
mpi_fortran_statuses_ignore_, mpi_fortran_statuses_ignore__);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -87,7 +87,7 @@ void ompi_info_do_config(bool want_all)
|
|||||||
char *fortran_usempif08;
|
char *fortran_usempif08;
|
||||||
char *fortran_usempif08_compliance;
|
char *fortran_usempif08_compliance;
|
||||||
char *fortran_have_ignore_tkr;
|
char *fortran_have_ignore_tkr;
|
||||||
char *fortran_have_f08_assumed_shape;
|
char *fortran_have_f08_assumed_rank;
|
||||||
char *fortran_build_f08_subarrays;
|
char *fortran_build_f08_subarrays;
|
||||||
char *fortran_have_optional_args;
|
char *fortran_have_optional_args;
|
||||||
char *fortran_have_bind_c;
|
char *fortran_have_bind_c;
|
||||||
@ -156,7 +156,7 @@ void ompi_info_do_config(bool want_all)
|
|||||||
fortran_usempi = "no";
|
fortran_usempi = "no";
|
||||||
}
|
}
|
||||||
fortran_usempif08 = OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS ? "yes" : "no";
|
fortran_usempif08 = OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS ? "yes" : "no";
|
||||||
fortran_have_f08_assumed_shape = OMPI_FORTRAN_HAVE_F08_ASSUMED_SHAPE ?
|
fortran_have_f08_assumed_rank = OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK ?
|
||||||
"yes" : "no";
|
"yes" : "no";
|
||||||
fortran_build_f08_subarrays = OMPI_BUILD_FORTRAN_F08_SUBARRAYS ?
|
fortran_build_f08_subarrays = OMPI_BUILD_FORTRAN_F08_SUBARRAYS ?
|
||||||
"yes" : "no";
|
"yes" : "no";
|
||||||
@ -345,8 +345,8 @@ void ompi_info_do_config(bool want_all)
|
|||||||
fortran_have_ignore_tkr);
|
fortran_have_ignore_tkr);
|
||||||
free(fortran_have_ignore_tkr);
|
free(fortran_have_ignore_tkr);
|
||||||
opal_info_out("Fort 08 assumed shape",
|
opal_info_out("Fort 08 assumed shape",
|
||||||
"compiler:fortran:f08_assumed_shape",
|
"compiler:fortran:f08_assumed_rank",
|
||||||
fortran_have_f08_assumed_shape);
|
fortran_have_f08_assumed_rank);
|
||||||
opal_info_out("Fort optional args",
|
opal_info_out("Fort optional args",
|
||||||
"compiler:fortran:optional_arguments",
|
"compiler:fortran:optional_arguments",
|
||||||
fortran_have_optional_args);
|
fortran_have_optional_args);
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user