-
Notifications
You must be signed in to change notification settings - Fork 867
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add support for MPI-3.1 MPI_Aint functions
This commit adds support for MPI_Aint_add and MPI_Aint_diff. These functions are implemented as macros in C (explicitly allowed by MPI-3.1). The fortran implementations are a similar mess to the MPI_Wtime implementations. Signed-off-by: Nathan Hjelm <[email protected]>
- Loading branch information
Showing
24 changed files
with
546 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ | ||
/* | ||
* 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) 2015 Los Alamos National Security, LLC. All rights | ||
* reserved. | ||
* $COPYRIGHT$ | ||
* | ||
* Additional copyrights may follow | ||
* | ||
* $HEADER$ | ||
*/ | ||
|
||
#include "ompi_config.h" | ||
|
||
#include "ompi/mpi/fortran/mpif-h/bindings.h" | ||
|
||
/* The OMPI_GENERATE_F77_BINDINGS work only for the most common F77 bindings, the | ||
* one that does not return any value. There are 4 exceptions MPI_Wtick, MPI_Wtime, | ||
* MPI_Aint_add, and MPI_Aint_diff. For these 4 we can insert the bindings | ||
* manually. | ||
*/ | ||
#if OPAL_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER | ||
#pragma weak PMPI_AINT_ADD = ompi_aint_add_f | ||
#pragma weak pmpi_aint_add = ompi_aint_add_f | ||
#pragma weak pmpi_aint_add_ = ompi_aint_add_f | ||
#pragma weak pmpi_aint_add__ = ompi_aint_add_f | ||
|
||
#pragma weak PMPI_Aint_add_f = ompi_aint_add_f | ||
#pragma weak PMPI_Aint_add_f08 = ompi_aint_add_f | ||
#elif OMPI_PROFILE_LAYER | ||
MPI_Aint PMPI_AINT_ADD(MPI_Aint *base, MPI_Aint *diff) { return pompi_aint_add_f(base, diff); } | ||
MPI_Aint pmpi_aint_add(MPI_Aint *base, MPI_Aint *diff) { return pompi_aint_add_f(base, diff); } | ||
MPI_Aint pmpi_aint_add_(MPI_Aint *base, MPI_Aint *diff) { return pompi_aint_add_f(base, diff); } | ||
MPI_Aint pmpi_aint_add__(MPI_Aint *base, MPI_Aint *diff) { return pompi_aint_add_f(base, diff); } | ||
#endif | ||
|
||
#if OPAL_HAVE_WEAK_SYMBOLS | ||
#pragma weak MPI_AINT_ADD = ompi_aint_add_f | ||
#pragma weak mpi_aint_add = ompi_aint_add_f | ||
#pragma weak mpi_aint_add_ = ompi_aint_add_f | ||
#pragma weak mpi_aint_add__ = ompi_aint_add_f | ||
|
||
#pragma weak MPI_Aint_add_f = ompi_aint_add_f | ||
#pragma weak MPI_Aint_add_f08 = ompi_aint_add_f | ||
#endif | ||
|
||
#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER | ||
MPI_Aint MPI_AINT_ADD(MPI_Aint *base, MPI_Aint *diff) { return ompi_aint_add_f(base, diff); } | ||
MPI_Aint mpi_aint_add(MPI_Aint *base, MPI_Aint *diff) { return ompi_aint_add_f(base, diff); } | ||
MPI_Aint mpi_aint_add_(MPI_Aint *base, MPI_Aint *diff) { return ompi_aint_add_f(base, diff); } | ||
MPI_Aint mpi_aint_add__(MPI_Aint *base, MPI_Aint *diff) { return ompi_aint_add_f(base, diff); } | ||
#endif | ||
|
||
|
||
#if OMPI_PROFILE_LAYER && ! OPAL_HAVE_WEAK_SYMBOLS | ||
#include "ompi/mpi/fortran/mpif-h/profile/defines.h" | ||
#endif | ||
|
||
MPI_Aint ompi_aint_add_f(MPI_Aint *base, MPI_Aint *diff) | ||
{ | ||
return MPI_Aint_add (*base, *diff); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ | ||
/* | ||
* 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) 2015 Los Alamos National Security, LLC. All rights | ||
* reserved. | ||
* $COPYRIGHT$ | ||
* | ||
* Additional copyrights may follow | ||
* | ||
* $HEADER$ | ||
*/ | ||
|
||
#include "ompi_config.h" | ||
|
||
#include "ompi/mpi/fortran/mpif-h/bindings.h" | ||
|
||
/* The OMPI_GENERATE_F77_BINDINGS work only for the most common F77 bindings, the | ||
* one that does not return any value. There are 4 exceptions MPI_Wtick, MPI_Wtime, | ||
* MPI_Aint_add, and MPI_Aint_diff. For these 4 we can insert the bindings | ||
* manually. | ||
*/ | ||
#if OPAL_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER | ||
#pragma weak PMPI_AINT_DIFF = ompi_aint_diff_f | ||
#pragma weak pmpi_aint_diff = ompi_aint_diff_f | ||
#pragma weak pmpi_aint_diff_ = ompi_aint_diff_f | ||
#pragma weak pmpi_aint_diff__ = ompi_aint_diff_f | ||
|
||
#pragma weak PMPI_Aint_diff_f = ompi_aint_diff_f | ||
#pragma weak PMPI_Aint_diff_f08 = ompi_aint_diff_f | ||
#elif OMPI_PROFILE_LAYER | ||
MPI_Aint PMPI_AINT_DIFF(MPI_Aint *addr1, MPI_Aint *addr2) { return pompi_aint_diff_f(addr1, addr2); } | ||
MPI_Aint pmpi_aint_diff(MPI_Aint *addr1, MPI_Aint *addr2) { return pompi_aint_diff_f(addr1, addr2); } | ||
MPI_Aint pmpi_aint_diff_(MPI_Aint *addr1, MPI_Aint *addr2) { return pompi_aint_diff_f(addr1, addr2); } | ||
MPI_Aint pmpi_aint_diff__(MPI_Aint *addr1, MPI_Aint *addr2) { return pompi_aint_diff_f(addr1, addr2); } | ||
#endif | ||
|
||
#if OPAL_HAVE_WEAK_SYMBOLS | ||
#pragma weak MPI_AINT_DIFF = ompi_aint_diff_f | ||
#pragma weak mpi_aint_diff = ompi_aint_diff_f | ||
#pragma weak mpi_aint_diff_ = ompi_aint_diff_f | ||
#pragma weak mpi_aint_diff__ = ompi_aint_diff_f | ||
|
||
#pragma weak MPI_Aint_diff_f = ompi_aint_diff_f | ||
#pragma weak MPI_Aint_diff_f08 = ompi_aint_diff_f | ||
#endif | ||
|
||
#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER | ||
MPI_Aint MPI_AINT_DIFF(MPI_Aint *addr1, MPI_Aint *addr2) { return ompi_aint_diff_f(addr1, addr2); } | ||
MPI_Aint mpi_aint_diff(MPI_Aint *addr1, MPI_Aint *addr2) { return ompi_aint_diff_f(addr1, addr2); } | ||
MPI_Aint mpi_aint_diff_(MPI_Aint *addr1, MPI_Aint *addr2) { return ompi_aint_diff_f(addr1, addr2); } | ||
MPI_Aint mpi_aint_diff__(MPI_Aint *addr1, MPI_Aint *addr2) { return ompi_aint_diff_f(addr1, addr2); } | ||
#endif | ||
|
||
|
||
#if OMPI_PROFILE_LAYER && ! OPAL_HAVE_WEAK_SYMBOLS | ||
#include "ompi/mpi/fortran/mpif-h/profile/defines.h" | ||
#endif | ||
|
||
MPI_Aint ompi_aint_diff_f(MPI_Aint *addr1, MPI_Aint *addr2) | ||
{ | ||
return MPI_Aint_diff (*addr1, *addr2); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
! -*- f90 -*- | ||
! | ||
! Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. | ||
! Copyright (c) 2009-2015 Los Alamos National Security, LLC. | ||
! All Rights reserved. | ||
! $COPYRIGHT$ | ||
|
||
#include "ompi/mpi/fortran/configure-fortran-output.h" | ||
|
||
function MPI_Aint_add_f08(base,diff) | ||
use :: mpi_f08_types, only : MPI_ADDRESS_KIND | ||
use :: mpi_f08, only ompi_aint_add_f | ||
implicit none | ||
INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: base | ||
INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: diff | ||
call ompi_aint_add_f (base, diff) | ||
end function MPI_Aint_add_f08 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
! -*- f90 -*- | ||
! | ||
! Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved. | ||
! Copyright (c) 2009-2015 Los Alamos National Security, LLC. | ||
! All Rights reserved. | ||
! $COPYRIGHT$ | ||
|
||
#include "ompi/mpi/fortran/configure-fortran-output.h" | ||
|
||
function MPI_Aint_add_f08(base,diff) | ||
use :: mpi_f08_types, only : MPI_ADDRESS_KIND | ||
use :: mpi_f08, only ompi_aint_add_f | ||
implicit none | ||
INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: base | ||
INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: diff | ||
call ompi_aint_add_f (base, diff) | ||
end function MPI_Aint_add_f08 |
Oops, something went wrong.