Fermer le menu
 

Snow Leopard : pas de miracle en vue ?

Nonoche | | 20:29 |  61

Avec l'arrivée prochaine de Snow Leopard, et de ses deux technologies phares, à savoir OpenCL et Grand Central, on parle de plus en plus de parallélisme.

Les processeurs en ont en effet terminé avec la progression verticale : au lieu d'augmenter la puissance brute des processeurs, on augmente leur nombre. On obtient ainsi, du moins potentiellement, un bien meilleur rapport puissance/consommation. Le problème c'est qu'il faut désormais bâtir les logiciels très différemment pour en tirer parti. Ainsi, il faut couper les tâches en petits morceaux afin de les faire exécuter simultanément par les différents processeurs et leurs multiples cores. L'opération n'est résolument pas aisée, et nécessite une refonte de l'architecture des logiciels. Si Grand Central a pour vocation de veiller à éviter les embouteillages et permettre aux multiples opérations de se dérouler sans encombre, il ne permet pas pour autant de faire des miracles, et les développeurs devront malgré tout déterminer eux-mêmes quelles tâches se plient le mieux au parallélisme.

Ne nous leurrons pas : le parallélisme n'est qu'un pis aller. S'il permet de mieux tirer parti de nos multicores, toutes les opérations ne s'y plient pas pour autant, et nécessiteront une refonte des logiciels, alors qu'une augmentation de la puissance brute des processeurs était directement exploitable sans rien changer du côté logiciel. On voit déjà bien peu d'applications qui tirent parti des biprocesseurs, alors que les Macs utilisent ce type d'architecture depuis bien longtemps. Les choses ne vont pas aller en s'arrangeant, car la multiplication des processeurs n'ira qu'en augmentant. Imaginez le casse-tête quand nous aurons pas moins de 32 processeurs dans nos machines!

Pourtant, l'industrie informatique a une longue expérience du multiprocessing, dans le champ d'application des serveurs notamment. Mais il y a un univers entre une application pour plusieurs utilisateurs et plusieurs applications pour un seul utilisateur, caractéristique essentielle qui différencie l'environnement serveur de celui que nous côtoyons quotidiennement. En effet, les applications serveur se prêtent par nature au parallélisme, chaque utilisateur étant susceptible de lancer une tâche qui s'exécute simultanément aux autres. Après tout, plusieurs processeurs dans une seule machine, c'est un peu comme si vous utilisiez plusieurs ordinateurs simultanément, et encore, ça n'en a pas tous les avantages, puisqu'on conserve une seule allocation mémoire vive, et la plupart du temps un seul disque dur, qui font figure de goulot d'étranglement en entrée et en sortie des processeurs. Les logiciels qui fonctionnent sur nos Mac se contentent, la plupart du temps, d'utiliser de la mémoire et quelques cycles processeur ici ou là lorsqu'elles sont en tâche de fond : ça n'est pas tous les jours qu'on lance plusieurs opérations simultanément. Le parallélisme sur l'ordinateur personnel s'attache donc à découper les opérations monolithiques en petits morceaux à exécuter concomitamment. Seulement voilà, nombre de ces opérations sont linéaires, chaque résultat dépend d'une opération précédente.

Il ne faut donc pas s'attendre à voir votre Mac mini se prendre pour un Mac Pro comme par magie avec le passage à Snow Leopard. Il faudra mettre les logiciels à jour pour qu'ils exploitent Grand Central et OpenCL. Les seuls cas d'accélération "spontanée" concerneront les appels au commandes du système qui auront été réécrites avec Grand Central et OpenCL. Certes, les beta-testeurs de Snow Leopard ont pu s'atteler à la tâche depuis la finalisation de ses API (voir notre article Snow Leopard : les API finalisées), on peut donc avoir bon espoir de voir nombre de mises à jour disponibles à la sortie du félin. Mais à bien y regarder, tout ceci ne rend l'augmentation de puissance de nos machines que bien théorique : s'il est si délicat d'en tirer toute la substantifique moelle, on finit par gâcher plus de puissance qu'on en exploite, et il semble bien que la stratégie n'avait d'autre objectif que de ne pas faire mentir la loi de Moore, si ce n'est de maintenir la dynamique du marché hardware.

Catégorie : 

Les derniers dossiers

61 Commentaires

avatar hawker 01/06/2009 - 21:26

Qu'est ce c'est cet article ?

Bien évidement personne ne s'attend a voir les perfs se décupler sous SL.
Un gain de 20 pourcent serait déjà super.

Donc pas vraiment la peine d'enfoncer la réputation de SL avec des titre d'article pareils pour des articles qui ne font que contredire des espérances que personne n'a.

Moi ce que j'attends de Snow Leopard, c'est d'être super léger, encore meilleur sur les petits points qui facilitent l'utilisation de tous les jours, d'être encore plus performant, et d'être plus stable (? a la 10.6.1 je pense espérer).

On sait bien que ce n'est pas avec une simple nouvelle API de gestion, si bonne soit elle, que les perfs vont se multiplier. D'ailleurs, le parallélisme des logiciels et des processeurs se fera en passant par une nouvelle architecture (en clair dans quelques années fini le bon vieux x86...), et c'est la qui faudra faire de tels articles.

La meilleur chose a faire, c'est attendre la présentation officielle, voir la commercialisation et après on parlera de tout ça.

avatar Québec 01/06/2009 - 21:29

Outre le vocabulaire technique, faut vraiment le lire 2 fois ce texte pour tout comprendre, pas un mot à dire le type s'y connait en vocabulaires, mais pas celui de tous les jours.

Bon en gros pas d'évolution avant plusieurs années, lorsque les programmeurs auront fait de grosses màj de leur logiciel, ou simplement d"arriver à lire et comprendre ce texte, hihi.

avatar Dr_cube 01/06/2009 - 21:39

Très bon article.

Un développeur de logiciels ne sait pas s'il va y avoir 2 ou 32 ou 200 processeurs sur la machine. Il doit donc, dans la mesure du possible, mettre au point une solution qui passe à l'échelle. Il n'est donc théoriquement pas plus difficile de faire un logiciel pour 2 processeurs que pour 200. Bien sûr, d'autres contraintes s'appliquent, puisqu'il y a un coût en communication. En effet, les tâches sont souvent liées, et les processeurs doivent donc se synchroniser pour récupérer des résultats et en envoyer d'autres. Mais ces coûts se calculent, et il y a de nombreux modèles pour cela. Parfois, les processeurs sont reliés entre eux selon une topologie particulière (grille, tore, anneaux...), et les développeurs se servent de cette topologie pour créer leurs algorithmes. Avec certains outils, on peut créer facilement sa propre topologie "virtuelle", et ainsi avoir l'illusion que les processeurs sont organisés d'une certaine manière.
Bref, il y a pleins d'outils (logiciels ou conceptuels) qui permettent de mettre au point "facilement" des algorithmes parallèles et de prévoir leur coût. Ca reste selon-moi une véritable torture pour l'esprit, mais certains y arrivent très bien. Un simple produit matriciel devient une prise de tête incroyable lorsqu'on veut le faire en parallèle (essayez et vous verrez !). Mais le gain est considérable.

Dans tous les cas, il faut bien comprendre qu'il y a plusieurs grains de parallélisme :
- entre les processus,
- entre les tâches indépendantes d'un processus,
- dans une même tâche, calculs indépendants (boucles...),
- piplelinage d'instructions
- ...

C'est en mettant du parallélisme à tous les niveaux qu'on arrivera à des solutions vraiment efficaces. Même si pour un logiciel donné, Snow Leopard n'améliorera peut-être pas grand chose, il sera peut-être possible de lancer plus de logiciels/calculs en même temps et d'avoir les résultats plus rapidement.

avatar Damien 01/06/2009 - 21:41

Oui enfin, le parallélisme c'est pas nouveau non plus. J'ai l'impression que les auteurs de cet articles tombent des nues en disant que ça ne s'applique pas à n'importe quelle donnée et que ça nécessite de penser le programme d'une certaine façon par moment.
Après lecture de l'article, je ne vois pas en quoi ça va être plus compliqué qu'avant de faire un programme parallèle. Je pense d'ailleurs qu'un programme qui l'était déjà (comme beaucoup devraient l'être), ne demandera pas trop trop de gymnastique pour adapter ça avec OpenCL. Le seul inconvénient est sûrement le rapatriement des données depuis les GPU vers la mémoire centrale ou CPU, ce qu'il faudra éventuellement anticiper...

avatar lefoudupuit 01/06/2009 - 22:00

ou le parallélisme permettra d'exploiter une nouvelle architecture basé sur la spécialisation des processeurs (1 pour chaque fonction de base) comme le conçoit le fabriquant qualcomm avec ses solutions ARM
l'avantage est que le besoin de puissance n'est plus nécessaire (d'où des gains de consommation, meilleure réactivité) et celà permettra de garder les procédés actuels sans avoir à suivre la loi de moore. le temps gagné permettra de trouver des solutions viables industriellement (ordinateur quantique ou autres)

d'ailleurs cette spécialisation est une technologie maitrisée par PA semi... tiens donc!!

avatar biniou 01/06/2009 - 22:14

Pas de stress. Au moins on pourra faire tourner 20 threads en parallèle.

C'est extrêmement compliqué de couper un logiciel en bloc d'instructions surtout qu'il faut habituellement plus de blocs à calculer que de processus parallèles de calcul (afin d'être optimum : cf. documentation Cuda). Ca servira, ça c'est sûr et le multicore/processeur aussi. Ce qu'il manque c'est une réelle synchronisation dans l'exécution des threads !

avatar Dr_cube 01/06/2009 - 22:21

@ biniou :
Qu'est-ce que tu entends exactement par "une réelle synchronisation des threads" ? Par définition, s'il y a plusieurs unités d'exécution, on a forcément de l'asynchronisme. Il y a mille méthodes pour synchroniser des flots d'exécution, ou pour protéger des données qui pourraient être lues/écrites par plusieurs entités en même temps.

avatar Jerry Khan 01/06/2009 - 22:27

On savait depuis le début que SL n'allait pas apporter de réels gains de vitesse immédiats.

Seuls les gogos (qui abondent ici et ailleurs) pensaient que ce serait le cas.

La derniere build de snow leopard n'apporte pas grand chose de plus qu'un leopard fraichement installé en terme de vitesse tant au niveau du lancement des programmes qu'au niveau de leur execution.

Bref, seules des fonctions cachées dévoilés la semaine prochaine pourront justifier l'achat de cet OS, sinon il devra etre offert gratuitement ou pour une somme symbolique.

avatar biniou 01/06/2009 - 22:34

@Dr_cube : de pouvoir commencer des threads de manière synchrone et de pouvoir garantir leur exécution de manière synchrone.

avatar totorino 01/06/2009 - 22:44

La solution raisonnable serait d'arrêter la course au hardware et de concentrer uniquement sur la qualité et l'efficacité du soft.

avatar RDBILL 01/06/2009 - 22:44

Pas grand chose de vraiment neuf ou formidable dans Snow Leopard, j'entend du point de vue de l'utilisaeur moyen... C'est bien ce qui me semble au vu des différentes brèves sur les différents sites Mac...
Question : Qu'est ce qu'Apple et Steve vont nous sortir en argument marketing pour réussir à nous faire cracher 129€ ???
Bon en même temps on peut leur faire confiance pour ce qui est des trouvailles marketing... Et il se pourrait bien que je "craque" finalement, moi aussi...

avatar Anonyme (non vérifié) 01/06/2009 - 22:48

Tout d'abord merci pour l'article que je trouve excellent.
Ensuite, si une meilleure exploitation d'un logiciel par Grand Central nécessite sa réécriture ça veut dire qu'en réécrivant leur logiciel, les devs les rendront plus rapides, mieux exploitables? Ils n'ont donc pas naturellement intérêt à les réecrire ? Evidemment, pour les petits Freewares, c'est autre chose...

avatar proulix 01/06/2009 - 23:03

ça dépend des apps. Pour un soft de rendu 3D, le parrallelisme et open cl c'est le grand pied

avatar Le Gognol 01/06/2009 - 23:43

Faut pas être trop défaitiste non plus, il était déjà possible de profiter des avantages du biprocesseur sous OS... 9, avec certaines applications (Digital Performer par exemple), et quand Mac OS X est apparu sa gestion du multitâche a démontré instantanément le bien-fondé de ce genre de solution. Même si les applis ne profitent pas toutes individuellement de la multiplication des coeurs, elles sont quand même de plus en plus rares à ne pas en tenir compte dans les domaines "lourds" (son, image, vidéo), et la demande toujours plus massive d'applications tournant simultanément et de processus tournant en tâche de fond, font que les multiples coeurs de nos machines n'ont pas tant que ça le temps de s'ennuyer...

avatar NikonosV 02/06/2009 - 00:04

c'est Cuda qui arrive sur mac avec 2 ans retard par rapport au pc

sur pc avec un soft tv gratuit, on peut choisir le codec H264 qu'on veut utiliser pour décoder la TNT HD
on coche la case utiliser Cuda et hop 5% de cpu pour décoder la TNT HD

sur mac y a que quicktime qui peut profiter du décodage hardware

j'espère qu'ils penseront à mettre dispo rapidement les techno pour les autres softs puissent les exploiter
parce que un finder boosté, on ne passe pas ça vie dessus le finder :o)

avatar misterbrown 02/06/2009 - 00:27

Je suis curieux de voir la politique tarifaire de Snow Leopard...
bon apres, personne nous force a l acheter..

avatar biniou 02/06/2009 - 00:45

@ NikonosV: Cuda existe sous Mac et depuis plus d'un an. Cuda n'est pas un standard mais est spécifique à NVidia et ce pour certaines versions de leurs cartes graphiques.

Ici on parle de deux choses fort différentes au niveau du fonctionnement :

- D'un côté l'utilisation des puces graphiques massivement parallèles avec openCL. Cela permettra de faire du calcul comme par exemple diviser une image en bloc et analyser ces blocs séparément pour calculer un histogramme. On peut alors par exemple faire 128 calculs en parallèle en coupant l'image en au moins 128 blocs. Le problème principal des cartes graphiques est qu'elles disposent de peu de mémoire et que si on est trop gourmand, le temps gagné avec la parallélisation est perdu en lecture/écriture sur les I/O.

- D'un autre côté (Grand Central), si j'ai bien compris, une meilleure répartition des threads (ou fils dans le moniteur d'activité) sur les différents coeurs (core) et/ou processeurs. Mais aussi une nouvelle API (interface de programmation) qui a pour but de simplifier la vie des programmeurs pour l'utilisation des différents coeurs du processeur/des processeurs.

Donc OpenCL est plus générique que Cuda puisque non limité à un seul fabricant et devrait devenir un standard de fait dans les années qui viennent. Ce qui implique que Microsoft va dévéloper une openCL à sa sauce : buggé et dont l'API change de version en version (bon d'accord, je suis mauvaise langue).

avatar philus 02/06/2009 - 07:32

Article intéressant, mais j'y mettrais un bémol.

Ce que va nous apporter vraiement le multi-processeur, c'est de la réactivité plus que de la puissance brute.
Je pense que nous allons dans les années qui viennent changer notre façon de percevoir un micro-ordinateur. Beaucoup ont tendance à lancer un programme et attendre que le résultat vienne. D'où la nécessité d'avoir des processeurs à la puissance unitaire de plus en plus importante. Comme nous allons arriver aux limites de la technologie et que le développement multithread ne permet pas tout, c'est cette solution qui devrait émerger.

Avec l'augmentation énorme de la ram, la mise en place des SSD (temps d'accès réduits), nous allons vers des systèmes où l'on lance un calcul quelconque, puis un autre, le tout simultanément avec des encodages divers, la gravure d'un DVD tout en surfant, chargeant ses mails, écoutant de la musique et gardant un micro très disponible. On devrait enfin retrouver le multi-tâche très efficace des Amiga (si,si, les connaisseurs apprécieront...) et devrions commencer à oublier les sablier et autres roues multicolores.

Pour la plupart des applications, on se moque complètement de savoir si elle va faire son boulot en 10 ou 15 minutes si l'on peut faire autre chose simultanément sans aucune gêne. Il arrive encore actuellement que le chargement d'une page web me bloque un peu dans l'utilisation de mon macbook pro 17 pouces, cela devrait changer...

avatar Dr_cube 02/06/2009 - 08:35

@ philus :
Je ne suis pas entièrement d'accord avec toi. Le parallélisme permet aussi d'accélérer la réalisation des calculs. En répartissant les calculs sur différentes unités d'exécution, on accélère d'autant un calcul. Si on peut zipper un gros dossier en 20 secondes au lieu de 10 minutes, c'est mieux. Si on peut appliquer des filtres sur des images plus rapidement, c'est mieux.
Mais je suis d'accord que le plus important c'est de réduire le temps d'apparition de la roue multicolore. Mais là c'est clairement le disque dur qui bloque. Quand on aura des disques dur plus rapides en lecture, on diminuera de facto le temps d'apparition de la roue multicolore. On la retrouve en effet lorsqu'une application se charge en mémoire, et lorsqu'une application a été swappée sur le disque, et qu'elle doit être rapatriée en mémoire.

avatar fixfix 02/06/2009 - 09:17

MacGé et l'électroménager

