Les coprocesseurs Xeon Phi Architecture et modèles de programmation

Documents pareils
Architecture des ordinateurs

Gestion de clusters de calcul avec Rocks

Initiation au HPC - Généralités

Architecture des calculateurs

Rapport 2014 et demande pour Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121

Limitations of the Playstation 3 for High Performance Cluster Computing

Introduction au calcul parallèle avec OpenCL

Quantification d incertitude et Tendances en HPC

Génération de code binaire pour application multimedia : une approche au vol

INFO-F-404 : Techniques avancées de systèmes d exploitation

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009

Rapport de stage Master 2

Infrastructures Parallèles de Calcul

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

Guide d'installation rapide TFM-560X YO.13

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales

Optimisation de logiciels de modélisation sur centre de calcul

Programmation parallèle et ordonnancement de tâches par vol de travail. Thierry Gautier MOAIS, INRIA, Grenoble

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Choix d'un serveur. Choix 1 : HP ProLiant DL380 G7 Base - Xeon E GHz

La technologie Java Card TM

Segmentation d'images à l'aide d'agents sociaux : applications GPU

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle

Cloud Computing. Groupe : Vincent, Mohammed, Yannick, Allan Tuteur : Mr. NUSSBAUM Lucas Année : 2009/2010

Etude d architecture de consolidation et virtualisation

StruxureWare Power Monitoring v7.0. La nouvelle génération en matière de logiciel de gestion complète d énergie

SIGAMM/CRIMSON COMMISSION UTILISATEUR du 05/12/2014

Introduction au langage C

Une nouvelle génération de serveur

CAHIER DES CHARGES D IMPLANTATION

Diagrammes de Package, de déploiement et de composants UML

Guide d installation JMap 5.0

Une bibliothèque de templates pour CUDA

Windows Server Chapitre 1: Découvrir Windows Server 2008

Java - la plateforme

Retour d expérience de la plateforme de virtualisation sous Proxmox VE à l IPHC journée SysAdmin du 04/12/2014 à l INRA de Toulouse

Once the installation is complete, you can delete the temporary Zip files..

SRS DAY: Problématique liée à la virtualisation

Thomas Loubrieu (Ifremer) Small to Big Data Novembre 2013, Ifremer, Brest

Grid Computing. Mihaela JUGANARU-MATHIEU École Nationale Supérieure des Mines de St Etienne

Les mésocentres HPC àportée de clic des utilisateurs industriels

Cours Langage C/C++ Programmation modulaire

Eléments d architecture des machines parallèles et distribuées

Sanity Check. bgcolor mgcolor fgcolor

Projet d'infrastructure de stockage mutualisée

Chapitre 1. Infrastructures distribuées : cluster, grilles et cloud. Grid and Cloud Computing

Systèmes et traitement parallèles

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

DG-ADAJ: Une plateforme Desktop Grid

Installation de VirtualPOPC-1 sur Ubuntu Server LTS 64bits

SERVEUR LYNX CALLEO DATACENTER 2460

Introduction à la Programmation Parallèle: MPI

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

Testez votre installation. Créer un répertoire vide

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Application Form/ Formulaire de demande

Cluster de calcul Freeware en Océanographie Opérationnelle

Ordinateur Génération

Intel Corporation Nicolas Biguet Business Development Manager Intel France

Summary / Sommaire. 1 Install DRIVER SR2 USB01 Windows seven 64 bits / Installation du DRIVER SR2 USB01 Windows seven 64 bits 2

Introduction à CUDA.

Le RESEAU Espace Multimédia de Saint-loise

Drupal : Optimisation des performances

V- Présentation des Equipements

Les environnements de calcul distribué

SERVEUR CALLEO APPLICATION R269M

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

WEB page builder and server for SCADA applications usable from a WEB navigator

Machines Virtuelles. et bazard autour. Rémi Forax

Guide de Tarification. Introduction Licence FD Entreprise Forfaits clé en main SaaS SaaS Dédié SaaS Partagé. Page 2 Page 3 Page 4 Page 5 Page 8

Introduction à la programmation des GPUs

BONJOURGRID : VERSION ORIENTÉE DONNÉE & MAPREDUCE SÉCURISÉ

F-7a-v3 1 / Bourses de mobilité / Mobility Fellowships Formulaire de demande de bourse / Fellowship Application Form

High Performance IBM

Derrière toi Une machine virtuelle!

Programme New BI. Décember Thierry Milhé, Directeur des Systèmes d Information Sagem Défense Sécurité (groupe Safran)

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Outil d aide au choix Serveurs Lot 4 Marché Groupement de Recherche

