[cig-commits] [commit] master: enabling parallel definition of the netcdf file (9f6692a)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Fri Oct 17 05:28:59 PDT 2014


Repository : https://github.com/geodynamics/axisem

On branch  : master
Link       : https://github.com/geodynamics/axisem/compare/607f803cf074063627513d235f9ed0837fc1dd44...b6457db24acdde4a4e1c08935ae1b22adf87f5bf

>---------------------------------------------------------------

commit 9f6692a5e287f6aa4697cdc2f44e9d1c2a086ab2
Author: martinvandriel <martin at vandriel.de>
Date:   Tue Oct 14 18:12:12 2014 +0200

    enabling parallel definition of the netcdf file
    
    deflate_level causes it to crash on the enddef call, no idea why, but should not make a
    big difference here.


>---------------------------------------------------------------

9f6692a5e287f6aa4697cdc2f44e9d1c2a086ab2
 SOLVER/nc_routines.F90 | 33 +++++++++++++++++++++++++--------
 1 file changed, 25 insertions(+), 8 deletions(-)

diff --git a/SOLVER/nc_routines.F90 b/SOLVER/nc_routines.F90
index 7a42576..bb7c71f 100644
--- a/SOLVER/nc_routines.F90
+++ b/SOLVER/nc_routines.F90
@@ -911,6 +911,10 @@ subroutine nc_define_outputfile(nrec, rec_names, rec_th, rec_th_req, rec_ph, rec
     use data_source, only: src_type, t_0
     use data_time,   only: deltat, niter
 
+#ifdef upnc
+    use mpi
+#endif
+
 
     integer, intent(in)                  :: nrec              !< Number of receivers
     character(len=40),intent(in)         :: rec_names(nrec)   !< Receiver names
@@ -991,14 +995,22 @@ subroutine nc_define_outputfile(nrec, rec_names, rec_th, rec_th_req, rec_ph, rec
 
     nc_fnam = datapath(1:lfdata)//"/axisem_output.nc4"
 
+#ifndef upnc
     if (mynum == 0) then
         if (verbose > 1) write (6,*) ' Preparing netcdf file for ', nproc, ' processors'
         nmode = ior(NF90_CLOBBER, NF90_NETCDF4)
-        call check( nf90_create(path=nc_fnam, &
-                                cmode=nmode, ncid=ncid_out) )
+        call check( nf90_create(path=nc_fnam, cmode=nmode, ncid=ncid_out) )
         if (verbose > 1) write(6,*) ' Netcdf file with ID ', ncid_out, ' produced.'
     end if
-
+#else
+    if (verbose > 1) write (6,*) ' Preparing netcdf file for parallel IO'
+    nmode = ior(NF90_CLOBBER, NF90_NETCDF4)
+    nmode = ior(nmode, NF90_MPIIO)
+    !nmode = ior(nmode, NF90_CLASSIC_MODEL)
+    call check( nf90_create(path=nc_fnam, cmode=nmode, ncid=ncid_out, &
+                            comm=MPI_COMM_WORLD, info=MPI_INFO_NULL) )
+    if (verbose > 1) write(6,*) ' Netcdf file with ID ', ncid_out, ' produced.'
+#endif
 
     if (dump_wavefields) then
         select case (trim(dump_type))
@@ -1176,7 +1188,9 @@ subroutine nc_define_outputfile(nrec, rec_names, rec_th, rec_th_req, rec_ph, rec
     end if ! dump_wavefields
 
 
+#ifndef upnc
     if (mynum == 0) then    
+#endif
         if (verbose > 1) write(6,*) '  Producing groups for Seismograms and Snapshots'
 
         call check( nf90_def_grp(ncid_out, "Seismograms", ncid_recout) )
@@ -1224,27 +1238,27 @@ subroutine nc_define_outputfile(nrec, rec_names, rec_th, rec_th_req, rec_ph, rec
 
         call check( nf90_def_var(ncid=ncid_recout, name="stf_seis", xtype=NF90_FLOAT,&
                                  dimids=[nc_times_dimid], &
-                                 deflate_level = deflate_level, &
+                                 !deflate_level = deflate_level, &
                                  varid=nc_stf_seis_varid) )
 
         call check( nf90_def_var(ncid=ncid_recout, name="stf_d_seis", xtype=NF90_FLOAT,&
                                  dimids=[nc_times_dimid], &
-                                 deflate_level = deflate_level, &
+                                 !deflate_level = deflate_level, &
                                  varid=nc_stf_d_seis_varid) )
 
         call check( nf90_def_var(ncid=ncid_recout, name="stf_iter", xtype=NF90_FLOAT,&
                                  dimids=[nc_iter_dimid], &
-                                 deflate_level = deflate_level, &
+                                 !deflate_level = deflate_level, &
                                  varid=nc_stf_iter_varid) )
 
         call check( nf90_def_var(ncid=ncid_recout, name="stf_d_iter", xtype=NF90_FLOAT,&
                                  dimids=[nc_iter_dimid], &
-                                 deflate_level = deflate_level, &
+                                 !deflate_level = deflate_level, &
                                  varid=nc_stf_d_iter_varid) )
         
         call check( nf90_def_var(ncid=ncid_recout, name="time", xtype=NF90_DOUBLE,&
                                  dimids=[nc_times_dimid], &
-                                 deflate_level = deflate_level, &
+                                 !deflate_level = deflate_level, &
                                  varid=nc_time_varid) )
 
         call check( nf90_def_var(ncid   = ncid_recout,   &
@@ -1544,6 +1558,9 @@ subroutine nc_define_outputfile(nrec, rec_names, rec_th, rec_th_req, rec_ph, rec
         ! Leave definition mode
         call check( nf90_enddef(ncid_out))
 
+#ifdef upnc
+    if (mynum == 0) then    
+#endif
         if (verbose > 1) write(6,*) 'Writing station info into NetCDF file...'
         call check( nf90_put_var( ncid_recout, nc_th_varid,   values = rec_th) )
         call check( nf90_put_var( ncid_recout, nc_ph_varid,   values = rec_ph) )



More information about the CIG-COMMITS mailing list