~~SLIDESHOW theme=yatil level=4~~ ====== Intel MPI et Fabric ====== Cet article traite du choix de la //Fabric// par la librairie Intel MPI. ===== Une Fabric ? ===== * Sous ce terme, on désigne un type de "réseau" de communication (FIXME à détailler) * La librairie Intel MPI est capable d'utiliser plusieurs //Fabric// différentes ===== Infiniband : PSM vs. Verbs ===== //Verbs// et //PSM// sont deux approches différentes pour les communications MPI sur IB ==== Verbs ==== * date des origines d'IB * interface entre les protocoles de haut niveau et le HCA (Host Controler, carte IB) * orienté connexion => lourd * conséquence, a besoin de HCA avec capacité d'offload * conçu pour des I/O à la base * MPI a été ensuite adapté pour utiliser Verbs directement ... mais ce n'est pas très adapté === Schéma Verbs === {{ :mpi:intel-mpi:ib-mpi-verbs.jpg |}} ==== PSM ==== * Performance Scaled Messaging * postérieur à Verbs * écrit pour MPI (et donc très bien adapté) * réside en //user space// sous forme d'une librairie * beaucoup plus léger que Verbs * utilise un découpage des rôles différents de Verbs : la partie "transport" est exécutée par le driver, et non par le HCA. Il n'utilise pas de technologie d'offload === Schéma PSM === {{ :mpi:intel-mpi:ib-mpi-psm.jpg |}} ==== Intel True Scale ==== * Il faut aussi savoir que notre réseau IB est basé sur l'architecture Intel True Scale * Elle a été conçue pour fonctionner avec PSM, spécialement pour les clusters HPC * Il est donc fortement conseillé de travailler avec PSM pour en tirer un plein profit ===== Fabric supportées ===== ^ ''shm''|Mémoire partagée | ^ ''dapl''| DAPL-capable network fabrics, such as InfiniBand, iWarp, Dolphin, and XPMEM (through DAPL) | ^ ''tcp''| TCP/IP-capable network fabrics, such as Ethernet and InfiniBand (through IPoIB) | ^ ''tmi''| TMI-capable network fabrics including Intel True Scale Fabric, Myrinet, (through Tag Matching Interface) | ^ ''ofa''| OFA-capable network fabric including InfiniBand* (through OFED verbs) | ==== shm ==== * Ce type de //Fabric// concerne seulement les machines à mémoires partagées, comme son nom l'indique * Utilisable pour des communication au sein d'un nœud de calcul ==== tcp ==== * Utilise le protocole réseau TCP, développé à l'origine pour TCP/IP * Lent ... * Peut fonctionner * sur ethernet * sur Infiniband à travers la couche "IPoIB" (//IP over Infiniband//) qui est activée sur CALI * A réserver aux anciens nœuds de calcul sans connexion IB ==== dapl ==== * //Direct Access Programming Library// * Protocole de couche haute pour réseau Infiniband * Utilise en dessous soit un mode connecté (Reliable Connection RC), soit un mode déconnecté (User Datagram UD) * Mode par défaut d'Intel MPI FIXME pourquoi ne pas l'utiliser ? ==== ofa / verbs ==== * La Fabric de type //ofa// (openFabric Alliance) passe par la couche //Verbs// * Elle est donc à déconseiller FIXME détailler ==== tmi ==== * //Tag Matching Interface// * Un des //fournisseur// (//provider//) TMI permet de passer par PSM * C'est la **Fabric à utiliser de préférence sur CALI** * La liste des fournisseurs TMI est déclarée dans un fichier de configuration de la librairie Intel, ''/opt/software/intel/impi_latest/etc64/tmi.conf'' ===== Configuration Intel MPI ===== * L'environnement Intel MPI est automatiquement configuré par les //modules// * La Fabric utilisée sera ''shm'' en intra-noeud, ''tmi'' en inter-noeud * Utilisera donc la mémoire partagée pour des communications entre processus localisés sur un même noeud, ou PSM (configuré comme fournisseur TMI) pour des communications entre noeuds différents * Configuration via ''I_MPI_FABRICS=shm:tmi'' ===== Références ===== * [[http://www.snia.org/sites/default/education/tutorials/2007/fall/networking/DrorGoldenberg_InfiniBand_Technology_Overview.pdf | InfiniBand Technology Overview]], //SNIA// ({{:mpi:intel-mpi:drorgoldenberg_infiniband_technology_overview.pdf|copie locale}}) * [[http://www.scientificcomputing.com/articles/2011/09/infiniband-architecture-impact-cpu-utilization | InfiniBand Architecture Impact on CPU Utilization]] : PSM et Verbs expliqués * [[https://software.intel.com/en-us/articles/dapl-ud-support-in-intel-mpi-library | Enabling Connectionless DAPL UD in the Intel® MPI Library]] * [[https://thegeekinthecorner.wordpress.com/2010/08/14/on-dapl/ | On DAPL]] * [[https://software.intel.com/en-us/articles/using-the-new-tmi-fabric-for-intel-mpi-library | Using the new TMI fabric for Intel MPI Library]] * [[http://www.diku.dk/~vinter/CC/Infinibandchap42.pdf | An Introduction to the InfiniBand Architecture]] ({{:mpi:intel-mpi:infinibandchap42.pdf|copie locale}}) * [[http://people.redhat.com/dledford/infiniband_get_started.html | Getting Started with InfiniBand]] * [[http://web.cse.ohio-state.edu/~panda/5429/papers/3c_VIG_SF.pdf | InfiniBand™ Host Channel Adapter Verb Implementer’s Guide]] * [[https://thegeekinthecorner.wordpress.com/category/infiniband-verbs-rdma/ | The Geek In The Corner -- Verbs and RDMA]] * {{:mpi:intel-mpi:infiniband_network_architecture.pdf| Infiniband Network Architecture}}