Partial output problem

Rob Ross rross at mcs.anl.gov
Fri Jul 22 08:59:24 CDT 2005


Hi,

Do you mean that you're passing a 0 as the first parameter to 
MPI_Type_create_subarray()?  Or that you're passing 0 as the bufcount 
parameter to nfmpi_put_vara_all()?

The prototype for that call is:
   MPI_TYPE_CREATE_SUBARRAY(ndims, array_of_sizes, array_of_subsizes,
   array_of_starts, order, oldtype, newtype)

I'm guessing that your MPI implementation doesn't allow for 0 as a valid 
number of dimensions, which kind of makes sense, if that is what you 
tried to do.

If you're passing 0 as the bufcount to nfmpi_put_vara_all(), well, that 
should work.  If it doesn't, that's a bug that we need to fix.

Can you clarify which it is?

Thanks!

Rob

Yu-Heng Tseng wrote:
> Hi,
> 
> I am testing nfmpi_vara_put_all() in Fortran
> which can output subarray using
> mpi_type_create_subarray() to specify partial
> array. The test example works fine if I output
> the subarrays from all processors.
> 
> However, I got some problems when outputing only
> partial arrays from some of the processors (not all of them).
> the mpi_type_create_subarray() gives me error
> if I specify count=0 (not output from that particular processer).
> 
> ERROR: 0032-309 Invalid array element  (0) in 
> MPI_Type_create_subarray, task 1
> 
> For example, process 0 has array [1 2;3 4;5 6]
> process 1 has array [7 8; 9 10; 11 12].
> If I only want to output [1 2] from process 0.
> I specify count=0 in process 1. It seems this statment
> is not allowed in mpi_type_create_subarray().
> 
> Any other way to avoid this problem using parallel netCDF?
> 
> Thanks!
> 
> Yu-heng




More information about the parallel-netcdf mailing list