1
1

It is now almost impossible to add a new function to the MPI interface

without messing the Fortran part.

This commit was SVN r26967.
Этот коммит содержится в:
George Bosilca 2012-08-08 13:17:57 +00:00
родитель f7528bb404
Коммит 083938cc10
14 изменённых файлов: 265 добавлений и 4 удалений

Просмотреть файл

@ -3,6 +3,10 @@
! 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 The University of Tennessee and The University
! of Tennessee Research Foundation. All rights
! reserved.
! Copyright (c) 2012 Inria. All rights reserved.
! $COPYRIGHT$
!
! This file provides the interface specifications for the MPI Fortran
@ -723,6 +727,20 @@ subroutine MPI_Type_create_indexed_block_f08(count,blocklength, &
end subroutine MPI_Type_create_indexed_block_f08
end interface MPI_Type_create_indexed_block
interface MPI_Type_create_hindexed_block
subroutine MPI_Type_create_hindexed_block_f08(count,blocklength, &
array_of_displacements,oldtype,newtype,ierror &
) OMPI_F08_INTERFACE_BIND_C("MPI_Type_create_hindexed_block_f08")
use :: mpi_f08_types, only : MPI_Datatype
implicit none
INTEGER, INTENT(IN) :: count, blocklength
INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
TYPE(MPI_Datatype), INTENT(IN) :: oldtype
TYPE(MPI_Datatype), INTENT(OUT) :: newtype
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
end subroutine MPI_Type_create_hindexed_block_f08
end interface MPI_Type_create_hindexed_block
interface MPI_Type_create_resized
subroutine MPI_Type_create_resized_f08(oldtype,lb,extent,newtype,ierror &
) OMPI_F08_INTERFACE_BIND_C("MPI_Type_create_resized_f08")

Просмотреть файл

@ -3,6 +3,10 @@
! 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 The University of Tennessee and The University
! of Tennessee Research Foundation. All rights
! reserved.
! Copyright (c) 2012 Inria. All rights reserved.
! $COPYRIGHT$
!
! This file provides the interface specifications for the MPI Fortran
@ -723,6 +727,20 @@ subroutine PMPI_Type_create_indexed_block_f08(count,blocklength, &
end subroutine PMPI_Type_create_indexed_block_f08
end interface PMPI_Type_create_indexed_block
interface PMPI_Type_create_hindexed_block
subroutine PMPI_Type_create_hindexed_block_f08(count,blocklength, &
array_of_displacements,oldtype,newtype,ierror &
) OMPI_F08_INTERFACE_BIND_C("PMPI_Type_create_hindexed_block_f08")
use :: mpi_f08_types, only : MPI_Datatype
implicit none
INTEGER, INTENT(IN) :: count, blocklength
INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
TYPE(MPI_Datatype), INTENT(IN) :: oldtype
TYPE(MPI_Datatype), INTENT(OUT) :: newtype
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
end subroutine PMPI_Type_create_hindexed_block_f08
end interface PMPI_Type_create_hindexed_block
interface PMPI_Type_create_resized
subroutine PMPI_Type_create_resized_f08(oldtype,lb,extent,newtype,ierror &
) OMPI_F08_INTERFACE_BIND_C("PMPI_Type_create_resized_f08")

Просмотреть файл

@ -2,7 +2,7 @@
# Copyright (c) 2004-2007 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
# Copyright (c) 2004-2012 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2004-2009 High Performance Computing Center Stuttgart,
@ -10,6 +10,7 @@
# 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) 2012 Inria. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
@ -269,6 +270,7 @@ libmpi_mpifh_la_SOURCES += \
type_create_hindexed_f.c \
type_create_hvector_f.c \
type_create_indexed_block_f.c \
type_create_hindexed_block_f.c \
type_create_keyval_f.c \
type_create_resized_f.c \
type_create_struct_f.c \

Просмотреть файл

@ -3,7 +3,7 @@
# 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
# Copyright (c) 2004-2012 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
@ -11,6 +11,7 @@
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2012 Inria. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
@ -238,6 +239,7 @@ nodist_libmpi_mpifh_pmpi_la_SOURCES = \
ptype_create_hindexed_f.c \
ptype_create_hvector_f.c \
ptype_create_indexed_block_f.c \
ptype_create_hindexed_block_f.c \
ptype_create_keyval_f.c \
ptype_create_resized_f.c \
ptype_create_struct_f.c \

Просмотреть файл

@ -2,7 +2,7 @@
* 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
* Copyright (c) 2004-2012 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
@ -10,6 +10,7 @@
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2012 Inria. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -275,6 +276,7 @@
#define ompi_type_create_hvector_f pompi_type_create_hvector_f
#define ompi_type_create_keyval_f pompi_type_create_keyval_f
#define ompi_type_create_indexed_block_f pompi_type_create_indexed_block_f
#define ompi_type_create_hindexed_block_f pompi_type_create_hindexed_block_f
#define ompi_type_create_struct_f pompi_type_create_struct_f
#define ompi_type_create_subarray_f pompi_type_create_subarray_f
#define ompi_type_create_resized_f pompi_type_create_resized_f

Просмотреть файл

@ -2,7 +2,7 @@
* 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
* Copyright (c) 2004-2012 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
@ -10,6 +10,7 @@
* 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) 2012 Inria. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -330,6 +331,7 @@ PN2(void, MPI_Type_create_hindexed, mpi_type_create_hindexed, MPI_TYPE_CREATE_HI
PN2(void, MPI_Type_create_hvector, mpi_type_create_hvector, MPI_TYPE_CREATE_HVECTOR, (MPI_Fint *count, MPI_Fint *blocklength, MPI_Aint *stride, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr));
PN2(void, MPI_Type_create_keyval, mpi_type_create_keyval, MPI_TYPE_CREATE_KEYVAL, (ompi_mpi2_fortran_copy_attr_function* type_copy_attr_fn, ompi_mpi2_fortran_delete_attr_function* type_delete_attr_fn, MPI_Fint *type_keyval, MPI_Aint *extra_state, MPI_Fint *ierr));
PN2(void, MPI_Type_create_indexed_block, mpi_type_create_indexed_block, MPI_TYPE_CREATE_INDEXED_BLOCK, (MPI_Fint *count, MPI_Fint *blocklength, MPI_Fint *array_of_displacements, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr));
PN2(void, MPI_Type_create_hindexed_block, mpi_type_create_hindexed_block, MPI_TYPE_CREATE_HINDEXED_BLOCK, (MPI_Fint *count, MPI_Fint *blocklength, MPI_Aint *array_of_displacements, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr));
PN2(void, MPI_Type_create_struct, mpi_type_create_struct, MPI_TYPE_CREATE_STRUCT, (MPI_Fint *count, MPI_Fint *array_of_block_lengths, MPI_Aint *array_of_displacements, MPI_Fint *array_of_types, MPI_Fint *newtype, MPI_Fint *ierr));
PN2(void, MPI_Type_create_subarray, mpi_type_create_subarray, MPI_TYPE_CREATE_SUBARRAY, (MPI_Fint *ndims, MPI_Fint *size_array, MPI_Fint *subsize_array, MPI_Fint *start_array, MPI_Fint *order, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr));
PN2(void, MPI_Type_create_resized, mpi_type_create_resized, MPI_TYPE_CREATE_RESIZED, (MPI_Fint *oldtype, MPI_Aint *lb, MPI_Aint *extent, MPI_Fint *newtype, MPI_Fint *ierr));

Просмотреть файл

@ -0,0 +1,79 @@
/*
* Copyright (c) 2012 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2012 Inria. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include "ompi/mpi/fortran/mpif-h/bindings.h"
#if OPAL_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER
#pragma weak PMPI_TYPE_CREATE_HINDEXED_BLOCK = ompi_type_create_hindexed_block_f
#pragma weak pmpi_type_create_hindexed_block = ompi_type_create_hindexed_block_f
#pragma weak pmpi_type_create_hindexed_block_ = ompi_type_create_hindexed_block_f
#pragma weak pmpi_type_create_hindexed_block__ = ompi_type_create_hindexed_block_f
#pragma weak PMPI_Type_create_hindexed_block_f = ompi_type_create_hindexed_block_f
#pragma weak PMPI_Type_create_hindexed_block_f08 = ompi_type_create_hindexed_block_f
#elif OMPI_PROFILE_LAYER
OMPI_GENERATE_F77_BINDINGS (PMPI_TYPE_CREATE_HINDEXED_BLOCK,
pmpi_type_create_hindexed_block,
pmpi_type_create_hindexed_block_,
pmpi_type_create_hindexed_block__,
pompi_type_create_hindexed_block_f,
(MPI_Fint *count, MPI_Fint *blocklength, MPI_Aint *array_of_displacements, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr),
(count, blocklength, array_of_displacements, oldtype, newtype, ierr) )
#endif
#if OPAL_HAVE_WEAK_SYMBOLS
#pragma weak MPI_TYPE_CREATE_HINDEXED_BLOCK = ompi_type_create_hindexed_block_f
#pragma weak mpi_type_create_hindexed_block = ompi_type_create_hindexed_block_f
#pragma weak mpi_type_create_hindexed_block_ = ompi_type_create_hindexed_block_f
#pragma weak mpi_type_create_hindexed_block__ = ompi_type_create_hindexed_block_f
#pragma weak MPI_Type_create_hindexed_block_f = ompi_type_create_hindexed_block_f
#pragma weak MPI_Type_create_hindexed_block_f08 = ompi_type_create_hindexed_block_f
#endif
#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER
OMPI_GENERATE_F77_BINDINGS (MPI_TYPE_CREATE_HINDEXED_BLOCK,
mpi_type_create_hindexed_block,
mpi_type_create_hindexed_block_,
mpi_type_create_hindexed_block__,
ompi_type_create_hindexed_block_f,
(MPI_Fint *count, MPI_Fint *blocklength, MPI_Aint *array_of_displacements, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr),
(count, blocklength, array_of_displacements, oldtype, newtype, ierr) )
#endif
#if OMPI_PROFILE_LAYER && ! OPAL_HAVE_WEAK_SYMBOLS
#include "ompi/mpi/fortran/mpif-h/profile/defines.h"
#endif
void ompi_type_create_hindexed_block_f(MPI_Fint *count, MPI_Fint *blocklength,
MPI_Aint *array_of_displacements,
MPI_Fint *oldtype, MPI_Fint *newtype,
MPI_Fint *ierr)
{
int c_ierr;
MPI_Datatype c_old = MPI_Type_f2c(*oldtype);
MPI_Datatype c_new;
c_ierr = MPI_Type_create_hindexed_block(OMPI_FINT_2_INT(*count),
OMPI_FINT_2_INT(*blocklength),
array_of_displacements,
c_old, &c_new);
if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
if (MPI_SUCCESS == c_ierr) {
*newtype = MPI_Type_c2f(c_new);
}
}

Просмотреть файл

@ -1,6 +1,10 @@
# -*- makefile -*-
#
# Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2012 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2012 Inria. All rights reserved.
#
# $COPYRIGHT$
#
@ -217,6 +221,7 @@ mpi_api_files = \
type_create_hindexed_f08.F90 \
type_create_hvector_f08.F90 \
type_create_indexed_block_f08.F90 \
type_create_hindexed_block_f08.F90 \
type_create_keyval_f08.F90 \
type_create_resized_f08.F90 \
type_create_struct_f08.F90 \
@ -526,6 +531,7 @@ pmpi_api_files = \
profile/ptype_create_hindexed_f08.F90 \
profile/ptype_create_hvector_f08.F90 \
profile/ptype_create_indexed_block_f08.F90 \
profile/ptype_create_hindexed_block_f08.F90 \
profile/ptype_create_keyval_f08.F90 \
profile/ptype_create_resized_f08.F90 \
profile/ptype_create_struct_f08.F90 \

Просмотреть файл

@ -3,6 +3,10 @@
! 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 The University of Tennessee and The University
! of Tennessee Research Foundation. All rights
! reserved.
! Copyright (c) 2012 Inria. All rights reserved.
! $COPYRIGHT$
!
! This file provides the interface specifications for the MPI Fortran
@ -521,6 +525,17 @@ subroutine ompi_type_create_indexed_block_f(count,blocklength, &
INTEGER, INTENT(OUT) :: ierror
end subroutine ompi_type_create_indexed_block_f
subroutine ompi_type_create_hindexed_block_f(count,blocklength, &
array_of_displacements,oldtype,newtype,ierror) &
BIND(C, name="ompi_type_create_hindexed_block_f")
implicit none
INTEGER, INTENT(IN) :: count, blocklength
INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
INTEGER, INTENT(IN) :: oldtype
INTEGER, INTENT(OUT) :: newtype
INTEGER, INTENT(OUT) :: ierror
end subroutine ompi_type_create_hindexed_block_f
subroutine ompi_type_create_resized_f(oldtype,lb,extent,newtype,ierror) &
BIND(C, name="ompi_type_create_resized_f")
use :: mpi_f08_types, only : MPI_ADDRESS_KIND

Просмотреть файл

@ -3,6 +3,10 @@
! 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 The University of Tennessee and The University
! of Tennessee Research Foundation. All rights
! reserved.
! Copyright (c) 2012 Inria. All rights reserved.
! $COPYRIGHT$
!
! This file provides the interface specifications for the MPI Fortran
@ -521,6 +525,17 @@ subroutine pompi_type_create_indexed_block_f(count,blocklength, &
INTEGER, INTENT(OUT) :: ierror
end subroutine pompi_type_create_indexed_block_f
subroutine pompi_type_create_hindexed_block_f(count,blocklength, &
array_of_displacements,oldtype,newtype,ierror) &
BIND(C, name="pompi_type_create_hindexed_block_f")
implicit none
INTEGER, INTENT(IN) :: count, blocklength
INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
INTEGER, INTENT(IN) :: oldtype
INTEGER, INTENT(OUT) :: newtype
INTEGER, INTENT(OUT) :: ierror
end subroutine pompi_type_create_hindexed_block_f
subroutine pompi_type_create_resized_f(oldtype,lb,extent,newtype,ierror) &
BIND(C, name="pompi_type_create_resized_f")
use :: mpi_f08_types, only : MPI_ADDRESS_KIND

Просмотреть файл

@ -0,0 +1,25 @@
! -*- f90 -*-
!
! Copyright (c) 2012 The University of Tennessee and The University
! of Tennessee Research Foundation. All rights
! reserved.
! Copyright (c) 2012 Inria. All rights reserved.
! $COPYRIGHT$
subroutine PMPI_Type_create_hindexed_block_f08(count,blocklength, &
array_of_displacements,oldtype,newtype,ierror)
use :: mpi_f08_types, only : MPI_Datatype
use :: mpi_f08, only : ompi_type_create_hindexed_block_f
implicit none
INTEGER, INTENT(IN) :: count, blocklength
INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
TYPE(MPI_Datatype), INTENT(IN) :: oldtype
TYPE(MPI_Datatype), INTENT(OUT) :: newtype
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
integer :: c_ierror
call ompi_type_create_hindexed_block_f(count,blocklength,array_of_displacements, &
oldtype%MPI_VAL,newtype%MPI_VAL,c_ierror)
if (present(ierror)) ierror = c_ierror
end subroutine PMPI_Type_create_hindexed_block_f08

Просмотреть файл

@ -0,0 +1,25 @@
! -*- f90 -*-
!
! Copyright (c) 2012 The University of Tennessee and The University
! of Tennessee Research Foundation. All rights
! reserved.
! Copyright (c) 2012 Inria. All rights reserved.
! $COPYRIGHT$
subroutine MPI_Type_create_hindexed_block_f08(count,blocklength, &
array_of_displacements,oldtype,newtype,ierror)
use :: mpi_f08_types, only : MPI_Datatype
use :: mpi_f08, only : ompi_type_create_hindexed_block_f
implicit none
INTEGER, INTENT(IN) :: count, blocklength
INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
TYPE(MPI_Datatype), INTENT(IN) :: oldtype
TYPE(MPI_Datatype), INTENT(OUT) :: newtype
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
integer :: c_ierror
call ompi_type_create_hindexed_block_f(count,blocklength,array_of_displacements, &
oldtype%MPI_VAL,newtype%MPI_VAL,c_ierror)
if (present(ierror)) ierror = c_ierror
end subroutine MPI_Type_create_hindexed_block_f08

Просмотреть файл

@ -3,6 +3,10 @@
! Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved.
! Copyright (c) 2007 Los Alamos National Security, LLC. All rights
! reserved.
! Copyright (c) 2012 The University of Tennessee and The University
! of Tennessee Research Foundation. All rights
! reserved.
! Copyright (c) 2012 Inria. All rights reserved.
! $COPYRIGHT$
!
! Additional copyrights may follow
@ -3222,6 +3226,21 @@ end subroutine MPI_Type_create_indexed_block
end interface
interface MPI_Type_create_hindexed_block
subroutine MPI_Type_create_hindexed_block(count, blocklength, array_of_displacements, oldtype, newtype&
, ierr)
integer, intent(in) :: count
integer, intent(in) :: blocklength
integer(kind=MPI_ADDRESS_KIND), dimension(*), intent(in) :: array_of_displacements
integer, intent(in) :: oldtype
integer, intent(out) :: newtype
integer, intent(out) :: ierr
end subroutine MPI_Type_create_hindexed_block
end interface
interface MPI_Type_create_keyval
subroutine MPI_Type_create_keyval(type_copy_attr_fn, type_delete_attr_fn, type_keyval, extra_state, ierr)

Просмотреть файл

@ -3,10 +3,14 @@
# Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
# University Research and Technology
# Corporation. All rights reserved.
# Copyright (c) 2012 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2004-2006 The Regents of the University of California.
# All rights reserved.
# Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2012 FUJITSU LIMITED. All rights reserved.
# Copyright (c) 2012 Inria. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
@ -10797,3 +10801,32 @@ start MPI_Comm_split_type small
output_290 MPI_Comm_split_type
end MPI_Comm_split_type
#------------------------------------------------------------------------
output_291() {
if test "$output" = "0"; then
return 0
fi
procedure=$1
cat <<EOF
subroutine ${procedure}(count, blocklength, array_of_displacements, oldtype, newtype&
, ierr)
include 'mpif-config.h'
integer, intent(in) :: count
integer, intent(in) :: blocklength
integer(kind=MPI_ADDRESS_KIND), dimension(*), intent(in) :: array_of_displacements
integer, intent(in) :: oldtype
integer, intent(out) :: newtype
integer, intent(out) :: ierr
end subroutine ${procedure}
EOF
}
start MPI_Type_create_hindexed_block small
output_291 MPI_Type_create_hindexed_block
end MPI_Type_create_hindexed_block