2005-01-18 19:15:55 +03:00
|
|
|
#! /bin/sh
|
|
|
|
|
2006-04-11 07:33:38 +04:00
|
|
|
#
|
|
|
|
# Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
|
|
|
|
# University Research and Technology
|
|
|
|
# Corporation. All rights reserved.
|
|
|
|
# Copyright (c) 2004-2005 The Regents of the University of California.
|
|
|
|
# All rights reserved.
|
|
|
|
# Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
|
|
|
|
# $COPYRIGHT$
|
|
|
|
#
|
|
|
|
# Additional copyrights may follow
|
|
|
|
#
|
|
|
|
# $HEADER$
|
|
|
|
#
|
|
|
|
|
|
|
|
#
|
|
|
|
# This file generates a Fortran code to bridge between an explicit F90
|
|
|
|
# generic interface and the F77 implementation.
|
|
|
|
#
|
|
|
|
# This file is automatically generated by either of the scripts
|
|
|
|
# ../xml/create_mpi_f90_medium.f90.sh or
|
|
|
|
# ../xml/create_mpi_f90_large.f90.sh
|
|
|
|
#
|
|
|
|
|
2005-08-24 06:11:02 +04:00
|
|
|
. "$1/fortran_kinds.sh"
|
2005-01-18 19:15:55 +03:00
|
|
|
|
2006-04-11 07:33:38 +04:00
|
|
|
# This entire file is only generated in medium/large modules. So if
|
|
|
|
# we're not at least medium, bail now.
|
2005-01-18 19:15:55 +03:00
|
|
|
|
2006-04-11 07:33:38 +04:00
|
|
|
check_size large
|
|
|
|
if test "$output" = "0"; then
|
|
|
|
exit 0
|
|
|
|
fi
|
2005-01-18 19:15:55 +03:00
|
|
|
|
2006-04-11 07:33:38 +04:00
|
|
|
# Ok, we should continue.
|
2005-01-18 19:15:55 +03:00
|
|
|
|
2006-04-11 07:33:38 +04:00
|
|
|
allranks="0 $ranks"
|
2005-01-18 19:15:55 +03:00
|
|
|
|
|
|
|
|
2006-04-11 07:33:38 +04:00
|
|
|
output() {
|
|
|
|
procedure=$1
|
|
|
|
rank=$2
|
|
|
|
type=$4
|
|
|
|
proc="$1$2D$3"
|
2005-01-18 19:15:55 +03:00
|
|
|
|
2006-04-11 07:33:38 +04:00
|
|
|
cat <<EOF
|
2005-01-18 19:15:55 +03:00
|
|
|
|
2006-04-11 07:33:38 +04:00
|
|
|
subroutine ${proc}(sendbuf, recvbuf, count, datatype, op, &
|
|
|
|
comm, ierr)
|
Bring over changes from the /tmp/fortran-stuff series:
- Make the F90 bindings compile and link properly with gfortran 4.0,
4.1, Intel 9.0, PGI 6.1, Sun (don't know version offhand -- the most
current as of this writing, I think), and NAG 5.2, although some
have limitations (e.g., NAG can't seem to handle the medium and
large sizes)
- Building the F90 "small" module size is now the default, even for
developers
- Split up mpif.h into multiple files because parts of it were toxic
to the F90 bindings
- Properly specify unsized/unshaped arrays to make the bindings work
on all known compilers
- Make ompi_info show Fortran 90 bindings size
- XML somewhat lags the generated scripts as of this commit, but
functionality was my main goal -- the XML can be updated later (if
at all).
This commit was SVN r10118.
2006-05-30 18:37:41 +04:00
|
|
|
include "mpif-config.h"
|
2006-04-11 07:33:38 +04:00
|
|
|
${type}, intent(in) :: sendbuf
|
|
|
|
${type}, intent(out) :: recvbuf
|
|
|
|
integer, intent(in) :: count
|
|
|
|
integer, intent(in) :: datatype
|
|
|
|
integer, intent(in) :: op
|
|
|
|
integer, intent(in) :: comm
|
|
|
|
integer, intent(out) :: ierr
|
|
|
|
call ${procedure}(sendbuf, recvbuf, count, datatype, op, &
|
|
|
|
comm, ierr)
|
|
|
|
end subroutine ${proc}
|
2005-01-18 19:15:55 +03:00
|
|
|
|
2006-04-11 07:33:38 +04:00
|
|
|
EOF
|
|
|
|
}
|
2005-01-18 19:15:55 +03:00
|
|
|
|
2006-04-11 07:33:38 +04:00
|
|
|
for rank in $allranks
|
2005-01-18 19:15:55 +03:00
|
|
|
do
|
2006-04-11 07:33:38 +04:00
|
|
|
case "$rank" in 0) dim='' ; esac
|
Bring over changes from the /tmp/fortran-stuff series:
- Make the F90 bindings compile and link properly with gfortran 4.0,
4.1, Intel 9.0, PGI 6.1, Sun (don't know version offhand -- the most
current as of this writing, I think), and NAG 5.2, although some
have limitations (e.g., NAG can't seem to handle the medium and
large sizes)
- Building the F90 "small" module size is now the default, even for
developers
- Split up mpif.h into multiple files because parts of it were toxic
to the F90 bindings
- Properly specify unsized/unshaped arrays to make the bindings work
on all known compilers
- Make ompi_info show Fortran 90 bindings size
- XML somewhat lags the generated scripts as of this commit, but
functionality was my main goal -- the XML can be updated later (if
at all).
This commit was SVN r10118.
2006-05-30 18:37:41 +04:00
|
|
|
case "$rank" in 1) dim=', dimension(*)' ; esac
|
|
|
|
case "$rank" in 2) dim=', dimension(1,*)' ; esac
|
|
|
|
case "$rank" in 3) dim=', dimension(1,1,*)' ; esac
|
|
|
|
case "$rank" in 4) dim=', dimension(1,1,1,*)' ; esac
|
|
|
|
case "$rank" in 5) dim=', dimension(1,1,1,1,*)' ; esac
|
|
|
|
case "$rank" in 6) dim=', dimension(1,1,1,1,1,*)' ; esac
|
|
|
|
case "$rank" in 7) dim=', dimension(1,1,1,1,1,1,*)' ; esac
|
2006-04-11 07:33:38 +04:00
|
|
|
|
|
|
|
output MPI_Allreduce ${rank} CH "character${dim}"
|
|
|
|
output MPI_Allreduce ${rank} L "logical${dim}"
|
2005-01-18 19:15:55 +03:00
|
|
|
for kind in $ikinds
|
|
|
|
do
|
2006-04-11 07:33:38 +04:00
|
|
|
output MPI_Allreduce ${rank} I${kind} "integer*${kind}${dim}"
|
2005-01-18 19:15:55 +03:00
|
|
|
done
|
|
|
|
for kind in $rkinds
|
|
|
|
do
|
2006-04-11 07:33:38 +04:00
|
|
|
output MPI_Allreduce ${rank} R${kind} "real*${kind}${dim}"
|
2005-01-18 19:15:55 +03:00
|
|
|
done
|
|
|
|
for kind in $ckinds
|
|
|
|
do
|
2006-04-11 07:33:38 +04:00
|
|
|
output MPI_Allreduce ${rank} C${kind} "complex*${kind}${dim}"
|
2005-01-18 19:15:55 +03:00
|
|
|
done
|
|
|
|
done
|