Alors que les processeurs multi-cores (multi-coeurs) prolifèrent, améliorer les performances logicielles, et mieux utiliser la puissance processeur, demeure un enjeu important pour rester compétitif, surtout pour les applications développées en C ou C++. Mais jusqu’à présent le développement parallèle restait complexe à aborder pour le développeur. Programmez ! vous invite à découvrir en avant-première la nouvelle solution Intel, avec un tout nouveau plug-in Visual Studio, qui va radicalement changer votre vision du développement parallèle.
L’année 2009 sera non seulement l’année de la prolifération en masse des processeurs à 4 cœurs (Quad-Core) et le début des processeurs à 8 coeurs (Octo- Core), mais aussi l’année ou le développeur sera de plus en plus confronté aux performances des applications, de son code source sur ces processeurs. Bref, comment tirer parti des performances pour accélérer les applications Windows ? Les techniques de programmation dite parallèle et le " multi-threading " sont difficiles à maîtriser. Elles requièrent souvent un travail intensif d’apprentissage et de structuration et généralement une refonte partielle ou totale du code. Les outils d’aide à l’implémentation du multi-threading disponiblessur le marché sont rares et encore souvent complexes : Intel propose depuis quelques années des outils et des librairies multi-plates-formes pour la programmation sous C et C++. Jusqu’à présent, ces outils étaient surtout réservés aux développeurs de calculs hautes-performances ou à l’imagerie numérique.
PARALLEL STUDIO : LE PREMIER PAS !
Annoncée en août 2008, la collaboration entre Intel et Microsoft va aboutir cette année au lancement d’une nouvelle série d’outils appelée Intel Parallel Studio (prévue au second trimestre). Celle-ci supportera également la future Concurrency Runtime de Microsoft qui permettra finalement d’avoir une infrastructure commune de gestion des ressources coeurs de processeur pour toutes librairies et langages, que ce soit .net ou natif.
Intel Parallel Studio se présente sous la forme de plug-in comprenant 4 modules distincts (et utilisables séparément) qui permettront d’aborder la programmation parallèle directement sous l’environnement Visual Studio. Aujourd’hui, 3 des 4 modules sont disponibles et prêts à être installés en version bêta sur le CD :
1. Parallel Composer
2. Parallel Inspector
3. Parallel Amplifier
4. Parallel Advisor (disponible ultérieurement)
UNE INSTALLATION SIMPLE ET UNE PARFAITE INTÉGRATION
Les 3 modules sont simples à installer à partir d’un installateur commun et s’intègrent parfaitement dans l’environnement Visual Studio 2005 ou 2008. Chaque module peut-être installé séparément. Après installation, les modules sont disponibles soit directement en barre d’outils [Fig.1]soit par le menu "outils " (" tools "). Partant d’une méthodologie éprouvée de développement parallèle en 4 phases [Fig.2], chaque module s’imbrique dans une de ces phases :
1. Phase " Design " (Parallel Advisor), répondant aux questions par où commencer ? quels segments de code bénéficieront le plus du multi-threading ?
2. Phase " Codage " (Parallel Composer)
3. Phase " Debug " (Parallel Inspector)
4. Phase " Tuning " (Parallel Amplifier)
Tous les modules sont utilisables et compatibles avec le compilateur Microsoft Visual C++ (et aussi avec le compilateur Intel C++).
Parallel Composer complémente Visual Studio avec de nouvelles fonctionnalités et méthodes de multi-threading au niveau applicatif : il comprend un compilateur haute performance C/C++, compatible avec le compilateur Microsoft ainsi que la librairie multimédia Intel Performance Primitives (IPP) et la librairie de multi-threading Threading Building Blocks (TBB). Le compilateur supporte dès à présent le standard OpenMP 3.0, les fonctions lambda, ainsi que les fonctions : autovectorization, auto-parallelization et spawn. La librairie TBB est un élément clé du Composer. Elle offre une nouvelle approche relativement simple du multi-threading basée sur des templates C++, ce qui rend le code aisément portable et très performant. Parallel Inspector est l’outil le plus innovant du trio (en attendant le quatrième outil Parallel Advisor). En principe, il s’agit d’un debugger spécifiquement adapté aux méthodes de développement parallèle. Le but étant de donner confiance au développeur et que son code ne va pas générer des bugs imprévisibles et destructifs. Inspector permet de trouver rapidement et sans failles les erreurs classiques et difficiles à détecter du multi-threading : les " race conditions " et les " deadlocks ". Inspector intègre également un analyseurde mémoire très performant pour détecter les erreurs et les fuites de mémoire. L’outil, très flexible, peut être facilement configuré pour varier l’intensité et la durée des analyses, et permettre ainsi de faire des tests rapides ou bien des tests exhaustifs [Fig.3]. Parallel Amplifier est l’outil d’analyse de la performance et se place dans la 4e phase de la méthodologie (phase de " tuning "). L’outil permet de trouver les goulots d’étranglement et de donner des éléments de réponse à la question cruciale du développement parallèle : est-ce que mon code utilise au mieux les ressources et le potentiel de performance du processeur multi-core ?
Les fonctionnalités de Parallel Amplifier sont multiples et se basent principalement sur des analyses de performance en profondeur au niveau du processeur :
1. Analyse “Hotspot” des segments de code gros consommateur de ressources processeurs.
2. Analyse du niveau de parallélisme (“concurrency analysis”) permettant d’une part de repérer les segments de code qui sont parallèles et ceux qui ne le sont pas, et d’autre part d’identifier les segments de code qui sont exécutés de façon sérielle et limitent ainsi la montée en charge (" scalability "), voir [Fig.4].
3. Analyse de “Locks and Wait” pour détecter les objets de synchronisation et de blocage qui consomment le plus de temps d’attente.
UNE MISE EN OEUVRE PERMANENTE
L’intérêt principal de Parallel Studio réside dans la simplicité d’utilisation et l’intégration dans Visual Studio, ce qui permet une mise en oeuvre permanente tout au long du processus de développement.
EXEMPLE SIMPLE
Prenons l’exemple d’un algorithme de résolution de matrice creuse (en anglais, " sparse matrix solver”) utilisant la méthode par élimination de Gauss (méthode LU); un algorithme classique pour résoudre des problèmes d’éléments finis en mécanique. Après compilation du code en C++, nous utilisons Amplifier pour trouver un " hotspot " éventuel. L’écran de résultats nous montre une utilisation du processeur excessive pour une des fonctions [Fig.5]. Un double-click sur la fonction nous envoie sur les lignes code responsables du " hotspot " : [Fig.6]. Après analyses des matrices, nous changeons le code de la façon suivante :
#pragma omp parallel for private (i,j,k, term, temp)
for (i = 0;i < dimension - 1; i++){
temp = A[i][i];
colindex = (i >> 1) << 1;
for (j = i + 1 ; j < dimension; j++){
term = A[j][i] / temp;
//for (k = i; k < dimension; k++){
for (k = colindex; k < colindex + 2; k++){
A[j][k] = A[j][k] - term * A[i][k];
}
b[j] = b[j] - term * b[i];
}
}
Le résultat est immédiat : [Fig.7]. Un des grands avantages de Parallel Studio est de permettre des analyses comparatives côte-à-côte [Fig.8]. Cet exemple relativement simple montre la facilité d’utilisation de Parallel Studio dans le quotidien de l’utilisateur de Visual Studio. Le parallélisme va devenir une impérative constante et normale dans le processus de développement logiciel. Dans les articles prochains nous aborderons les autres outils plus en détail avec des exemples plus complexes. En attendant, nous vous recommandons d’installer Parallel Studio (ou bien le ou les modules qui vous intéressent) et de commencer immédiatement avec de premières expériences. Plus d’informations sont aussi disponibles en anglais sur le site http://www.go-parallel.com/.
Ralph de Wargny
Actualités
Intel Parallel Studio 2011 Getting Started
Pratique
Supplément C++
Livre blanc
Intel Parallel Studio 2011
Intel propose une nouvelle gamme d'outils de développement d'applications pour profiter du multicore via une programmation parallèle. Il s'agit de l'Intel® Parallel Studio qui d'adresse aux développeurs Windows qui possèdent Visual Studio* C/C++2008. Ce nouvel outil est en fait un ensemble qui réunit , Parallel Advisor pour diagnostiquer le code quant aux possibilités de parallélisation, Parallel Composer pour incorporer du parallélisme à l'aide d'un compilateur C++ Intel et des bibliothèques thread safe, Parallel Inspector pour découvrir des conflits de threading éventuels et Parallel Amplifier pour diagnostiquer le comportement des threads.
Liens
Actu
Pratique
Actu
Distributeurs INTEL