Add support for F77/F90 in the Open MPI extensions interface system.
Per RFC from OMPI Devel list: * http://www.open-mpi.org/community/lists/devel/2011/06/9324.php This commit was SVN r24772.
Этот коммит содержится в:
родитель
033cbbed31
Коммит
0833734fcf
@ -4,6 +4,7 @@ dnl Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana
|
|||||||
dnl University Research and Technology
|
dnl University Research and Technology
|
||||||
dnl Corporation. All rights reserved.
|
dnl Corporation. All rights reserved.
|
||||||
dnl Copyright (c) 2009-2010 Cisco Systems, Inc. All rights reserved.
|
dnl Copyright (c) 2009-2010 Cisco Systems, Inc. All rights reserved.
|
||||||
|
dnl Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
|
||||||
dnl $COPYRIGHT$
|
dnl $COPYRIGHT$
|
||||||
dnl
|
dnl
|
||||||
dnl Additional copyrights may follow
|
dnl Additional copyrights may follow
|
||||||
@ -101,6 +102,10 @@ AC_DEFUN([EXT_CONFIGURE],[
|
|||||||
# first create the output include directory
|
# first create the output include directory
|
||||||
mkdir -p $outdir
|
mkdir -p $outdir
|
||||||
|
|
||||||
|
###############
|
||||||
|
# C Bindings
|
||||||
|
###############
|
||||||
|
|
||||||
# remove any previously generated #include files
|
# remove any previously generated #include files
|
||||||
mpi_ext_h=$outdir/mpi-ext.h
|
mpi_ext_h=$outdir/mpi-ext.h
|
||||||
rm -f $mpi_ext_h
|
rm -f $mpi_ext_h
|
||||||
@ -120,10 +125,74 @@ extern "C" {
|
|||||||
|
|
||||||
#define OMPI_HAVE_MPI_EXT 1
|
#define OMPI_HAVE_MPI_EXT 1
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
###############
|
||||||
|
# C++ Bindings
|
||||||
|
###############
|
||||||
|
|
||||||
|
# remove any previously generated #include files
|
||||||
|
mpicxx_ext_h=$outdir/mpicxx-ext.h
|
||||||
|
rm -f $mpicxx_ext_h
|
||||||
|
|
||||||
|
# Create the final mpi-ext.h file.
|
||||||
|
cat > $mpicxx_ext_h <<EOF
|
||||||
|
/*
|
||||||
|
* \$HEADER\$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OMPI_MPI_EXT_H
|
||||||
|
#define OMPI_MPI_EXT_H 1
|
||||||
|
|
||||||
|
#define OMPI_HAVE_MPI_EXT 1
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
###############
|
||||||
|
# F77 Bindings
|
||||||
|
###############
|
||||||
|
|
||||||
|
# remove any previously generated #include files
|
||||||
|
mpif_ext_h=$outdir/mpif-ext.h
|
||||||
|
rm -f $mpif_ext_h
|
||||||
|
|
||||||
|
# Create the final mpif-ext.h file.
|
||||||
|
cat > $mpif_ext_h <<EOF
|
||||||
|
! -*- fortran -*-
|
||||||
|
! \$HEADER\$
|
||||||
|
!
|
||||||
|
integer OMPI_HAVE_MPI_EXT
|
||||||
|
parameter (OMPI_HAVE_MPI_EXT=1)
|
||||||
|
!
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
###############
|
||||||
|
# F90 Bindings
|
||||||
|
###############
|
||||||
|
|
||||||
|
# remove any previously generated #include files
|
||||||
|
mpif90_ext_h=$outdir/mpif90-ext.f90
|
||||||
|
rm -f $mpif90_ext_h
|
||||||
|
|
||||||
|
# Create the final mpif90-ext.h file.
|
||||||
|
cat > $mpif90_ext_h <<EOF
|
||||||
|
! -*- fortran -*-
|
||||||
|
! \$HEADER\$
|
||||||
|
!
|
||||||
|
module mpi_ext
|
||||||
|
|
||||||
|
! Eventhough this is not a useful parameter (cannot be used as a
|
||||||
|
! preprocessor catch) define it to keep the linker from complaining
|
||||||
|
! during the build.
|
||||||
|
integer OMPI_HAVE_MPI_EXT
|
||||||
|
parameter (OMPI_HAVE_MPI_EXT=1)
|
||||||
|
!
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
#
|
#
|
||||||
# XXX: Left todo: Add header files for other languages
|
# Process each component
|
||||||
#
|
#
|
||||||
|
|
||||||
# remove any previously generated #include files
|
# remove any previously generated #include files
|
||||||
@ -140,6 +209,9 @@ EOF
|
|||||||
[static_components],
|
[static_components],
|
||||||
[static_ltlibs])])])
|
[static_ltlibs])])])
|
||||||
|
|
||||||
|
###############
|
||||||
|
# C Bindings
|
||||||
|
###############
|
||||||
# Create the final mpi-ext.h file.
|
# Create the final mpi-ext.h file.
|
||||||
cat >> $mpi_ext_h <<EOF
|
cat >> $mpi_ext_h <<EOF
|
||||||
|
|
||||||
@ -151,9 +223,32 @@ EOF
|
|||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
#
|
###############
|
||||||
# XXX: Left todo: Close header files for other languages
|
# C++ Bindings
|
||||||
#
|
###############
|
||||||
|
# Create the final mpicxx-ext.h file.
|
||||||
|
cat >> $mpicxx_ext_h <<EOF
|
||||||
|
|
||||||
|
#endif /* OMPI_MPI_EXT_H */
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
###############
|
||||||
|
# F77 Bindings
|
||||||
|
###############
|
||||||
|
# Create the final mpif-ext.h file.
|
||||||
|
cat >> $mpif_ext_h <<EOF
|
||||||
|
!
|
||||||
|
EOF
|
||||||
|
|
||||||
|
###############
|
||||||
|
# F90 Bindings
|
||||||
|
###############
|
||||||
|
# Create the final mpif90-ext.h file.
|
||||||
|
cat >> $mpif90_ext_h <<EOF
|
||||||
|
!
|
||||||
|
end module mpi_ext
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
# Create the final .h file that will be included in the type's
|
# Create the final .h file that will be included in the type's
|
||||||
@ -270,17 +365,28 @@ AC_DEFUN([EXT_PROCESS_COMPONENT],[
|
|||||||
component=$1
|
component=$1
|
||||||
|
|
||||||
# Output pretty results
|
# Output pretty results
|
||||||
AC_MSG_CHECKING([if MPI extension $component can compile])
|
AC_MSG_CHECKING([if MPI Extension $component can compile])
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
|
||||||
|
tmp[=]m4_translit([$1],[a-z],[A-Z])
|
||||||
|
component_define="OMPI_HAVE_MPI_EXT_${tmp}"
|
||||||
|
|
||||||
|
###############
|
||||||
|
# C Bindings
|
||||||
|
###############
|
||||||
|
test_header="${srcdir}/ompi/mpiext/$component/mpiext_${component}_c.h"
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([if MPI Extension $component has C bindings])
|
||||||
|
|
||||||
|
if test -e "$test_header" ; then
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
|
|
||||||
# Save the list of headers and convenience libraries that this component will output
|
# Save the list of headers and convenience libraries that this component will output
|
||||||
# There *must* be C bindings
|
|
||||||
EXT_C_HEADERS="$EXT_C_HEADERS mpiext/$component/mpiext_${component}_c.h"
|
EXT_C_HEADERS="$EXT_C_HEADERS mpiext/$component/mpiext_${component}_c.h"
|
||||||
EXT_C_LIBS="$EXT_C_LIBS mpiext/$component/libext_mpiext_${component}.la"
|
EXT_C_LIBS="$EXT_C_LIBS mpiext/$component/libext_mpiext_${component}.la"
|
||||||
|
$3="mpiext/${component}/libext_mpiext_${component}.la $$3"
|
||||||
|
|
||||||
component_header="mpiext_${component}_c.h"
|
component_header="mpiext_${component}_c.h"
|
||||||
tmp[=]m4_translit([$1],[a-z],[A-Z])
|
|
||||||
component_define="OMPI_HAVE_MPI_EXT_${tmp}"
|
|
||||||
|
|
||||||
cat >> $mpi_ext_h <<EOF
|
cat >> $mpi_ext_h <<EOF
|
||||||
/* Enabled Extension: $component */
|
/* Enabled Extension: $component */
|
||||||
@ -288,25 +394,154 @@ AC_DEFUN([EXT_PROCESS_COMPONENT],[
|
|||||||
#include "openmpi/ompi/mpiext/$component/$component_header"
|
#include "openmpi/ompi/mpiext/$component/$component_header"
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
else
|
||||||
|
# There *must* be C bindings
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
AC_MSG_WARN([C Bindings are required])
|
||||||
|
AC_MSG_ERROR([Cannot continue])
|
||||||
|
fi
|
||||||
|
|
||||||
|
###############
|
||||||
|
# C++ Bindings
|
||||||
|
###############
|
||||||
#
|
#
|
||||||
# XXX: Need to add conditional logic for components that do not supply
|
# Test if this extension has cxx bindings
|
||||||
# XXX: some or all of the other 3 interfaces [C++, F77, F90]. If they
|
# If not, skip this step.
|
||||||
# XXX: did provide those bindings, then add the header file to the relevant
|
|
||||||
# XXX: language binding's header file.
|
|
||||||
#
|
#
|
||||||
|
test_header="${srcdir}/ompi/mpiext/$component/mpiext_${component}_cxx.h"
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([if MPI Extension $component has CXX bindings])
|
||||||
|
|
||||||
|
if test -e "$test_header" ; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
|
||||||
EXT_CXX_HEADERS="$EXT_CXX_HEADERS mpiext/$component/mpiext_${component}_cxx.h"
|
EXT_CXX_HEADERS="$EXT_CXX_HEADERS mpiext/$component/mpiext_${component}_cxx.h"
|
||||||
EXT_CXX_LIBS="$EXT_CXX_LIBS mpiext/$component/libext_mpiext_${component}_cxx.la"
|
EXT_CXX_LIBS="$EXT_CXX_LIBS mpiext/$component/libext_mpiext_${component}_cxx.la"
|
||||||
|
$3="$$3 mpiext/${component}/libext_mpiext_${component}_cxx.la"
|
||||||
|
|
||||||
|
component_header="mpiext_${component}_cxx.h"
|
||||||
|
|
||||||
|
cat >> $mpicxx_ext_h <<EOF
|
||||||
|
/* Enabled Extension: $component */
|
||||||
|
#define $component_define 1
|
||||||
|
#include "openmpi/ompi/mpiext/$component/$component_header"
|
||||||
|
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
|
||||||
|
cat >> $mpicxx_ext_h <<EOF
|
||||||
|
/* Enabled Extension: $component
|
||||||
|
* No CXX Bindings available
|
||||||
|
*/
|
||||||
|
#define $component_define 0
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
###############
|
||||||
|
# F77 Bindings
|
||||||
|
###############
|
||||||
|
#
|
||||||
|
# Test if this extension has f77 bindings
|
||||||
|
# If not, skip this step.
|
||||||
|
#
|
||||||
|
test_header="${srcdir}/ompi/mpiext/$component/mpiext_${component}_f77.h"
|
||||||
|
enabled_f77=0
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([if MPI Extension $component has F77 bindings])
|
||||||
|
|
||||||
|
if test -e "$test_header" ; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
enabled_f77=1
|
||||||
|
|
||||||
EXT_F77_HEADERS="$EXT_F77_HEADERS mpiext/$component/mpiext_${component}_f77.h"
|
EXT_F77_HEADERS="$EXT_F77_HEADERS mpiext/$component/mpiext_${component}_f77.h"
|
||||||
EXT_F77_LIBS="$EXT_F77_LIBS mpiext/$component/libext_mpiext_${component}_f77.la"
|
EXT_F77_LIBS="$EXT_F77_LIBS mpiext/$component/libext_mpiext_${component}_f77.la"
|
||||||
|
$3="$$3 mpiext/${component}/libext_mpiext_${component}_f77.la"
|
||||||
|
|
||||||
|
component_header="mpiext_${component}_f77.h"
|
||||||
|
|
||||||
|
cat >> $mpif_ext_h <<EOF
|
||||||
|
!
|
||||||
|
! Enabled Extension: $component
|
||||||
|
!
|
||||||
|
integer $component_define
|
||||||
|
parameter ($component_define=1)
|
||||||
|
|
||||||
|
include 'openmpi/ompi/mpiext/$component/$component_header'
|
||||||
|
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
|
||||||
|
cat >> $mpif_ext_h <<EOF
|
||||||
|
!
|
||||||
|
! Enabled Extension: $component
|
||||||
|
! No F77 Bindings available
|
||||||
|
!
|
||||||
|
integer $component_define
|
||||||
|
parameter ($component_define=0)
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
###############
|
||||||
|
# F90 Bindings
|
||||||
|
###############
|
||||||
|
#
|
||||||
|
# Test if this extension has f90 bindings
|
||||||
|
# If not, skip this step.
|
||||||
|
#
|
||||||
|
test_header="${srcdir}/ompi/mpiext/$component/mpiext_${component}_f90.h"
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([if MPI Extension $component has F90 bindings])
|
||||||
|
|
||||||
|
if test -e "$test_header" ; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
|
||||||
EXT_F90_HEADERS="$EXT_F90_HEADERS mpiext/$component/mpiext_${component}_f90.h"
|
EXT_F90_HEADERS="$EXT_F90_HEADERS mpiext/$component/mpiext_${component}_f90.h"
|
||||||
EXT_F90_LIBS="$EXT_F90_LIBS mpiext/$component/libext_mpiext_${component}_f90.la"
|
#EXT_F90_LIBS="$EXT_F90_LIBS mpiext/$component/libext_mpiext_${component}_f90.la"
|
||||||
|
#$3="$$3 mpiext/${component}/libext_mpiext_${component}_f90.la"
|
||||||
|
|
||||||
|
component_header="mpiext_${component}_f90.h"
|
||||||
|
|
||||||
|
cat >> $mpif90_ext_h <<EOF
|
||||||
|
!
|
||||||
|
! Enabled Extension: $component
|
||||||
|
!
|
||||||
|
EOF
|
||||||
|
#
|
||||||
|
# Include the f77 header if it is available
|
||||||
|
# Cannot do this from inside the f90.h since, for VPATH builds,
|
||||||
|
# the top_ompi_srcdir is needed to find the header.
|
||||||
|
#
|
||||||
|
if test "$enabled_f77" = 1; then
|
||||||
|
f77_component_header="mpiext_${component}_f77.h"
|
||||||
|
cat >> $mpif90_ext_h <<EOF
|
||||||
|
include '$top_ompi_srcdir/ompi/mpiext/$component/$f77_component_header'
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >> $mpif90_ext_h <<EOF
|
||||||
|
include '$top_ompi_srcdir/ompi/mpiext/$component/$component_header'
|
||||||
|
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
|
||||||
|
cat >> $mpif90_ext_h <<EOF
|
||||||
|
!
|
||||||
|
! Enabled Extension: $component
|
||||||
|
! No F90 Bindings available
|
||||||
|
!
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Add this subdir to the mast list of all EXT component subdirs
|
# Add this subdir to the mast list of all EXT component subdirs
|
||||||
$2="$$2 ${component}"
|
$2="$$2 ${component}"
|
||||||
$3="mpiext/${component}/libext_mpiext_${component}.la $$3"
|
|
||||||
|
|
||||||
m4_ifdef([OMPI_MPIEXT_]$1[_NEED_INIT],
|
m4_ifdef([OMPI_MPIEXT_]$1[_NEED_INIT],
|
||||||
[echo "extern const ompi_mpiext_component_t ompi_mpiext_${component};" >> $outfile.extern
|
[echo "extern const ompi_mpiext_component_t ompi_mpiext_${component};" >> $outfile.extern
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
# 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-2010 Cisco Systems, Inc. All rights reserved.
|
# Copyright (c) 2006-2010 Cisco Systems, Inc. All rights reserved.
|
||||||
# Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
# Copyright (c) 2009-2011 Oak Ridge National Labs. All rights reserved.
|
||||||
# $COPYRIGHT$
|
# $COPYRIGHT$
|
||||||
#
|
#
|
||||||
# Additional copyrights may follow
|
# Additional copyrights may follow
|
||||||
@ -43,7 +43,9 @@ endif
|
|||||||
# counterparts (which AM automatically ships).
|
# counterparts (which AM automatically ships).
|
||||||
nodist_include_HEADERS = \
|
nodist_include_HEADERS = \
|
||||||
mpi.h \
|
mpi.h \
|
||||||
mpi-ext.h
|
mpi-ext.h \
|
||||||
|
mpicxx-ext.h \
|
||||||
|
mpif-ext.h
|
||||||
|
|
||||||
if OMPI_WANT_F77_BINDINGS
|
if OMPI_WANT_F77_BINDINGS
|
||||||
nodist_include_HEADERS += \
|
nodist_include_HEADERS += \
|
||||||
@ -51,6 +53,37 @@ nodist_include_HEADERS += \
|
|||||||
mpif-config.h
|
mpif-config.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
# If we have any F90 MPI extensions, compile and generate the
|
||||||
|
# mpi_ext F90 module file. Do this by compiling a fake library;
|
||||||
|
# the modulefile will be created as a side-effect of compiling
|
||||||
|
# mpif90-ext.f90.
|
||||||
|
noinst_LTLIBRARIES = libforce_f90_module_to_be_built.la
|
||||||
|
|
||||||
|
libforce_f90_module_to_be_built_la_SOURCES = mpif90-ext.f90
|
||||||
|
|
||||||
|
mpi_ext.$(OBJEXT): mpif90-ext.f90
|
||||||
|
$(FCCOMPILE) -c -I. -o $@ $(FCFLAGS_f90) $<
|
||||||
|
|
||||||
|
MOSTLYCLEANFILES = *.mod
|
||||||
|
|
||||||
|
#
|
||||||
|
# Install the generated .mod files. Unfortunately, each F90 compiler
|
||||||
|
# may generate different filenames, so we have to use a glob. :-(
|
||||||
|
#
|
||||||
|
install-exec-hook:
|
||||||
|
@ for file in `ls *.mod`; do \
|
||||||
|
echo $(INSTALL) $$file $(DESTDIR)$(libdir); \
|
||||||
|
$(INSTALL) $$file $(DESTDIR)$(libdir); \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-local:
|
||||||
|
@ for file in `ls *.mod`; do \
|
||||||
|
echo rm -f $(DESTDIR)$(libdir)/$$file; \
|
||||||
|
rm -f $(DESTDIR)$(libdir)/$$file; \
|
||||||
|
done
|
||||||
|
#endif
|
||||||
|
|
||||||
include ompi/Makefile.am
|
include ompi/Makefile.am
|
||||||
|
|
||||||
EXTRA_DIST = $(headers)
|
EXTRA_DIST = $(headers)
|
||||||
@ -64,5 +97,5 @@ endif
|
|||||||
# Remove the auto-generated mpi-ext.h file
|
# Remove the auto-generated mpi-ext.h file
|
||||||
# Since there is no mpi-ext.h.in, autogen does not know to cleanup this file.
|
# Since there is no mpi-ext.h.in, autogen does not know to cleanup this file.
|
||||||
distclean-local:
|
distclean-local:
|
||||||
rm -f mpi-ext.h
|
rm -f mpi-ext.h mpicxx-ext.h mpif-ext.h mpif90-ext.h
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
# Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana
|
# Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana
|
||||||
# University Research and Technology
|
# University Research and Technology
|
||||||
# Corporation. All rights reserved.
|
# Corporation. All rights reserved.
|
||||||
|
# Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
|
||||||
# $COPYRIGHT$
|
# $COPYRIGHT$
|
||||||
#
|
#
|
||||||
# Additional copyrights may follow
|
# Additional copyrights may follow
|
||||||
@ -9,21 +10,62 @@
|
|||||||
# $HEADER$
|
# $HEADER$
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# C bindings
|
||||||
|
#
|
||||||
headers = \
|
headers = \
|
||||||
mpiext_example_c.h
|
mpiext_example_c.h
|
||||||
|
|
||||||
sources = \
|
sources = \
|
||||||
c/progress.c
|
c/progress.c
|
||||||
|
|
||||||
lib = libext_mpiext_example.la
|
#
|
||||||
lib_sources = $(sources)
|
# F77 bindings
|
||||||
|
#
|
||||||
|
f77_sources =
|
||||||
|
if OMPI_WANT_F77_BINDINGS
|
||||||
|
headers += \
|
||||||
|
mpiext_example_f77.h
|
||||||
|
|
||||||
|
f77_sources += \
|
||||||
|
f77/progress_f.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
#
|
||||||
|
# F90 bindings
|
||||||
|
#
|
||||||
|
if OMPI_WANT_F77_BINDINGS
|
||||||
|
headers += \
|
||||||
|
mpiext_example_f90.h
|
||||||
|
endif
|
||||||
|
|
||||||
extcomponentdir = $(pkglibdir)
|
extcomponentdir = $(pkglibdir)
|
||||||
|
|
||||||
noinst_LTLIBRARIES = $(lib)
|
# For C Bindings
|
||||||
|
lib = libext_mpiext_example.la
|
||||||
|
lib_sources = $(sources)
|
||||||
|
|
||||||
libext_mpiext_example_la_SOURCES = $(lib_sources)
|
libext_mpiext_example_la_SOURCES = $(lib_sources)
|
||||||
libext_mpiext_example_la_LDFLAGS = -module -avoid-version
|
libext_mpiext_example_la_LDFLAGS = -module -avoid-version
|
||||||
|
|
||||||
|
# For F77 Bindings
|
||||||
|
AM_CPPFLAGS = -DOMPI_PROFILE_LAYER=0 -DOMPI_COMPILING_F77_WRAPPERS=1
|
||||||
|
f77_lib = libext_mpiext_example_f77.la
|
||||||
|
f77_lib_sources = $(f77_sources)
|
||||||
|
|
||||||
|
libext_mpiext_example_f77_la_SOURCES = $(f77_lib_sources)
|
||||||
|
libext_mpiext_example_f77_la_LIBADD = $(lib_sources)
|
||||||
|
libext_mpiext_example_f77_la_LDFLAGS = -module -avoid-version
|
||||||
|
|
||||||
|
# For F90 Bindings
|
||||||
|
#f90_lib = libext_mpiext_example_f90.la
|
||||||
|
#f90_lib_sources =
|
||||||
|
|
||||||
|
#libext_mpiext_example_f90_la_SOURCES = $(f90_lib_sources)
|
||||||
|
|
||||||
|
|
||||||
|
noinst_LTLIBRARIES = $(lib) $(f77_lib)
|
||||||
|
|
||||||
ompidir = $(includedir)/openmpi/ompi/mpiext/example
|
ompidir = $(includedir)/openmpi/ompi/mpiext/example
|
||||||
ompi_HEADERS = \
|
ompi_HEADERS = \
|
||||||
$(headers)
|
$(headers)
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
* Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana
|
* Copyright (c) 2004-2009 The Trustees of Indiana University and Indiana
|
||||||
* University Research and Technology
|
* University Research and Technology
|
||||||
* Corporation. All rights reserved.
|
* Corporation. All rights reserved.
|
||||||
|
* Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -44,9 +45,9 @@ ompi_mpiext_component_t ompi_mpiext_example = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
int OMPI_Progress(char * stmt)
|
int OMPI_Progress(int count)
|
||||||
{
|
{
|
||||||
printf("%s!!!\n", stmt);
|
printf("Count = %d!\n", count);
|
||||||
|
|
||||||
return MPI_SUCCESS;
|
return MPI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
40
ompi/mpiext/example/f77/progress_f.c
Обычный файл
40
ompi/mpiext/example/f77/progress_f.c
Обычный файл
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
|
||||||
|
* $COPYRIGHT$
|
||||||
|
*
|
||||||
|
* Additional copyrights may follow
|
||||||
|
*
|
||||||
|
* $HEADER$
|
||||||
|
*/
|
||||||
|
#include "ompi_config.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "ompi/mpi/f77/bindings.h"
|
||||||
|
#include "ompi/mpi/f77/constants.h"
|
||||||
|
|
||||||
|
#include "mpiext_example_c.h"
|
||||||
|
|
||||||
|
static void OMPI_Progress_f(MPI_Fint *count, MPI_Fint *ierr);
|
||||||
|
|
||||||
|
OMPI_DECLSPEC void OMPI_PROGRESS(MPI_Fint *count, MPI_Fint *ierr);
|
||||||
|
OMPI_DECLSPEC void ompi_progress(MPI_Fint *count, MPI_Fint *ierr);
|
||||||
|
OMPI_DECLSPEC void ompi_progress_(MPI_Fint *count, MPI_Fint *ierr);
|
||||||
|
OMPI_DECLSPEC void ompi_progress__(MPI_Fint *count, MPI_Fint *ierr);
|
||||||
|
|
||||||
|
void OMPI_PROGRESS(MPI_Fint *count, MPI_Fint *ierr) {
|
||||||
|
OMPI_Progress_f(count, ierr);
|
||||||
|
}
|
||||||
|
void ompi_progress(MPI_Fint *count, MPI_Fint *ierr) {
|
||||||
|
OMPI_Progress_f(count, ierr);
|
||||||
|
}
|
||||||
|
void ompi_progress_(MPI_Fint *count, MPI_Fint *ierr) {
|
||||||
|
OMPI_Progress_f(count, ierr);
|
||||||
|
}
|
||||||
|
void ompi_progress__(MPI_Fint *count, MPI_Fint *ierr) {
|
||||||
|
OMPI_Progress_f(count, ierr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void OMPI_Progress_f(MPI_Fint *count, MPI_Fint *ierr)
|
||||||
|
{
|
||||||
|
*ierr = OMPI_INT_2_FINT(OMPI_Progress(OMPI_FINT_2_INT(*count)));
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2004-2009 The Trustees of Indiana University.
|
* Copyright (c) 2004-2009 The Trustees of Indiana University.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
* Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -9,4 +10,4 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
OMPI_DECLSPEC int OMPI_Progress(char * stmt);
|
OMPI_DECLSPEC int OMPI_Progress(int count);
|
||||||
|
11
ompi/mpiext/example/mpiext_example_f77.h
Обычный файл
11
ompi/mpiext/example/mpiext_example_f77.h
Обычный файл
@ -0,0 +1,11 @@
|
|||||||
|
! -*- fortran -*-
|
||||||
|
!
|
||||||
|
! Copyright (c) 2010-2011 Oak Ridge National Labs. All rights reserved.
|
||||||
|
! $COPYRIGHT$
|
||||||
|
!
|
||||||
|
! Additional copyrights may follow
|
||||||
|
!
|
||||||
|
! $HEADER$
|
||||||
|
!
|
||||||
|
|
||||||
|
! Since we have only functions, there is nothing to declare
|
23
ompi/mpiext/example/mpiext_example_f90.h
Обычный файл
23
ompi/mpiext/example/mpiext_example_f90.h
Обычный файл
@ -0,0 +1,23 @@
|
|||||||
|
! -*- fortran -*-
|
||||||
|
!
|
||||||
|
! Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
|
||||||
|
! $COPYRIGHT$
|
||||||
|
!
|
||||||
|
! Additional copyrights may follow
|
||||||
|
!
|
||||||
|
! $HEADER$
|
||||||
|
!
|
||||||
|
|
||||||
|
! This whole file will be included in the mpif90_ext module interface section, so
|
||||||
|
! there's no need to declare that again here.
|
||||||
|
|
||||||
|
! Include the parameters for this extension
|
||||||
|
|
||||||
|
! Included from config/ompi_ext.m4 into mpif90-ext.f90
|
||||||
|
! include '../mpiext/example/mpiext_example_f77.h'
|
||||||
|
|
||||||
|
interface OMPI_Progress
|
||||||
|
subroutine ompi_progress(count)
|
||||||
|
integer, intent(IN) :: count
|
||||||
|
end subroutine ompi_progress
|
||||||
|
end interface OMPI_Progress
|
Загрузка…
x
Ссылка в новой задаче
Block a user