Déploiement OOo en environnement Windows Terminal Server

Gamme Serveurs HP ProLiant Rack

Serveur Lynx CALLEO Application 2240 Fiches Technique

Grid5000 aujourd'hui : Architecture & utilisation

Guide d installation de MEGA Desktop Application MEGA 2009 SP4

Programmation système I Les entrées/sorties

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Rappels Entrées -Sorties

La Forge INRIA : bilan et perspectives. Hervé MATHIEU - 11 mai 2010

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Brochure de la gamme IBM System x

Le projet Gaïa, le Big Data au service du traitement de données satellitaires CRIP - 16/10/2013 Pierre-Marie Brunet

Journée Utiliateurs Nouvelles du Pôle ID (Informatique) Pierre Neyron, LIG/CNRS

Calcul Haute Performance & Données

Retour d expérience, portage de code Promes dans le cadre de l appel à projets CAPS-GENCI

Un exemple de cloud au LUPM : Stratuslab

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

How to Login to Career Page

Communications performantes par passage de message entre machines virtuelles co-hébergées

GIGABIT PCI DESKTOP ADAPTER DGE-530T. Quick Installation Guide+ Guide d installation+

Transcription:

Les coprocesseurs Xeon Phi Architecture et modèles de programmation kamel.mazouzi@univ-fcomte.fr http://meso.univ-fcomte.fr Mésocentre de calcul Franche-Comté Université de Franche-Comté 4 décembre 2015 K. Mazouzi Mésocentre de calcul 1 / 24

Plan 1 Introduction 2 Architecture 3 Modèles de programmation 4 Performances K. Mazouzi Mésocentre de calcul 2 / 24

1 Introduction 2 Architecture 3 Modèles de programmation 4 Performances K. Mazouzi Mésocentre de calcul 3 / 24

Xeon Phi - MIC - KNC Xeon Phi premier produit de Intel pour les architectures many-cores Coprocesseur carte PCI express doté d un système Linux Dense, processeur simplifié Unité vectorielle plus large Plus de Threads matériels Plusieurs noms Many Integrated Core architecture, aka MIC Knights Corner, aka KNC (code name) K. Mazouzi Mésocentre de calcul 4 / 24

1 Introduction 2 Architecture 3 Modèles de programmation 4 Performances K. Mazouzi Mésocentre de calcul 5 / 24

Xeon Phi - MIC Plusieurs cœurs, x86, spécialisés 60 Cache L1, L2 Anneau bidirectionnel pour le cache L2 Accès mémoire (de la carte) très rapide Registres SIMD plus larges 4 hardware threads/coeur K. Mazouzi Mésocentre de calcul 6 / 24

Xeon Phi vs Sandy Bridge Xeon Phi 7120P Processeur 61 cœurs 1.28 GHz 512-bit SIMD 1.2 TFlop/s (DP) Cache L1 32KB/cœur L2 512KB/cœur, 30.5 MB/chip Mémoire 16 GB GDDR5 DRAM 352 GB/s Peak PCIe 5 GB/s 16 bit Sandy Bridge E5-2680 Processeur 16 cœurs 2.2 GHz 256-bit SIMD 250 GFlop/s (DP) Cache L1 32KB/cœur L2 256KB/cœur L3 30MB Mémoire 64 GB DDR3 51.2 GB/s par socket K. Mazouzi Mésocentre de calcul 7 / 24

Spécificités Les Xeon Phi sont basés sur la technologie x86 plus de cœurs plus de SIMD Même modèle de programmation que les CPUs Langages : C/C++, Fortran Parallélisme : OpenMP, MPI, OpenCL MPI sur le nœud et sur les cartes Tout code peut être exécuté sur les cartes (pas seulement les kernels) Même options d optimisation que sur les CPUs Optimize once, run anywhere Compilateurs Intel 13+ et GCC 5.1 (expérimental) Bibliothèques scientifiques : MKL, MAGMA MIC K. Mazouzi Mésocentre de calcul 8 / 24

Utilisation K. Mazouzi Mésocentre de calcul 9 / 24

Utilisation Utilisation intensive des Threads et de la Vectorisation K. Mazouzi Mésocentre de calcul 9 / 24

1 Introduction 2 Architecture 3 Modèles de programmation 4 Performances K. Mazouzi Mésocentre de calcul 10 / 24

