Commit 6eb87b33 by Tobias Burnus Committed by Tobias Burnus

re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])

2011-04-06  Tobias Burnus  <burnus@net-b.de>

        PR fortran/18918
        * caf/mpi.c (_gfortran_caf_init, _gfortran_caf_finalize):
        Add global variable caf_mpi_initialized and use it for when
        finalizing.

From-SVN: r172059
parent a95d4000
2011-04-06 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* caf/mpi.c (_gfortran_caf_init, _gfortran_caf_finalize):
Add global variable caf_mpi_initialized and use it for when
finalizing.
2011-04-04 Tobias Burnus <burnus@net-b.de> 2011-04-04 Tobias Burnus <burnus@net-b.de>
* unix.c: Adapt stat DEFINEs since MinGW64 supports LFS. * unix.c: Adapt stat DEFINEs since MinGW64 supports LFS.
......
...@@ -36,6 +36,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -36,6 +36,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
static void error_stop (int error) __attribute__ ((noreturn)); static void error_stop (int error) __attribute__ ((noreturn));
/* Global variables. */ /* Global variables. */
static int caf_mpi_initialized;
static int caf_this_image; static int caf_this_image;
static int caf_num_images; static int caf_num_images;
static MPI_Win caf_world_window; static MPI_Win caf_world_window;
...@@ -50,12 +51,10 @@ static MPI_Win caf_world_window; ...@@ -50,12 +51,10 @@ static MPI_Win caf_world_window;
void void
_gfortran_caf_init (int *argc, char ***argv, int *this_image, int *num_images) _gfortran_caf_init (int *argc, char ***argv, int *this_image, int *num_images)
{ {
int flag; /* caf_mpi_initialized is only true if the main program is not written in
Fortran. */
/* The following is only the case if one does not have a Fortran MPI_Initialized (&caf_mpi_initialized);
main program. */ if (!caf_mpi_initialized)
MPI_Initialized (&flag);
if (!flag)
MPI_Init (argc, argv); MPI_Init (argc, argv);
MPI_Comm_rank (MPI_COMM_WORLD, &caf_this_image); MPI_Comm_rank (MPI_COMM_WORLD, &caf_this_image);
...@@ -69,15 +68,15 @@ _gfortran_caf_init (int *argc, char ***argv, int *this_image, int *num_images) ...@@ -69,15 +68,15 @@ _gfortran_caf_init (int *argc, char ***argv, int *this_image, int *num_images)
} }
/* Finalize coarray program. Note: This is only called before the /* Finalize coarray program. */
program ends; thus the MPI_Initialized status of _gfortran_caf_init
does not play a role. */
void void
_gfortran_caf_finalize (void) _gfortran_caf_finalize (void)
{ {
MPI_Win_free (&caf_world_window); MPI_Win_free (&caf_world_window);
MPI_Finalize ();
if (!caf_mpi_initialized)
MPI_Finalize ();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment