Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La loi de Moore a-t-elle encore un avenir ?
Oui, répond un ingénieur, si les développeurs se mettent à la programmation parallèle

Le , par Gordon Fowler

23PARTAGES

0  0 
Bill Dally est un des ingénieurs les plus importants de Nvidia.

Dans une tribune publiée dans le magasine Forbes, l'ingénieur en chef doute fortement que la loi de Moore puisse encore s'appliquer aux processeurs (CPU) : « Les performances des CPUs ne peuvent plus doubler tous les 18 mois », constate-t-il, « et cela va poser un grave problème à de nombreuses industries qui reposent sur cette croissance des performances ».

Optimiste, Bill Dally en tire cependant une raison d'espérer « La bonne nouvelle, c'est que […] la programmation parallèle peut relancer la loi de Moore et fournir une nouvelle base pour la croissance et l'innovation commerciale ».

Le scientifique sait cependant qu'il ne suffit pas de dire « y'a qu'à » pour que les choses se fassent.

« Le défi pour l'industrie va être d'abandonner des pratiques vieilles de plusieurs dizaines d'années et de s'adapter à cette nouvelle plateforme […] il existe une énorme résistance au changement ».

Cette résistance ne viendra pas, d'après lui, que des fondeurs.

Elle touchera aussi les développeurs. Surtout par manque de formation, précise-t-il. « Convertir la quantité gigantesque de programmes séquentielles (NDR : ou linéaires) existant pour les faire tourner sur une architecture parallèle est une formidable tache, qui est rendue encore plus difficile par la pénurie de programmeurs formés à la programmation parallèle ».

La programmation dite linéaire consiste à exécuter les instructions les unes après les autres pour obtenir un résultat souhaité. La programmation parallèle consiste au contraire à décomposer les tâches pour les faire exécuter simultanément par différents CPU. On comprend aisément le gain de vitesse que peut représenter ce modèle.

Mais les problèmes posés sont nombreux. Comme le note Lainé Vincent « toutes les tâches ne peuvent pas être parallélisées […]. De manière générale, celles qui peuvent être threadées, peuvent être parallélisées. Il existe cependant quelques exceptions ». Les choses ne seront donc pas si simples à mettre en place.

Bref, « après 40 ans de programmation linéaire […] une rupture avec les pratiques de longue date » serait devenue plus que nécessaire.

Mais qu'on se rassure, il ressort de cette interview que la loi de Moore n'est pas (encore) de l'histoire ancienne.

Source : La tribune de Bill Dally dans Forbes

Lire aussi :

Introduction à la programmation parallèle par Lainé Vincent

NVIDIA travaille étroitement avec Microsoft, pour préparer une nouvelle technologie de processeurs graphiques pour les calculs parallèles
Microsoft se paye Interactive Supercomputer, spécialiste du calcul parallèle

Les rubriques (actu, forums, tutos) de Développez :

Hardware

Et vous ?

Etes-vous d'accord avec cette analyse ou pensez-vous au contraire que la Loi de Moore est d'ores et déjà à mettre au musée de l'Histoire Informatique ?

Les développeurs francophones sont-ils suffisamment formés à la programmation parallèle ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de
https://www.developpez.com
Le 04/05/2010 à 10:47
Etant donné que l'on va vers des archi type cloud (on va dire que le gros du travail est fait sur les serveurs, type web), le multi threading n'est pas obsolète ? Etant donné qu'on va être dans un cas ou des serveurs lancent en même en parallèle des applications linéaires, du coup au niveau performance ça revient au même.

je m'étais renseigné pour savoir si sur une appli asp.net il était utile de faire du multithreading mais au final les réponses étaient plutot négatives : le serveur s'en charge.

Après j'ai peut-être louppé quelques choses.
0  0 
Avatar de B.AF
Membre chevronné https://www.developpez.com
Le 04/05/2010 à 11:22
Citation Envoyé par Bourgui Voir le message
Etant donné que l'on va vers des archi type cloud (on va dire que le gros du travail est fait sur les serveurs, type web), le multi threading n'est pas obsolète ? Etant donné que on va être dans un cas ou des serveurs lancent en même en parallèle des applications linéaires, du coup au niveau performance ça revient au même.