Les modèles de programmation HOST DEVICE Host-only Offload Symmetric Native LEO Automatic MPI -mmic flag LEO : Language Extentions for Offload K. Mazouzi Mésocentre de calcul 11 / 24

Exemple : Hello OpenMP 1 2 # include <stdio.h> 3 # include <omp.h> 4 5 main () { 6 7 int tid ; 8 9 #pragma omp parallel private ( tid ) 10 { 11 12 tid = omp _get_thread_num (); 13 printf (" Hello World from thread = %d\n", tid ); 14 15 } Hello.c K. Mazouzi Mésocentre de calcul 12 / 24

Le mode : native Depuis le noeud Compiler avec l option -mmic Utiliser l outil micnativeloadex pour lancer le programme...ou se connecter en ssh sur la carte... Hello World from thread = 20 Hello World from thread = 10 Hello World from thread = 21 $ icc -openmp Hello -mmic World hello.c from thread -o hello.mic = 10 $ micnativeloadex Hello World./hello.mic from thread = 9 Hello World from thread = 12 Hello World from thread = 11 Hello World from thread = 39... K. Mazouzi Mésocentre de calcul 13 / 24

Le mode : native Depuis le noeud Compiler avec l option -mmic Utiliser l outil micnativeloadex pour lancer le programme...ou se connecter en ssh sur la carte... Hello World from thread = 20 Hello World from thread = 10 Hello World from thread = 21 $ icc -openmp Hello -mmic World hello.c from thread -o hello.mic = 10 $ micnativeloadex Hello World./hello.mic from thread = 9 Hello World from thread = 12 Hello World from thread = 11 Hello World from thread = 39... K. Mazouzi Mésocentre de calcul 13 / 24

Le mode : offload - LEO Exemple Hello OpenMP avec offload 1 # include <omp.h> 2 3 # include <stdio.h> 4 # include <omp.h> 5 6 main () { 7 8 int tid ; 9 10 #pragma offload target ( mic : 0) 11 #pragma omp parallel private ( tid ) 12 { 13 14 tid = omp _get_thread_num (); 15 printf (" Hello World from thread = %d\n", tid ); 16 17 } hello-offload.c K. Mazouzi Mésocentre de calcul 14 / 24

Le mode : offload - LEO Exemple Hello OpenMP avec offload 1 # include <omp.h> 2 3 # include <stdio.h> 4 # include <omp.h> 5 6 main () { 7 8 int tid ; 9 10 #pragma offload target ( mic : 0) 11 #pragma omp parallel private ( tid ) 12 { 13 14 tid = omp _get_thread_num (); 15 printf (" Hello World from thread = %d\n", tid ); 16 17 } hello-offload.c Déporter le bloc suivant sur le mic0 K. Mazouzi Mésocentre de calcul 14 / 24

Le mode : offload - LEO Depuis le noeud Insérer des pragma offload dans le code Compiler uniquement avec l option -openmp Lancer le programme sur le CPU... Hello World from thread = 14 Hello World from thread = 46 Hello World from thread = 12 $ icc -openmp -mmic hello-offload.c -o hello-offload Hello World from thread = 104 $ export MIC_ENV_PREFIX=MIC Hello World from thread = 90 $ MIC_OMP_NUM_THREADS=240./hello-offload Hello World from thread = 23 $./hello-offload Hello World from thread = 120 Hello World from thread = 201... K. Mazouzi Mésocentre de calcul 15 / 24

Le mode : offload - LEO Depuis le noeud Insérer des pragma offload dans le code Compiler uniquement avec l option -openmp Lancer le programme sur le CPU... Hello World from thread = 14 Hello World from thread = 46 Hello World from thread = 12 $ icc -openmp -mmic hello-offload.c -o hello-offload Hello World from thread = 104 $ export MIC_ENV_PREFIX=MIC Hello World from thread = 90 $ MIC_OMP_NUM_THREADS=240./hello-offload Hello World from thread = 23 $./hello-offload Hello World from thread = 120 Hello World from thread = 201... K. Mazouzi Mésocentre de calcul 15 / 24

Le mode : offload - automatique Concerne uniquement certaines routines MKL Aucun changement dans le code! Une variable d environnement à exporter : export MKL_MIC_ENABLE=1 Les routines MKL Level-3 BLAS functions?gemm (for m,n > 2048)?TRSM (for M,N > 3072)?TRMM (for M,N > 3072)?SYMM (for M,N > 2048) LAPACK functions LU (M,N > 8192) QR Cholesky K. Mazouzi Mésocentre de calcul 16 / 24

