C'est type map
un concept important mais déroutant dans MPI. Je voudrais qu'une routine affiche ou imprime une carte de type pour moi.
Par exemple (tiré de la norme MPI-3),
MPI_TYPE_CREATE_RESIZED(MPI_INT, -3, 9, type1)
résultats dans le typemap
{(lb_marker, -3), (int, 0), (ub_marker, 6)}.
Utilisez à nouveau ce type:
MPI_TYPE_CONTIGUOUS(2, type1, type2)
et le typemap est
{(lb_marker, -3), (int, 0), (int,9), (ub_marker, 15)}
Je voudrais un moyen d'afficher automatiquement ce typemap.
On pourrait certainement utiliser MPI_Type_get_contents
et MPI_Type_get_envelope
et descendre récursivement jusqu'à atteindre les types intégrés. C'est plutôt une douleur géante et j'aurais pensé que 20 ans sur un outil existeraient pour le faire pour moi.
Quelques outils prometteurs, mais qui ne fonctionnent pas tout à fait:
J'avais trouvé MPImap de ~ 2001 ici . Tout d'abord, il doit être mis à jour pour Tcl / TK moderne, corrigé pour corriger certaines erreurs de mémoire et après cela; vous obtenez une interface graphique qui ne répond pas. Au lieu de cela, je recherche une bibliothèque / routine que je peux appeler au moment de l'exécution.
MPIDU_Datatype_deubg
est une routine de vidage de type interne spécifique à MPICH. Il n'affiche pas la carte de type (il affiche la représentation dataloop, à nouveau fermé)Il y avait autrefois un débogueur appelé XMPI qui répertorie parmi ses fonctionnalités la possibilité d'afficher une carte de type MPI. Ce débogueur semble être spécifique à LAM-MPI et n'utilise pas get_contents / get_envelope.
MPI_Datatype
, vous recherchez une fonction qui renvoie une chaîne de la forme{(type, displacement), (type, displacement), ..}
qui décrit la structure dudit type de données?Réponses:
Comme l'a dit Rob Latham , il n'y a pas de bonnes solutions préexistantes. Avec l'aide des liens fournis par tim, j'ai créé cette fonction disponible sur Github . J'ai pris votre exemple pour le test contigu + redimensionner ( ici ) et la sortie est
Avec cette fonction, il vous suffit de le faire
printMapDatatype(mydatatype)
. J'espère que c'est ce que vous recherchiez.Voici la fonction, juste en cas de:
la source