je m'étais renseigné pour savoir si sur une appli asp.net il était utile de faire du multithreading mais au final les réponses étaient plutôt négatives : le serveur s'en charge.

Après j'ai peut etre louppé quelques chose.
Oui,tu développes sur un niveau trop élevé.

Aujourd'hui la plupart des développements sont linéaires :

Si je dois faire la vente d'un produit en stock,
En linéaire, tu vas :
- Enregistrer la vente
- Chercher le stock
- Recalculer le stock
- Comptabiliser la vente

MT ou parallélisé cela revient à dire, je peux chercher le stock et le calculer pendant que j'enregistre, et au join des tasks, j'aurai les éléments pour comptabiliser.
0  0 
Avatar de daimoc
Membre à l'essai https://www.developpez.com
Le 04/05/2010 à 11:39
En même temps la loi de Moore c'est le doublement du nombre de transistors des microprocesseurs tous les plus ou moins 18 mois.
Pour suivre cette loi on a du mal à faire des cœurs d'exécution plus gros et efficaces, du coup la solution : on rajoute des cœurs d'exécution et du cache .

Jusqu'au début des années 2000, le doublement du nombre des transistors s'accompagnait d'une augmentation systématique la puissance de calcul pour tous les programmes par l'amélioration du cœur d'exécution.
C'est plus le cas avec les multicoeurs , donc pour pouvoir exploiter tous ces transistors pas d'autre solution que la programmation parallèle ...
0  0 
Avatar de trashyquaker
Membre du Club https://www.developpez.com
Le 04/05/2010 à 11:55
Citation Envoyé par Gordon Fowler  Voir le message
Comme le note Lainé Vincent [I]« toutes les tâches ne peuvent pas être parallélisées […].

Oui... J'avais un prof qui avait sorti un truc assez drôle à ce sujet:
Une femme a besoin de 9 mois de grossesse pour faire un bébé. Vous avez beau mettre 9 femmes sur cette tâche, elles n'arriveront pas à faire un bébé en 1 mois.
0  0 
Avatar de sparthane777
Provisoirement toléré https://www.developpez.com
Le 04/05/2010 à 12:24
" qui est rendue encore plus difficile par la pénurie de programmeurs formés à la programmation parallèle"

Y as pas des formations pour ça ? Je suis pas sur d'avoir compris ce que ça signifie

"Etes-vous d'accord avec cette analyse ou pensez-vous au contraire que la Loi de Moore est d'ores et déjà à mettre au musée de l'Histoire Informatique ?"

Je suis désolé mais je suis pas d'accord avec vous. La loi de Moore certes s'avère être dépassée mais restera quand-même la base de la technologie des processeurs : voir ici et ici

Enfinsi une loi remplace celle de Moore, ça restera quand même dans l'histoire de l'informatique. C'est pas pasque l'informatique évolue en permanence qu'il faut négliger son histoire
0  0 
Avatar de
https://www.developpez.com
Le 04/05/2010 à 12:40
Citation Envoyé par trashyquaker Voir le message
Oui... J'avais un prof qui avait sorti un truc assez drôle à ce sujet:
Une femme a besoin de 9 mois de grossesse pour faire un bébé. Vous avez beau mettre 9 femmes sur cette tâche, elles n'arriveront pas à faire un bébé en 1 mois.
Je suis d'accord avec ça. Le parrallélisme est un voeu pieux dans de nombreux cas.

La "parrallélisation" d'algoritmes parfaitement maîtrisés en monothread fait un usage important de boucles d'évenements et de communications. Le résultat est souvent illisible et l'avantage peu évident. Dès que le résultat d'une itération est utilisé dans la suivante, on est comdamné au monothread. C'est particulièrement vrai dans les applicatifs spécifiques. Peu de programmes doivent gérer trois devices en même temps. La plupart du temps, le monothread et sa synchronicité sont quasi-incontournables.
0  0 
Avatar de sparthane777
Provisoirement toléré https://www.developpez.com
Le 04/05/2010 à 12:55
Bon j'ai été sur votre thread "Introduction à la programmation parallèle " mais bon c'est pour les gens calés en dotnet et comme mordicus j'aime pas les langages de Microsoft, ça va être difficile de se motiver pour s'y initier.