Les mac, les PC, les iPhone, c'est de l'électroménager, au même titre qu'un grille-pain, un lave-linge; etc. D'ailleurs Steve Jobs avait défini le concept d'origine du Mac comme un "home appliance".

Sans doute trouvez vous beaucoup plus commode d'avoir un lave-linge avec 3 boutons (ou même un seul) plutôt que 47 voyants, 4 sélecteurs tournants, 25 boutons, etc. Heureusement que Microsoft ne fabrique pas de lave-linge .... Tout le talent des concepteurs d'un lave-linge est de cacher la complexité, en rendant la machine plus "intelligente" : un lave-linge moderne peut détecter le type de fibres, le poids du lnge, si c'est de la couleur, le degré de salissure, le degré de calcaire de l'eau, etc. Au final, autant de "choix" que l'utilisateur n'a plus à faire. De même, un lave-linge grand public ne fait pas "tout" (ici s'impose la comparaison avec par ex. MS Office s'impose), Faire "tout" rend beaucoup plus compliquée la tâche de l'utilisateur. Il suffit que le lave-linge remplisse, par ex., 99% des besoins. Pour les besoin restants, s'adresser aux prestataires spécialisés.

Nos machines électroménagères (je veux parler de nos Mac) sont hélas encore bien trop compliquées. D'où le besoin ressenti par certains de "comprendre comment ça marche", et l'excellent article d'Arnaud (décidément très doué ! Quand faites vous, par ex., une émission télé ?).

Quand nos (arrière-)arrière-grand mères ont appris à conduire, elles devaient également apprendre "comment ça marche", la mécaique, etc. Depuis, la complexité des automobiles a été "cachée", et tout le monde peut conduire. Tant mieux !

Re-très grand merci à Arnaud. Même si on n'a plus BESOIN de savoir, reste la curiosité, l'ouverture d'esprit. Cela s'appelle la culture

avatar melaure 02/06/2009 - 09:46

"Je pense que nous allons dans les années qui viennent changer notre façon de percevoir un micro-ordinateur. Beaucoup ont tendance à lancer un programme et attendre que le résultat vienne. D'où la nécessité d'avoir des processeurs à la puissance unitaire de plus en plus importante."

@Philus : c'est une remarque pour ceux qui ont grandi qu'avec Mac OS avant OS X ;) Mais sur Amiga ou Be OS, ça fait longtemps (1987) qu'on attend pas qu'un programme envoie des résultats.

Sinon intéressant article qui met en lumière que c'est avant tout une optimisation poussée du système, et qu'Intel fait pas mieux que Motorola en piétinant sur place à son tour ... On sort un jour un proc qui fait faire un bond (G3/G4, Core2Duo) puis après pendant 5 ans, ça plafonne ...

avatar XiliX 02/06/2009 - 10:06

Il y a beaucoup de "nerds" ici qui oublient que MacGé est lu [b]aussi[/b] par des personnes qui ne connaissent rien en techno parallélisme. Des personnes qui pourraient aussi s'intéresser à ce genre d'information.

Il ne s'agit pas ici de descendre SL, mais expliquer pourquoi le parallélisme n'est qu'une solution pour pouvoir exploiter au maximum une architecture multicores/multiprocesseurs. Le gain peut être impressionnant si le processus est entièrement parallélisable... ou pas.

Très bon article Arnauld.

avatar ispeed 02/06/2009 - 10:13

Article très réaliste. En gros on vous propose pour votre voiture, des jantes en alliage avec de plus gros pneus et vous aurez l'impression de rouler plus vite et d'avoir plus de stabilité.
Je pencherai pour plus de stabilité :))

avatar Dr_cube 02/06/2009 - 10:26

@ ispeed :
Pas du tout ! Ce serait plutôt : Au lieu d'avoir un gros moteur qui fait tourner les 4 roues de ton 4x4, tu as 4 petits moteurs indépendants qui font tourner chacun une roue. Du coup le 4x4 consomme moins alors qu'il est plus puissant. Le problème c'est que pour avancer tout droit il faut que les moteurs se synchronisent et partagent des informations, ce qui a un coût en communication.

avatar philus 02/06/2009 - 10:47

@melaure
'c'est une remarque pour ceux qui ont grandi qu'avec Mac OS avant OS X ;) Mais sur Amiga ou Be OS, ça fait longtemps (1987) qu'on attend pas qu'un programme envoie des résultats.'

Nostalgie des vrais noyaux temps réels ;-)

Il reste QNX...

Pages