Opened 5 years ago

#148 new defect

domain/axis decomposition conflit in multiple_file mode

Reported by: yushan Owned by: yushan
Priority: major Component: XIOS
Version: 2.0 Keywords: multiple_file, decomposition, netcdf


In multiple_file mode, we can, in some case, encounter an error of type

In file "onetcdf4_impl.hpp", function "void xios::CONetCDF4::writeData(const xios::CArray<T, ndim> &, const std::cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> &, bool, unsigned long, const std::vector<unsigned long, std::allocator<unsigned long>> *, const std::vector<unsigned long, std::allocator<unsigned long>> *) [with T = double, int ndim = 1]", line 35 -> [ input array size = 180, intern array size = 45 ] Invalid input data ''

This may come from the fact that 2 or more fields have different domain decomposition pattern. For example, fieldA is defined on gridA=domainA+axis and fieldB defined on axis only. These two fields are in the same output file. After fieldA is successfully written into the .nc file, error occurs with fieldB. As fieldB is defined on axis, which is the same axis used for fieldA, the output file while recording fieldB, is expecting the same dimension of axis as in the fieldA. However, the axis is decomposed among servers. As result, each server holds only a section of the axis dimension and the incoherence occurs between the expected date size and the input data size.

We shall investigate into this issue in the future. For the moment, we suggest users to write fields with different decomposition patterns into different output files. Another workaround to this problem is to use different grid id. For example, using axisB, which is a duplicate of axis, in the definition of fieldB, can execute successfully.

Change History (0)

Note: See TracTickets for help on using tickets.