2017-05-18 2 views
0

Je ne comprends pas pourquoi Intel MPI utilise DAPL, si les ibverbs natifs sont plus rapides que DAPL, OpenMPI utilise natif ibverbs. Cependant, dans ce benchmark, IntelMPI réalise de meilleures performances.Pourquoi Intel MPI utilise-t-il les ibverbs natifs DAPL et OpenMPI?

http://www.hpcadvisorycouncil.com/pdf/AMBER_Analysis_and_Profiling_Intel_E5_2680.pdf

+0

Brayme, pourquoi DAPL est plus lent que ibverbs natif? Pour quel matériel et quelle était la source de ce fait? DAPL peut être par défaut seulement pour certaines versions d'Intel MPI et du matériel (et certaines [d'autres interfaces peuvent être supportées] (https://software.intel.com/en-us/get-started-with-mpi-for-linux): psm, hfi, libfabric, scif, ...). Y a-t-il des repères plus récents? Quelle est votre tâche? – osgx

+0

Je lis ici http://www.advancedclustering.com/act_kb/mpi-over-infiniband/ et il est dit Intel MPI utilise DAPL et est plus lent que OpenMPI, mais dans ce cas-test AMBER_Analysis IntelMPI est plus rapide que OpenMPI. J'ai besoin de comprendre comment fonctionne MPI sur Infiniband, en particulier de ces 2 bibliothèques, et en ce qui concerne OFED, ma thèse est à ce sujet, mais je ne peux pas le comprendre. –

+0

Le "ici" de http://www.advancedclustering.com/act_kb/mpi-over-infiniband/ est obsolète. Il n'y a pas de date indiquée, mais il s'agit de bibliothèques plus anciennes, et cela peut être faux dans certaines situations. Oui, s'il y a 'dapl', Intel MPI l'utilisera. Mais nous avons besoin de microbenchmarks (pas le complexe AMBER) pour comparer la latence pratique de messages de différentes tailles sur le même matériel avec IntelMPI avec DAPL; avec OFA (verbes OFED); avec OFI; et OpenMPI avec différentes options supportées par lui. Si vous avez besoin de comprendre quelque chose, essayez de lire de vrais docs/srcs; faire des tests et ne poser que des questions spécifiques ici. – osgx

Répondre

0

Intel MPI utilise plusieurs interfaces pour interagir avec le matériel et DAPL est pas par défaut pour tous les cas. OpenMPI sélectionnera aussi une interface pour le matériel actuel, ce ne sera pas toujours ibverbs, il y aura une API de mémoire partagée pour les interactions avec les nœuds locaux et TCP pour les hôtes exclusivement Ethernet.

Liste pour Intel MPI (Linux):

https://software.intel.com/en-us/get-started-with-mpi-for-linux

Mise en route avec la bibliothèque Intel® MPI pour Linux * OS. Dernière mise à jour le 24 Août ici à 2015

soutien pour toute combinaison des tissus d'interconnexion suivants:

  • Mémoire partagée
  • tissus de réseau avec des capacités d'adaptation de l'étiquette via l'interface Matching Tag (TMI), tels que Intel® vrai Tissu d'échelle, Infiniband *, Myrinet * et d'autres interconnexions
  • interface InfiniBand native * par OFED * verbes fournis par Open Fabrics Alliance * (OFA *)
  • OpenFabrics Interface * (* BIF)
  • tissus de réseau RDMA capable par DAPL *, telles que InfiniBand * et Myrinet * Sockets, par exemple, TCP/IP sur Ethernet *, Gigabit Ethernet *, et d'autres interconnexions

Interface tissu peut être sélectionné avec la variable d'environnement I_MPI_FABRICS: https://software.intel.com/en-us/node/535584

Sélection tissus. Dernière mise à jour le 22 février 2017

La bibliothèque Intel® MPI vous permet de sélectionner une structure de communication lors de l'exécution sans avoir à recompiler votre application. Par défaut, il sélectionne automatiquement la structure la plus appropriée en fonction de la configuration logicielle et matérielle. Cela signifie que, dans la plupart des cas, vous n'avez pas à vous soucier de sélectionner manuellement un tissu. Toutefois, dans certaines situations, la spécification d'une structure de communication particulière peut améliorer les performances de votre application. Vous pouvez spécifier des matrices pour les communications au sein du noeud et entre les noeuds (communications intra-noeud et inter-noeud, respectivement). Les tissus suivants sont disponibles:

Fabric - matériel réseau et les logiciels utilisés

  • shm - Mémoire partagée (uniquement pour les communications intra-nœud).
  • dapl - Fabricants de réseau pouvant être connectés à la bibliothèque de programmation Direct Access (* DAPL), tels que InfiniBand * et iWarp * (via DAPL).
  • tcp - Fabricants de réseau compatibles TCP/IP, tels que Ethernet et InfiniBand * (via IPoIB *). - Tissus de réseau compatibles avec l'interface TIM (Tag Matching Interface), tels que Intel® True Scale Fabric, Intel® Omni-Path Architecture et Myrinet * (via TMI).
  • ofa - Tissus réseau OpenFabrics Alliance * (OFA), tels que InfiniBand * (à travers les verbes OFED *).
  • ofi - Tissus réseau OpenFabrics Interfaces * (OFI), tels que Intel® True Scale Fabric, Architecture Intel® Omni-Path, InfiniBand * et Ethernet (via l'API OFI).

Pour la communication entre noeuds, elle utilise la première structure disponible de la liste de structure par défaut. Cette liste est définie automatiquement pour chaque configuration matérielle et logicielle (voir I_MPI_FABRICS_LIST pour plus de détails).

Pour la plupart des configurations, cette liste est la suivante:

dapl,ofa,tcp,tmi,ofi

+0

Je ne comprends pas exactement ce que vous entendez par "interface". Je suis nouveau dans ceci. –

+0

Probablement, les raisons sont historiques, vérifiez https://software.intel.com/en-us/forums/intel-clusters-and-hpc-technology/topic/279244 Gergana S. post de 2012: "* Certainement, nous Nous investissons du temps et de l'effort pour soutenir directement les verbes OFED via le tissu 'ofa' parce que nous estimons que cela en vaut la peine, il nous donne la possibilité d'optimiser directement la pile logicielle OFED et offre de bons avantages de bande passante .si vous n'avez pas installé l'OFED, votre autre option ... est dapl ... La seule chose que nous pouvons recommander est: si vous avez installé OFED, prenez-en l'avantage par l'intermédiaire d'ofa. * " – osgx

+0

interface logicielle au matériel (API) en tant qu '"interface". DAPL et les verbes (OFED, ofa) et ofi (libfabric) sont juste différentes API pour le matériel. – osgx