Le mode : symmetric MPI sur CPU et Xeon Phi Depuis le noeud Uniquement Intel MPI Compiler deux versions : une version CPU, une version MIC Export une variable d environnement export I_MPI_MIC=1 Lancer l exécution avec mpiexec.hydra... Hello World from process = 16 Hello World from process = 133 $ mpiicc -mmic Hello hello-mpi.c World from -o process hello-mpi.mic = 140 $ mpiicc hello-mpi.c Hello World -ofrom hello-mpi.exe process = 234 $ export I_MPI_MIC=1 Hello World from process = 1 $ mpiexec.hydra Hello -host World node1-51 from process -n 16 =./hello-mpi.exe 0 : -n 244 -host Hello mic0 World /Work/kmazouzi/hello-mpi.mic from process = 33 Hello World from process = 62... K. Mazouzi Mésocentre de calcul 17 / 24

Le mode : symmetric MPI sur CPU et Xeon Phi Depuis le noeud Uniquement Intel MPI Compiler deux versions : une version CPU, une version MIC Export une variable d environnement export I_MPI_MIC=1 Lancer l exécution avec mpiexec.hydra... Hello World from process = 16 Hello World from process = 133 $ mpiicc -mmic Hello hello-mpi.c World from -o process hello-mpi.mic = 140 $ mpiicc hello-mpi.c Hello World -ofrom hello-mpi.exe process = 234 $ export I_MPI_MIC=1 Hello World from process = 1 $ mpiexec.hydra Hello -host World node1-51 from process -n 16 =./hello-mpi.exe 0 : -n 244 -host Hello mic0 World /Work/kmazouzi/hello-mpi.mic from process = 33 Hello World from process = 62... K. Mazouzi Mésocentre de calcul 17 / 24

1 Introduction 2 Architecture 3 Modèles de programmation 4 Performances K. Mazouzi Mésocentre de calcul 18 / 24

Bonnes pratiques Utiliser N 1 cœurs, laisser 1 cœur pour le système Utiliser plusieurs Threads par cœurs ( 4) Placer les Threads sur les cœurs (CPU Affinity) avec la variable KMP_AFFINITY valeurs possibles : compact, balanced, scatter Activer l auto-vectorisation, l option -vec-report3 pour le diagnostique Aligner les données Les outils d analyse de performances sont limités à Intel Vtune K. Mazouzi Mésocentre de calcul 19 / 24

Matmul OpenMP sur Xeon Phi Matmul, N=3000 Rpeak = 1.2 TFlop/s GFlop/s 140 120 100 80 60 40 20 0 Xeon Phi 61 cores, 1.38GHz CPU 12 cores, 2.6GHz #Threads Exécution en mode native sur Xeon Phi K. Mazouzi Mésocentre de calcul 20 / 24

Matmul OpenMP sur Xeon Phi Matmul, N=3000 Rpeak = 1.2 TFlop/s GFlop/s 140 120 100 80 60 40 20 0 Xeon Phi 61 cores, 1.38GHz CPU 12 cores, 2.6GHz Où sont les téraflop/s?? #Threads Exécution en mode native sur Xeon Phi K. Mazouzi Mésocentre de calcul 20 / 24

DGEMM sur Xeon Phi DGEMM : version optimisée, MKL, de Matmul 240 threads sur Xeon Phi, 12 threads sur CPU GFlop/s 1000 900 800 700 600 500 400 300 200 100 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 500 1500 2500 3500 4500 5500 6500 7500 8500 9500 Square Matrix size Rpeak = 1.2 TFlop/s MKL (native) MKL (offload) MKL (host) Host matmul K. Mazouzi Mésocentre de calcul 21 / 24

Performances Will My Code Run on Xeon Phi? Yes... but that s the wrong question Will your code run best on Phi?, or Will you get great Phi performance without additional work? (The answer is most likely NO) Source : Intel FAQ K. Mazouzi Mésocentre de calcul 22 / 24

Xeon Phi au mésocentre File d attente SGE xphi.q (cluster lumière) Ressources Intel(r) Xeon(r) CPU e5-2630 v2 @ 2.60GHz (Ivybridge) 12 coeurs, 128G de mémoire 3 cartes 5110P, 60 x 1.053GHz, 8Go, 1 TFlop/s (DP) 1 cartes 7120P, 61 x 1.38GHZ, 16Go, 1.2 TFlop/s (DP) K. Mazouzi Mésocentre de calcul 23 / 24

Questions? K. Mazouzi Mésocentre de calcul 24 / 24