From: Roy S. <roy...@ic...> - 2018-07-04 20:50:30
|
On Wed, 4 Jul 2018, Renato Poli wrote: > I am trying to implement this one: comm().allgather(vector<MyClass>). > > The compiler fails. > It says MyClass is not a StandardType. > I tried with a tuple<>, without success. There actually is a StandardType<tuple<Foo...>> specialization, but it's untested and it's only useable if all the Foo types also have StandardType specializations. > Any suggestion? > Should I specialize a Packing<MyClass *> or so? Is your class a tuple of built-in constant-size types (or of other tuples of built-in types, and so on)? If so then please you can help us debug whatever's going wrong with StandardType<tuple>? If not, then is your class of constant size? If so then you can specialize StandardType<MyClass>; see the StandardType<pair> case in standard_type.h for the best example of what to do. There are more examples in parallel_algebra.h that might also be helpful. If you have a variable size class... then we're in uncharted territory: > I can see that for vector<string>, everything works fine. That's a special hand-coded case, I'm afraid. We haven't currently got any allgather_packed_range suitable for arbitrary size (de)serializable types. --- Roy |