Hi Klaus, On 06.12.18 07:29, Kemlath Orcslayer via GiNaC-devel wrote:
This approach is ABI compatible to older code but requires read_archive_MPI members in all ginac::basic derived objects. I’d like to stress that this does not introduce any MPI dependencies in GiNaC, the MPI serialisation code is separate and merely utilises the new archiving system.
Thanks for sharing your experience with us! If unarchiving is relevant for such large numbers of symbols, then the current design with a sym_lst is quite bad. You are the first to report this here, though. Note that adding a virtual member function does generally break the ABI of derived classes! They have to be recompiled. Why not fix this by adding a second signature to read_archive, i.e. by just dropping your _MPI prefix? We also have to consider that user-written subclasses might have implemented their own read_archive function. Maybe, we could have a virtual base class of read_archive_MPI (or the overload without _MPI) that interfaces to the existing read_archive function so we could keep API compatibility for some time? Anyhow, it sounds interesting. Can you post your code, please? Cheers -richy. -- Richard B. Kreckel <https://in.terlu.de/~kreckel/>