Arcane dispose d'un mécanisme interne de prise de traces pour l'analyse à postériori des performances des operations dites de message passing. Ce mécanisme est transparent pour l'utilisateur qui peut activer cette fonctionnalité via la variable d'environnement ARCANE_MESSAGE_PASSING_PROFILING. Selon la valeur qu'on lui passe, l'un des services sera executé :
Chacun de ces services fournira des traces au format associé.
Lorsque l'on positionne la variable d'environnement ARCANE_MESSAGE_PASSING_PROFILING=JSON, le service de profiling interne du message passing au format JSON est activé. Celui-ci va espionner par itération et par point d'entrée les fonctions MPI, indiquant le nombre d'appels à la fonction, la taille des messages échangés (en octet) et le temps passé dedans (en seconde). Ces informations sont disponibles dans le sous-répertoire listing de sortie du cas. Les fichiers sont nommés message_passing_logs.i.json où i correspond au numéro du sous-domaine espionné.
Exemple de trace JSON :
Lorsque l'on positionne la variable d'environnement ARCANE_MESSAGE_PASSING_PROFILING=OTF2, le service de profiling interne du message passing au format OTF2 est activé. Le format OTF2 est un format binaire (Open Trace Format 2) open source destiné à être lu par des outils de profiling comme Vampir, Scalasca, Tau, Score-P, etc.
Chaque appel aux fonctions MPI est instrumenté et va permettre d'obtenir des informations détaillées sur les communications entre sous-domaines, permettant notamment de détecter les problèmes de déséquilibre de charge ou d'identifier de mauvais motifs d'échanges.
Ces informations sont disponibles dans le sous-répertoire listing de sortie du cas. Elles sont stockées dans 2 fichiers et un répertoire. Le répertoire reprend le nom du cas et les deux fichiers également modulo les extensions *.otf2* et *.def*.
Exemple de trace OTF2 visualisée par Vampir :