Dims of size_t potentially problematic in 32-bit systems

Created by: ax3l

As we discussed last Monday, I think that the definition of adios2::Dims as of

using Dims = std::vector<size_t>;

might be potentially a bit problematic. The problem I am describing here applies to clusters of 32bit systems, such as Raspberry PI clusters, older Nvidia Tegra systems, among others. (Been there with PIConGPU, done that.)

adios2::Dims are used, inter alia, for (global) shapes, counts and starts (/offsets) in user-control. Since these metadata attributes are somewhat loose in ADIOS, user-level concepts like a moving simulation window can at some point overflow the range of size_t for e.g. the start. Similar problems can occur when writing the 1D shape of dataframes/tabular data, such as global particle arrays.

It is therefore probably safer to define this to a fixed integer type, such as

#include <vector>
#include <cstdint>

// ...
using Dims = std::vector< std::uint64_t >;