[netcdfgroup] NF90_UNLIMITED dimensions failing under parralllel netcdf

Hi,

I am fairly new to netcdf and I am having problems writting out a netcdf
file which contains a variable with an unlimited dimension. When I try to
write the variable I get the following error (on the nf90_put_var line):

 Unknown Error

I have three programs two which work and one which doesn't. The one which
doesn't work is parrallel and uses the dimension:

call check( nf90_def_dim(ncid, REC_NAME, NF90_UNLIMITED, rec_dimid) )

This code works when I create the file in non-parrallel mode or when I use a
specified number:

call check( nf90_def_dim(ncid, REC_NAME, 2, rec_dimid) 

The code is:

program pres_temp_4D_wr
  use netcdf
  implicit none
         include 'mpif.h'
 
  ! This is the name of the data file we will create.
  character (len = *), parameter :: FILE_NAME = "pres_temp_4D.nc"
  integer :: ncid
 
  ! We are writing 4D data, a 2 x 6 x 12 lvl-lat-lon grid, with 2
  ! timesteps of data.
  integer, parameter :: NDIMS = 1, NRECS = 2
  integer, parameter :: NLVLS = 2, NLATS = 6, NLONS = 12
  character (len = *), parameter :: LVL_NAME = "level"
  character (len = *), parameter :: LAT_NAME = "latitude"
  character (len = *), parameter :: LON_NAME = "longitude"
  character (len = *), parameter :: REC_NAME = "time"
  integer :: lvl_dimid, lon_dimid, lat_dimid, rec_dimid
 
  ! The start and count arrays will tell the netCDF library where to
  ! write our data.
  integer :: start(NDIMS), count(NDIMS)
 
  ! These program variables hold the latitudes and longitudes.
  real :: lats(NLATS), lons(NLONS)
  integer :: lon_varid, lat_varid
 
  ! We will create two netCDF variables, one each for temperature and
  ! pressure fields.
  character (len = *), parameter :: PRES_NAME="pressure"
  integer :: pres_varid
  integer :: dimids(NDIMS)
 
 
  ! Program variables to hold the data we will write out. We will only
  ! need enough space to hold one timestep of data; one record.
  real :: pres_out
  real, parameter :: SAMPLE_PRESSURE = 900.0
 
       ! MPI stuff: number of processors, rank of this processor, and error
       ! code.
       integer :: p, my_rank, ierr
 
  ! Loop indices
  integer :: lvl, lat, lon, rec, i
 
         ! Initialize MPI, learn local rank and total number of processors.
       call MPI_Init(ierr)
       call MPI_Comm_rank(MPI_COMM_WORLD, my_rank, ierr)
       call MPI_Comm_size(MPI_COMM_WORLD, p, ierr)
 
 
  ! Create pretend data. If this wasn't an example program, we would
  ! have some real data to write, for example, model output.
  pres_out = 1.1
 
  call check( nf90_create(FILE_NAME, IOR(NF90_MPIIO, IOR(NF90_NETCDF4,
NF90_CLOBBER)), ncid, comm= MPI_COMM_WORLD, info = MPI_INFO_NULL) )
  call check( nf90_def_dim(ncid, REC_NAME, 1, rec_dimid) )
  dimids = (/ rec_dimid /)
  call check( nf90_def_var(ncid, PRES_NAME, NF90_REAL, rec_dimid,
pres_varid) )
  call check( nf90_enddef(ncid) )
 
  count = (/1 /)
  start = (/1 /)
 
 
     !start(1) = 1  
     call check( nf90_put_var(ncid, pres_varid, pres_out))
 
  call check( nf90_close(ncid) )
 
 
   ! MPI library must be shut down.
   call MPI_Finalize(ierr)
 
   if (my_rank .eq. 0) print *, "*** SUCCESS writing example file ",
FILE_NAME, "! "
 
contains
  subroutine check(status)
    integer, intent ( in) :: status
 
    if(status /= nf90_noerr) then 
      print *, trim(nf90_strerror(status))
      stop "Stopped"
    end if
  end subroutine check  
end program pres_temp_4D_wr

I have had to build be own netcdf libraries on my platform which has a
panasas file system. I have built the following:

zlib 1.2.8
hdf5 1.8.12
netcdf 4.3.2
netcdf-fortran 4.2

with the following configuration
Build z lib
CC=mpicc ./configure --static --prefix=/home/users/jholt01/libs >
../zlib.log

Hdf5: 

FC=mpif90 F77=mpif77 CC=mpicc ./configure --enable-fortran --enable-parallel
--prefix=/home/users/jholt01/libs --with-zlib=/home/users/jholt01/libs
--disable-shared > ../hdf5_conf.log

Netcdfc:

[jholt01@host040 netcdf-4.3.2]$ CPPFLAGS="-I/home/users/jholt01/libs/include
-O3 -xHost -ip -no-prec-div -static-intel -DgPhi" \
FFFLAGS="-I/home/users/jholt01/libs/include -O3 -xHost -ip -no-prec-div
-static-intel -DgPhi" \
FCFLAGS="-I/home/users/jholt01/libs/include -O3 -xHost -ip -no-prec-div
-static-intel -DgPhi" \
LDFLAGS="-L/home/users/jholt01/libs/lib" \
CFLAGS=-DpgiFortran \
LD_LIBRARY_PATH=/home/users/jholt01/libs/lib:${LD_LIBRARY_PATH} \
FC=mpif90 CC=mpicc \
LIBS=-ldl \
./configure --disable-dap --disable-shared --enable-parallel-tests 
--prefix=/home/users/jholt01/libs > ../netcd_config.log


Netcdf-fortran

CPPFLAGS="-I/home/users/jholt01/libs/include -O3 -xHost -ip -no-prec-div
-static-intel -DgPhi" \
FFFLAGS="-I/home/users/jholt01/libs/include -O3 -xHost -ip -no-prec-div
-static-intel -DgPhi" \
FCFLAGS="-I/home/users/jholt01/libs/include -O3 -xHost -ip -no-prec-div
-static-intel -DgPhi" \
LDFLAGS="-L/home/users/jholt01/libs/lib" \
CFLAGS=-DpgiFortran \
LD_LIBRARY_PATH=/home/users/jholt01/libs/lib:${LD_LIBRARY_PATH} \
F77=mpif77 FC=mpif90 CC=mpicc \
LIBS="-lnetcdf -lhdf5_hl -lhdf5 -lz -ldl" \
./configure --disable-shared --enable-parallel-tests 
--prefix=/home/users/jholt01/libs > ../netcd_fortran_config.log

The checks all pass apart from the hdf5 ph5diff checks.

Any help would be greatly appreciated.

John



--
View this message in context: 
http://netcdf-group.1586084.n2.nabble.com/NF90-UNLIMITED-dimensions-failing-under-parralllel-netcdf-tp7575486.html
Sent from the NetCDF Group mailing list archive at Nabble.com.



  • 2014 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: