Performances et optimisations



Documents pareils
Manuel de System Monitor

Mesurer les performances (CPU) sous Linux

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

2011 Hakim Benameurlaine 1

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Optimisation de logiciels de modélisation sur centre de calcul

Programmation C. Apprendre à développer des programmes simples dans le langage C

Introduction aux Systèmes et aux Réseaux, Master 2 CCI

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Analyse de performance, monitoring

Architecture des ordinateurs

Architecture des ordinateurs

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours Programmation Système

I00 Éléments d architecture

Rapport d activité. Mathieu Souchaud Juin 2007

Cours 1 : La compilation

Introduction au langage C

Résolution de systèmes linéaires par des méthodes directes

1 Description générale de VISFIELD

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Limitations of the Playstation 3 for High Performance Cluster Computing

Programmation parallèle et distribuée

Systèmes d exploitation

Linux 1: Présentation

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

Square-IT-Consulting. Présentation

Vérifier la qualité de vos applications logicielle de manière continue

CH.3 SYSTÈMES D'EXPLOITATION

Introduction à MATLAB R

IV- Comment fonctionne un ordinateur?

Architecture des calculateurs

Concept de machine virtuelle

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Chapitre 2 : Abstraction et Virtualisation

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

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

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

VMWare Infrastructure 3

Évaluation et implémentation des langages

Cours 1 : Qu est-ce que la programmation?

Architectures d implémentation de Click&DECiDE NSI

HPC by OVH.COM. Le bon calcul pour l innovation OVH.COM

Eric Bertrand 08/11/06 Maître de conférence 1

Manuel du Desktop Sharing

VMware vsphere 5 Préparation à la certification VMware Certified Professional 5 Data Center Virtualization (VCP5-DCV) - Examen VCP510

Analyse de sécurité de logiciels système par typage statique

SQL Server 2012 et SQL Server 2014

Métriques de performance pour les algorithmes et programmes parallèles


Le groupe CSS. La société CEGI intervient depuis la Martinique au cœur des systèmes de gestion de nos clients. La société existe depuis 1973!

Consolidation. Grid Infrastructure avec la 11gR2

EMC AVAMAR. Logiciel et système de sauvegarde avec déduplication

Les structures de données. Rajae El Ouazzani

Virtualisation des ressources serveur. Exemple : Systèmes partitionnés sous HP-UX et Oracle

Portage d applications sur le Cloud IaaS Portage d application

Représentation des Nombres

//////////////////////////////////////////////////////////////////// Administration bases de données

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Chapitre IX : Virtualisation

Initiation au HPC - Généralités

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

Architecture des Ordinateurs. Partie II:

Informatique Générale

Bases de données documentaires et distribuées Cours NFE04

Journée CUME 29 Mars Le déport d affichage. Vincent Gil-Luna Roland Mergoil.

Dynamic Computing Services solution de backup. White Paper Stefan Ruckstuhl

HOWTO INSTALLATION DB2 et NSE (sous RedHat)

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

Algorithmique et Programmation, IMA

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés 2011/2012

IBM Tivoli Monitoring, version 6.1

StruxureWare Power Monitoring Expert v7.2

Introduction à la Programmation Parallèle: MPI

Guide de démarrage Intellipool Network Monitor

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Un logiciel pour aller plus loin dans la gestion de vos espaces. Mémo technique

Fiche Technique. Cisco Security Agent

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Corrigé des TD 1 à 5

Introduction aux systèmes temps réel. Iulian Ober IRIT

CNAM Déploiement d une application avec EC2 ( Cloud Amazon ) Auteur : Thierry Kauffmann Paris, Décembre 2010

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Architectures haute disponibilité avec MySQL. Olivier Olivier DASINI DASINI - -

JES Report Broker. Campus Technologies. SAE de CHALEMBERT 1 Rue Blaise PASCAL JAUNAY-CLAN info@campustec.

Bull, un catalogue de service particulier pour répondre aux environnements complexes

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Systèmes en réseau : Linux 1ère partie : Introduction

PG208, Projet n 3 : Serveur HTTP évolué

Tutoriel QSOS. Version /02/2013

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

OPEN DATA : CHALLENGES ET PERSPECTIVES D ENTREPOSAGE

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Transcription:

Performances et optimisations Outils pour le calcul scientifique à haute performance École doctorale sciences pour l ingénieur juin 2001 Philippe MARQUET phm@lifl.fr Laboratoire d informatique fondamentale de Lille Université des sciences et technologies de Lille Performances et optimisations p. 1/38

Ce cours est diffusé sous la licence GNU Free Documentation License, http://www.gnu.org/copyleft/fdl.html La dernière version de ce cours est accessible à partir de http://www.lifl.fr/west/courses/cshp/ $Id: perf.tex,v 1.6 2001/11/02 13:08:26 marquet Exp $ Performances et optimisations p. 2/38

Table des matières Motivations Analyse de performance Optimisations Compilateurs IBM Fortran et C Performances et optimisations p. 3/38

Remerciements Cette présentation est essentiellement basée sur Performance anlysis tools Maui High Performance Computing Center, 2000 http://www.mhpcc.edu/training/workshop2/performance_tools/ Optimisations Fortran et C sur IBM Risc System 6000 Olivier HESS IBM France, 2000 Environnement Fortran, éléments d optimisation Yvon TINEL CRI, Université de Lille 1, 2001 Performances et optimisations p. 4/38

Motivations Performances et optimisations p. 5/38

Performances et optimisations Performance = raison d être des programmes parallèles Complexité et multiplicité des facteurs influents les performances application matériel logiciel Outils d analyse de l exécution, que fait mon programme? commandes de chronométrage bibliothèques de prise de temps profilers générateurs de traces d exécution analyseur graphiques de traces outils temps-réels et post-mortem Optimisations «bas niveau» du programme réglage du compilateur optimisations de l allocation mémoire optimisation de boucles Performances et optimisations p. 6/38

Analyse de performance Performances et optimisations p. 7/38

Analyse de performances Pourquoi une analyse des performances réduire le temps d exécution (wall-clock time) optimiser l utilisation des ressources (CPU time) aussi réduire l utilisation mémoire, la place disque Trouver les points chauds et éliminer les goulots d étranglement Point chaud zone de code utilisant beaucoup de temps CPU Goulot d étranglement zone de code utilisant inefficacement les ressources Processus itératif et interactif boucle homme dans la boucle Performances et optimisations p. 8/38

Prise de temps (1) Temps total d exécution d un programme temps écoulé (elapsed time, real time, wall-clock time) temps utilisateur : temps CPU utilisé par les instructions du programme temps système : temps CPU utilisé par le système d exploitation pour le compte du programme Commande Unix time exemple : % time monprogramme real 2m2.65s user 1m1.48s sys 0m4.61s commandes internes time des shells affichage différent suivant le shell (tcsh, ksh, variable time du shell...) Commande timex informations complémentaires : I/O, attente... Performances et optimisations p. 9/38

Prise de temps (2) Chronomètres, fonctions départ et arrêt Fonction Unix gettimeofday() résolution dépendante du système (microseconde sur IBM SP) utilisation dans un code C #include <sys/time.h> #include <unistd.h> struct timeval start, end ; long int useconds; gettimeofday (&start, (struct timeval*)0); /*... code a mesurer... */ gettimeofday (&end, (struct timeval*)0); useconds = (end.tv_sec - start.tv_sec) * 1000000 + end.tv_usec - start.tv_usec ; appel depuis Fortran via une fonction C Performances et optimisations p. 10/38

Prise de temps (3) Fonctions read_real_time() et time_base_to_time() sur AIX haute résolution (nanoseconde sur l IBM SP) utilisation dans un code C #include <sys/time.h> timebasestruct_t start, end ; long int seconds, nseconds; read_real_time (&start, TIMEBASE_SZ); /*... code a mesurer... */ read_real_time (&end, TIMEBASE_SZ); /* normalisation */ time_base_to_time (&start, TIMEBASE_SZ); time_base_to_time (&end, TIMEBASE_SZ); seconds = end.tb_high - start.tb_high; nseconds = end.tb_low - start.tb_low; if (nseconds < 0) { seconds--; nseconds += 1000000000; } Performances et optimisations p. 11/38

Profiling (1) Instrumentaliser le code Exécuter le programme génération de fichiers de statistiques Visualiser ces statistiques arbre des appels de fonctions pourcentage de temps CPU utilisé pour chaque sous arbre (fonction et sa descendance) pour chaque instance de fonction pour chaque fonction nombre d appel à chaque fonction Résultat pour l exécution donnée état de la machine jeu de données du programme perturbation par observation Performances et optimisations p. 12/38

Profiling (2) Commande Unix prof compilation avec l option -p fichiers de statistiques fichier mon.out fichiers mon.out.0, mon.out.1 si plusieurs processus commande prof d affichage textuel des statistiques prof prof -m mon.out prof -m mon.out.0 mon.out.1 prof -m mon.out.* plusieurs fichiers de statistiques : moyenne utilise le fichier binaire pour exploiter les statistiques Performances et optimisations p. 13/38

Profiling (3) Commande Unix gprof graphical prof compilation avec l option -pg fichiers de statistiques fichier gmon.out fichiers gmon.out.0, gmon.out.1 si plusieurs processus commande gprof d affichage graphique des statistiques gprof monprogramme gprof monprogramme -m mon.out.* Commande AIX tprof analyse au niveau de la ligne de source Outil visuel xprofiler couche X Windows au dessus de gprof Performances et optimisations p. 14/38

État de la machine Configuration matérielle Configuration logicielle Utilisation des ressources Performances et optimisations p. 15/38

Configuration matérielle de l IBM SP Demander aux administrateurs système! Liste du matériel installé commande lscfg processeurs, carte mémoire, périphériques (disques...) Informations à propos des processeurs commande qcpu type de processeur taille des mémoires caches Performances et optimisations p. 16/38

Configuration logicielle de l IBM SP Demander aux administrateurs système! Commande lslpp, lslpp -l Performances et optimisations p. 17/38

Utilisation des ressources Utilisation des ressources préalablement à l exécution d un programme équilibre de la charge entre différents nœuds charger raisonablement un nœud système d équilibre automatique : LSF Load Sharing Facilities non (encore?) installé à Lille Utilisation exclusive des ressources utilisation non-interactive de la machine file d attente des travaux risque de gaspillage des ressources non-mis en place à Lille Quelle utilisation des ressources par mon programme Performances et optimisations p. 18/38

Liste des processus Pour un nœud de la machine Liste des processus programmes s exécutant commande ps nombreuses options exemple : % ps ux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND marquet 681 0.0 1.0 2084 1288 tty1 S 08:33 0:00 -tcsh marquet 1067 0.1 5.3 8488 6868 tty1 S 08:34 0:20 emacs marquet 1727 0.0 0.6 2464 884 pts/0 R 12:22 0:00 ps ux Identification des processus les plus actifs commandes top et monitor tri par temps CPU ou utilisation mémoire pourcentage d utlisation des CPU monitoring Utilisation de la mémoire virtuelle commande vmstat Performances et optimisations p. 19/38

Visualisation avec VT VT visualization tool visualisation graphique (outils X Windows) prise en compte (voire vue globale) de plusieurs nœuds de la machine Deux utilisations visualisation de l exécution d un programme visualisation de l état de la machine Deux modes visualisation de traces : analyse post-mortem monitoring : analyse temps-réels Nombreux types de vues état des processeurs : utilisateur/système/libre/attente communication entre les processus d un programmes activité système : changements de contexte, défaut de page... activité réseau, activité des disques Choix des vues préférées... Performances et optimisations p. 20/38

Optimisations Performances et optimisations p. 21/38

Optimiser : est-ce le rôle du compilateur? Optimisation du code généré travail du compilateur respect obligatoire des dépendances de données analyse du code pour trouver ces dépendances respect de l ordre des calculs (vs performances, mul-add...) optionnel, problèmes numériques (arrondis) Pourquoi le compilateur ne peut pas tout faire fausses dépendances connaissance du programmeur (vecteurs d indices) analyse interprocédurale ordre des calculs à respecter? Optimisation manuelle optmisation du code généré compréhension du schéma d exécution en modifiant le code source! compréhension du schéma de génération de code Performances et optimisations p. 22/38

Hiérarchies mémoires Comment faire un grosse mémoire bon marché mais rapide? intercaler une petite mémoire rapide (donc chère) entre le processeur et une grande mémoire bon marché fonctionne remarquablement bien Hiérarchie à plusieurs niveaux registres > cache L1 > cache L2 > (cache L3) > mémoire centrale > mémoire d échange sur disque image partielle des niveaux supérieurs dans les niveaux inférieurs Défaut de cache cache organisé en ligne de cache donnée non présente dans le cache transfert depuis la mémoire pas de place dans le cache transfert du cache vers la mémoire transfert de lignes entre la mémoire et le cache Exploiter la localité spatiale : accès à une adresse voisine temporelle : accès successifs à une même adresse Performances et optimisations p. 23/38

Organisation des caches Organisation du cache en «ensembles associatifs» cache set associativity un ensemble associatif dans le cache correspond à toutes les adresses mémoire égales à un modulo près un ensemble associatif est de taille limité on parle du nombre de voies d un cache cache du Power 2 : 4-way cache set associativity cache du Power 3 : 128-way cache set associativity lors de la descente dans le cache d une adresse, il faut trouver une place libre dans son ensemble associatif Inconvénient de l organisation en ensembles associatifs accès à des lignes de matrices (Fortran) une ligne de matrice = une ligne de cache plusieurs lignes de même adresse modulo une puissance de 2 toutes les adresses des lignes tombent dans le même ensemble associatif! solution : matrice de lignes de taille 2 n + 1 Performances et optimisations p. 24/38

Accès aux tableaux Placement des tableaux en mémoire C : suite de lignes F77 : suite de colonnes F90 : pas de placement spécifié Localité spaciale : utiliser successivement des données contiguës en mémoire C : boucle interne sur les colonnes F77 : boucle interne sur les lignes pas d accès le plus petit possible Localité temporelle : réutiliser plusieurs fois les mêmes données Calculs par blocs de taille adaptée aux niveaux rapides de la hiérarchie mémoire Performances et optimisations p. 25/38

Optimisations des boucles Concentrent en peu de lignes un maximum de temps de calcul Optimisations «élémentaires» permutaion, fusion, partitionnement, factorisation, réunion, déroulage,... valides seulement si elles respectent les dépendances entre les données Parallélisation automatique analyse de dépendances, ordonnancement, placement, génération de code trouve du parallélisme bien caché garantie d optimalité sur le domaine d application pas présent dans les compilateurs car code généré «trop compliqué» redistribution éventuelle des données les cas réels sont ou trop simples ou trop compliqués! Performances et optimisations p. 26/38

Permutation de boucles DO i = 1, N DO j = 1, N A(i,j) = 1/B(i,j) DO j = 1, N DO i = 1, N A(i,j) = 1/B(i,j) utile pour aligner les accès aux tableaux avec le placement en mémoire pas toujours légal Performances et optimisations p. 27/38

Partitionnement de boucles DO j = 1, N DO i = 1, N A(i,j) = 1/B(i,j) DO jj = 1, N, sj DO ii = 1, N, si DO j = jj, jj+sj-1 DO i = ii,ii+si-1 A(i,j) = 1/B(i,j) adaptation de la granularité à la hierarchie mémoire calcul par blocs (pas forcément alignés sur les axes) légal quand toutes les boucles sont permutables Performances et optimisations p. 28/38

Fusion/distribution de boucles DO i = 1, N A(i) =... B(i) =... A(i)... DO i = 1, N A(i) =... DO i = 1, N B(i) =... A(i)... fusion augmente la localité temporelle, élimine des tableaux temporaires distribution permet de construire des boucles parallèles l une ou l autre des formes est préférable selon les cas Performances et optimisations p. 29/38

Partage de l espace d itération DO i = 1, N A(a*i+b) = A(c)+... Ic = (c-b)/a DO// i = 1, Ic-1 A(a*i+b) = A(c)+... A(c) = A(c)... DO// i = Ic+1, N A(a*i+b) = A(c)+... utilisation typique : se débarasser d itérations problématiques exemple ci-dessus test à l intérieur de la boucle pour une seule itération... Performances et optimisations p. 30/38

Expansion des scalaires DO i = 1, N T=f(i) A(i) = A(i)+T*T DO// i = 1, N T[i]=f(i) A(i) = A(i)+T[i]*T[i] peut aller jusqu à la mise en assignation unique élimine de «fausses» dépendances dues à la réutilisation de la mémoire Performances et optimisations p. 31/38

Déroulage de boucles DO i = 1, N A(i) =... DO i = 1, N, 4 A(i) =... A(i+1) =... A(i+2) =... A(i+3) =... réduit le surcoût de contrôle des boucles donne des possibilités de pipeline et autres optimisations Performances et optimisations p. 32/38

Écrasement de boucles int a[100][300]; for (i=0; i<300; i++) for (j=0; j<100; j++) a[j][i] = 0; int a[100][300]; int *p = &a[0][0]; for (i=0; i<30000; i++) *p++ = 0; réduit le surcoût de contrôle des boucles peut donner des opportunités de déroulage Performances et optimisations p. 33/38

Compilateurs IBM Fortran et C Performances et optimisations p. 34/38

Options des compilateurs IBM (1) Compilateurs Fortran xlf et C xlc Niveau d optimisation -O ou -O2 par défaut pas d optimisation allonge le temps de compilation et la possiblement taille du code généré... Niveau d optimisation -O3 éventuel non respect de la sémantique/norme ré-arrangement des expressions arithmétiques suppression des expressions constantes des boucles DO remplacement des divisions par des multiplication par l inverse Respect de la sémantique et de la norme option -qstrict limite l agressivité de -O3 Performances et optimisations p. 35/38

Options des compilateurs IBM (2) Niveaux -O4 et -O5 : alias -O3 -qhot -qipa -qarch=auto -qtune=auto -qcache=auto et -O4 -qipa=level=2 Choix d architecture options -qarch=arch et -qtune=arch optimisations spécifiques à l architecture arch com : commun, portabilité auto : détection de l architecture et optimisation pour celle-ci exécution sur la machine de compilation pwr, pwr2, pwr3... optimisation pour l architecture donnée Analyse interprocédurale option -qipa à passer aussi à l édition de liens Performances et optimisations p. 36/38

Options des compilateurs IBM (3) Opérations flottantes option -qfloat non respect de la norme IEEE Parallélisation automatique option -qsmp de xlf_r ou xlf90_r en vue d une exécution sur un SMP parallélisation de certaines boucles DO Optimisation agressive sur les boucles option -qhot pas toujours sûre Rapport de compilation option -qreport=report listing des parallélisations effectuées et des optimisations de boucles report prend les valeurs smplist ou hotlist Performances et optimisations p. 37/38

Compilateurs IBM, quelles options? Code de production -O2 ou -O3 -qstrict Optimisations avancées -O4, -qhot... compilation avec et sans l option comparer les résultats de l exécution comparer les temps d exécution xxlf : interface graphique Performances et optimisations p. 38/38