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