Why my job be hang in a simple pnetcdf-writing case?

Wei-keng Liao wkliao at eecs.northwestern.edu
Thu Apr 3 18:34:03 CDT 2014


Hi, Jun

Two places in your codes need to be fixed.

line 35    ret = ncmpi_def_dim(ncid, "sample", SAMPLES, &sample_dim);
line 49            var[i*SAMPLES+j] = 9999;


Wei-keng

On Apr 3, 2014, at 6:21 PM, Jun Xiong wrote:

> Hi Guys:
> 
> My code can be compiled successfully but hang when I tried to run it.
> 
> Any idea? 
> 
> 
> /**********  pnetcdf-array-writing-case.c ***********/
> 
> #include <stdlib.h>
> #include <mpi.h>
> #include <pnetcdf.h>
> #include <stdio.h>
> 
> #define TIMES 253
> #define SAMPLES 99
> 
> static void handle_error(int status, int lineno)
> {
>     fprintf(stderr, "Error at line %d: %s\n", lineno, ncmpi_strerror(status));
>     MPI_Abort(MPI_COMM_WORLD, 1);
> }
> 
> int main(int argc, char **argv) {
> 
>     int  ret, nprocs, rank, ncid, i, j;
>     int  vid;                        /* variable ID */
>     int  time_dim, sample_dim;       /* variable shape */
>     int  dims[2];                    /* variable shape */
>     double var[TIMES*SAMPLES];   /* array to hold values */
> 
>     MPI_Init(&argc, &argv);
> 
>     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
>     MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
> 
>     ret = ncmpi_create(MPI_COMM_WORLD, argv[1], NC_CLOBBER|NC_64BIT_OFFSET, MPI_INFO_NULL, &ncid);
>     if (ret != NC_NOERR) handle_error(ret, __LINE__);
> 
>     ret = ncmpi_def_dim(ncid, "time", TIMES, &time_dim);
>     if (ret != NC_NOERR) handle_error(ret, __LINE__);
>     ret = ncmpi_def_dim(ncid, "sample", TIMES, &sample_dim);
>     if (ret != NC_NOERR) handle_error(ret, __LINE__);
> 
> 
>     dims[0] = time_dim;
>     dims[1] = sample_dim;
>     ret = ncmpi_def_var(ncid, "var", NC_SHORT, 2, dims, &vid);
>     if (ret != NC_NOERR) handle_error(ret, __LINE__);
> 
>     ret = ncmpi_enddef(ncid);
>     if (ret != NC_NOERR) handle_error(ret, __LINE__);
> 
>     for (i = 0; i < TIMES; i++)
>         for (j = 0; j < SAMPLES; j++)
>             var[i*253+j] = 9999;
> 
>     ret = ncmpi_begin_indep_data(ncid);
>     if (ret != NC_NOERR) handle_error(ret, __LINE__);
>     /* write values into netCDF variable */
>     ret = ncmpi_put_var_double(ncid, vid, var);
>     if (ret != NC_NOERR) handle_error(ret, __LINE__);
>     ret = ncmpi_end_indep_data(ncid);
>     if (ret != NC_NOERR) handle_error(ret, __LINE__);
> 
>     ret = ncmpi_close(ncid);
>     if (ret != NC_NOERR) handle_error(ret, __LINE__);
> 
>     MPI_Finalize();
>     return 0;
> }
> 
> 
> 
> -- 
> Jun Xiong, Ph.D.
> U.S. Geological Survey
> 2255 North Gemini Drive, Flagstaff, Arizona - 86001, USA.
> Office: 928-556-7215
> Fax:    928-556-7169
> 
> 



More information about the parallel-netcdf mailing list