Android

Les puces multicœur posent un nouveau défi pour l'industrie

« High Performance Computing » - André Nedelcoux à l'USI

« High Performance Computing » - André Nedelcoux à l'USI
Anonim

L'ajout de plusieurs cœurs de traitement est devenu le principal moyen d'améliorer les performances des puces serveurs et PC, mais les avantages seront considérablement réduits si l'industrie ne parvient pas à surmonter certains problèmes de matériel et de programmation, participants au Multicore Expo de Santa Clara, Californie, a déclaré cette semaine.

Aujourd'hui, la plupart des logiciels sont encore écrits pour des puces unipolaires et devront être réécrits ou mis à jour pour tirer parti du nombre croissant de cœurs qu'Intel, Sun Microsystems et d'autres fabricants de puces ajoutent Linley Gwennap, président et analyste principal chez The Linley Group.

Les applications sur étagère fonctionnent souvent plus rapidement sur les processeurs avec jusqu'à quatre cœurs de processeur, mais au-delà de cette performance se stabilise et peut même se détériorer au fur et à mesure que d'autres noyaux sont ajoutés, a-t-il dit. Un rapport récent de Gartner a également mis en évidence le problème.

Les fabricants de puces et les constructeurs de systèmes ont entrepris des efforts pour éduquer les développeurs et leur fournir de meilleurs outils pour la programmation multicœur. Il y a un an, Intel et Microsoft ont annoncé qu'ils investiraient 20 millions de dollars américains pour ouvrir deux centres de recherche dans des universités américaines qui se consacrent à la résolution du problème. Selon Gwennap, le manque d'outils de programmation multicœurs pour les développeurs traditionnels est peut-être le plus grand défi auquel l'industrie est confrontée aujourd'hui.

Rédaction d'applications permettant de résoudre différents problèmes de calcul ou de restituer une image être divisé et exécuté simultanément sur plusieurs cœurs n'est pas nouveau. Mais ce modèle, souvent appelé calcul parallèle, a été jusqu'à présent limité principalement à des environnements informatiques spécialisés et performants.

Ces dernières années, Intel et Advanced Micro Devices ont ajouté des cœurs comme moyen de renforcer leur efficacité énergétique. performance de la puce, un changement marqué de leur pratique traditionnelle de l'augmentation de la vitesse d'horloge. Intel construit huit cœurs dans ses prochaines puces Nehalem-EX et AMD conçoit des puces à 12 cœurs pour les serveurs. Ils ajoutent également des fonctionnalités multi-threading, qui permettent à chacun des cœurs de travailler sur plusieurs lignes de code en même temps.

Cela signifie que les applications grand public doivent être écrites différemment pour tirer parti des cœurs supplémentaires disponibles. Le travail est difficile à faire et crée le potentiel de nouveaux types de bogues logiciels. L'une des plus courantes est celle des «conditions de course», où la sortie d'un calcul dépend des différents éléments d'une tâche qui sont achevés dans un certain ordre. Si ce n'est pas le cas, des erreurs peuvent survenir.

Quelques outils de programmation parallèles sont disponibles, tels que Parallel Studio pour C et C ++. Les autres fournisseurs de l'espace sont Codeplay, Polycore Software et Clik Arts. Il existe également un nouveau modèle de programmation parallèle basé sur C appelé OpenCL, développé par The Khronos Group et soutenu par Apple, Intel, AMD, Nvidia et d'autres.

Mais de nombreux outils disponibles sont encore en cours de développement, les participants à l'Expo Multicore a déclaré. Les compilateurs de logiciels doivent être capables d'identifier le code qui peut être parallélisé, puis de le paralléliser sans intervention manuelle des programmeurs, a déclaré Shay Gal-on, directrice du génie logiciel chez EEMBC, une organisation à but non lucratif qui développe des benchmarks pour les puces embarquées.

Malgré le manque d'outils, certains éditeurs de logiciels ont trouvé qu'il était relativement facile de créer du code parallèle pour des tâches informatiques simples, comme le traitement d'images et de vidéos, a expliqué M. Gwennapp. Adobe a réécrit Photoshop de manière à pouvoir assigner des tâches telles que le grossissement et le filtrage d'image à des cœurs x86 spécifiques, améliorant ainsi les performances de trois à quatre fois.

"Si vous faites des vidéos ou des graphiques, vous pouvez pixels et les assigner à des processeurs différents.Vous pouvez obtenir beaucoup de parallélisme de cette façon ", a-t-il dit. Mais pour des tâches plus complexes, il est difficile de trouver une approche unique pour identifier une suite de calculs qui peuvent être parallélisés et ensuite divisés.

Alors que le côté de la programmation peut présenter le plus grand défi, il y a également des changements de matériel qui doivent être faits, pour surmonter des problèmes tels que la latence de mémoire et les vitesses de bus lentes. «Comme vous ajoutez de plus en plus de processeurs sur la puce, vous avez besoin de la bande passante mémoire pour la sauvegarder», explique Gwennap.

Partager un seul cache mémoire ou bus de données entre plusieurs cœurs peut créer un goulot d'étranglement être en grande partie gaspillé. "Au moment où vous arrivez à six ou huit processeurs, ils passent tout leur temps à se parler et à n'avancer aucun travail", a-t-il dit.

Il appartient en fin de compte aux développeurs de combler le fossé matériel et logiciel pour écrire de meilleurs programmes parallèles. Beaucoup de codeurs ne sont pas au courant des derniers développements dans la conception de matériel, a déclaré Gal-on. Ils devraient ouvrir des fiches de données et étudier les architectures de puces pour comprendre comment leur code peut mieux fonctionner, a-t-il dit.