Ok je vais chercher d'autres tutoriels en ligne sur d'autres langages et je vous tiens au courant
0  0 
Avatar de B.AF
Membre chevronné https://www.developpez.com
Le 04/05/2010 à 13:14
Citation Envoyé par trashyquaker Voir le message
Oui... J'avais un prof qui avait sorti un truc assez drôle à ce sujet:
Une femme a besoin de 9 mois de grossesse pour faire un bébé. Vous avez beau mettre 9 femmes sur cette tâche, elles n'arriveront pas à faire un bébé en 1 mois.
En fait c'est à la base une phrase peu flatteuse pour les informaticiens d'un ingénieur allemand (Wernher von Braun) et qui est :

Les logiciels plantent car ils se basent sur la théorie qu'avec neuf femmes enceintes vous pouvez avoir un bébé en un mois.
C'est le père de la fusée V2, et malgré son passé de SS, il est mort ...administrateur de la Nasa.

La référence n'est pas très glorieuse. Ce mec avait son usine de V2 à Dora, et a reconnu 25 ans plus tard avoir construit grâce aux "esclaves" (je ne trouve pas le mot juste) pris dans le camp de buchenwald entre autres.

C'est aussi lui le concepteur du moteur qui a propulsé le controversé premier homme à avoir mis le pied sur la lune.

Une pourriture réhabilitée pour ses connaissances scientifiques, mort avec les honneurs, et un parfait exemple de l'absolution capitaliste.

Je ne voulais pas faire un godwin, mais juste à relater l'histoire pas si anodine de cette phrase.
0  0 
Avatar de
https://www.developpez.com
Le 04/05/2010 à 14:19
Citation Envoyé par B.AF Voir le message
Oui,tu développessur un niveau trop élevé.

Aujourd'hui la plupart des développements sont linéaires :

Si je dois faire la vente d'un produit en stock,
En linéaire, tu vas :
- Enregistrer la vente
- Chercher le stock
- Recalculer le stock
- Comptabiliser la vente

MT ou parallélisé cela revient à dire, je peux chercher le stock et le calculer pendant que j'enregistre, et au join des tasks, j'aurai les éléments pour comptabiliser.
Justement par rapport à ce que tu dis, imaginons un environnement avec un serveur où il y a 4 demandes en même temps pour la vente d'un produit.

Version linéaire :
proc1 : enregistre,cherche,recalcule,compte
proc2 : enregistre,cherche,recalcule,compte
proc3 : enregistre,cherche,recalcule,compte
proc4 : enregistre,cherche,recalcule,compte

Version parallèle :

proc1 : enregistre,enregistre,enregistre,enregistre
proc2 : cherche,cherche,cherche,cherche
proc3 : recalcule,recalcule,recalcule,recalcule
proc4 : compte,compte,compte,compte

C'est simplifié mais en gros c'est ça, donc les 4 demandes de vente prennent le même temps
0  0 
Avatar de sparthane777
Provisoirement toléré https://www.developpez.com
Le 04/05/2010 à 14:22
Citation Envoyé par Bourgui Voir le message
Justement par rapport à ce que tu dis, imaginons un environnement avec un serveur où il y a 4 demandes en même temps pour la vente d'un produit.

Version linéaire :
proc1 : enregistre,cherche,recalcule,compte
proc2 : enregistre,cherche,recalcule,compte
proc3 : enregistre,cherche,recalcule,compte
proc4 : enregistre,cherche,recalcule,compte

Version parallèle :

proc1 : enregistre,enregistre,enregistre,enregistre
proc2 : cherche,cherche,cherche,cherche
proc3 : recalcule,recalcule,recalcule,recalcule
proc4 : compte,compte,compte,compte

C'est simplifié mais en gros c'est ça, donc les 4 demandes de vente prennent le même temps
Et pour optimiser les performances et la rapidité, quelle méthode est la plus adaptée ?
0  0