template<
typename SpanType>
class Arcane::MessagePassing::Mpi::SerializeByteConverter< SpanType >
Wrappeur pour envoyer un tableau d'octets d'un sérialiseur.
SpanType doit être un 'Byte' ou un 'const Byte'.
Comme MPI utilise un 'int' pour le nombre d'éléments d'un message, on ne peut pas dépasser 2^31 octets pas message. Par contre, les versions 3.0+ de MPI supportent des messages dont la longueur dépasse 2^31. On utilise donc un type dérivé MPI contenant N octets (avec N donné par SerializeBuffer::paddingSize()) et on indique à MPI que c'est ce type qu'on envoie. Le nombre d'éléments est donc divisé par N ce qui permet de tenir sur 'int' si la taille du message est inférieure à 2^31 * N octets (en février 2019, N=128 soit des messages de 256Go maximum).
- Note
- Pour que cela fonctionne, le tableau buffer doit avoir une mémoire allouée arrondie au multiple de N supérieur au nombre d'éléments mais normalement cela est garanti par le SerializeBuffer.
Définition à la ligne 58 du fichier MpiSerializeDispatcher.cc.