Quelqu'un peut-il expliquer les différences entre l'OpenMPI et les implémentations MPICH du MPI ? Laquelle des deux est une meilleure mise en œuvre ?
Réponses
Trop de publicités?Si vous faites du développement plutôt que du système de production, optez pour MPICH. MPICH a un débogueur intégré, alors que Open-MPI ne le fait pas la dernière fois que j'ai vérifié.
En production, l'Open-MPI sera très probablement plus rapide. Mais alors vous voudrez peut-être rechercher d'autres alternatives, comme Intel MPI.
D'après mon expérience, une bonne caractéristique qu'OpenMPI supporte mais que MPICH ne supporte pas est l'affinité des processus. Par exemple, dans OpenMPI, en utilisant -npersocket
vous pouvez définir le nombre de rangs lancés sur chaque socket. En outre, rankfile
d'OpenMPI est très pratique lorsque vous voulez identifier les rangs des cœurs ou les surabonner.
Enfin, si vous avez besoin de contrôler le mappage des rangs sur les cœurs, je vous suggère certainement d'écrire et de compiler votre code en utilisant OpenMPI.