Aller au contenu
Règlement du forum ×
IPTV et arnaques ×

Les enjeux du parallélisme


Invité salimdz

Messages recommandés

Invité salimdz

Les enjeux du parallélisme

 

Lundi 11 mai 2009 à 08:30

 

programmation-parallele,Z-8-209924-3.jpg

 

S’il est un domaine où le logiciel accuse un retard par rapport au matériel, c’est bien le parallélisme. Alors que les machines multi-cœurs et multi-processeurs se généralisent, rares sont les applications capables d’exploiter cette montée en puissance. Quelles difficultées rencontrent les programmeurs et comment y faire face ?

 

source : http://www.presence-pc.com/actualite/parallelisme-enjeux-34853/

Lien vers le commentaire
Partager sur d’autres sites

Invité salimdz

Du mono-coeur au multi-cœurs, quels gains ?

 

Les fondeurs estiment qu’en restant sur l’architecture mono-cœur, la dissipation thermique aurait atteint en 2015-2020 la chaleur dégagée à la surface du soleil, soit 6000° C ! La course au MHz entraîne également une course à la consommation. De source Intel, si on augmente la fréquence du processeur de 20%, on augmente en moyenne les performances de 13%, mais la consommation augmente de 73%. En revanche, si l’on diminue la fréquence de 20%, on diminue la performance de 13% et la consommation diminue de 49%. Partant de ce constat, si l’on garde une fréquence à 80% de la fréquence d’origine et que l’on ajoute un second cœur à la même fréquence, on augmente les performances de 73% et la consommation n’augmente que de 2% !

 

source : http://www.presence-pc.com/tests/programmation-parallele-23109/

Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...

le véritable problème ici est que pour pouvoir concevoir une app qui utilise à fond le multithread, il faut supposer que les machines ou elle sera installé ont des proc multicore. 1er blocage.

sinon, il faut prévoir une version single-thread de la même app, double travail.

2eme blocage

 

ensuite, plusieurs langages de dev sont encore à leurs début en gestion de thread, et le problème que j'ai rencontré personnellement, à mon bas niveau de débutant en python, c'est comment faire efficacement communiquer ces threads indépendantes de manière intuitive.

 

bref, ja'imerai bien, mais c'est pas évident.

Lien vers le commentaire
Partager sur d’autres sites

Si on parle que de parallélisme de taches, cela peut être fait au sein d'un même thread et dynamiquement selon la disponibilité des cœurs, exemple des traitements et calculs sur les collections et tableaux, des outils de programmation existent et on peut en abuser car au pire on a qu'un seul Core de dispo ou de libre et le traitement se fait et au mieux on a ce même traitement à la vitesse grand V.

 

Pour revenir au Multi-Threading, il est vrai que c'est un vrai casse tête chinois de concevoir une application MT optimisée car il faut prendre en considération la disponibilité des cœurs à tout instants, la dépendances des traitements, le couplage entre différentes données des différents threads, éviter l'inter blocage même court, synchroniser convenablement ce beau monde relève de l'impossible lol :D du moins si on ignore l'architecture de la machine ciblée.

Lien vers le commentaire
Partager sur d’autres sites

le véritable problème ici est que pour pouvoir concevoir une app qui utilise à fond le multithread, il faut supposer que les machines ou elle sera installé ont des proc multicore. 1er blocage.

sinon, il faut prévoir une version single-thread de la même app, double travail.

2eme blocage

 

ensuite, plusieurs langages de dev sont encore à leurs début en gestion de thread, et le problème que j'ai rencontré personnellement, à mon bas niveau de débutant en python, c'est comment faire efficacement communiquer ces threads indépendantes de manière intuitive.

 

bref, ja'imerai bien, mais c'est pas évident.

 

I can tell you are a newbie in programming (no offense).

 

Multi-threading can be done with a single processor as well as with multi-core one. Multi-threading in a single core is handled by the operating system where a process (App) is divided into multiple threads concurrently executing. For exemple an application could have 4 threads, a UI thread, network communication thread, a data aquisition thread and a logging thread running independently and sharing resources and memory (this is called time-division multitasking in a single core processor) but in multi-core processors multiple thread or processes can run at the same time (really at the same time no time division). And there are lots of other stuff like user thread and kernel thread ....etc that I can explain later if anybody is interested.

 

By the way, Python sucks (literally) when it comes to multithreading, it doesn't really have a good way of multi tasking because of the central lock (Global Interpreter Lock ), another thing multithreading and parallelism has been around for decades it is not something new.

Lien vers le commentaire
Partager sur d’autres sites

I can tell you are a newbie in programming (no offense).

 

Multi-threading can be done with a single processor as well as with multi-core one. Multi-threading in a single core is handled by the operating system where a process (App) is divided into multiple threads concurrently executing. For exemple an application could have 4 threads, a UI thread, network communication thread, a data aquisition thread and a logging thread running independently and sharing resources and memory (this is called time-division multitasking in a single core processor) but in multi-core processors multiple thread or processes can run at the same time (really at the same time no time division). And there are lots of other stuff like user thread and kernel thread ....etc that I can explain later if anybody is interested.

 

By the way, Python sucks (literally) when it comes to multithreading, it doesn't really have a good way of multi tasking because of the central lock (Global Interpreter Lock ), another thing multithreading and parallelism has been around for decades it is not something new.

 

je crois que je l'ai dit. je suis un total noob en programmation. mais j'aime apprendre. j'ai eu l'expérience first-hand du GIL et de ses emmerdes (essayer de lancer des taches en arrière-plan et garder l'interface réactive: casse-tête sauf avec les threads, sauf que la communication interthread sous python se résume à un systeme de queues avec comme seuls messages: job added, job done. bref, j'avais un self-imposed timetable à respecter alors, je suis passé à une autre méthode, pas très élégante: forking.

 

alors si tu as des infos, je suis interressé, bien sur, please share.

 

ps: parallel processing module in python: python-pp. any experience with it? looks like a synonym to the old threading module to my noob eyes. :p

Lien vers le commentaire
Partager sur d’autres sites

J'me suis pas trop intéressé au thread sous Python car je n'en ai pas besoin pour mon application client (même si y'a une GUI et que normalement dans un mode parfait ça doit être conçu avec des thread)... mais je pense pas que ça soit pire qu'en JAVA.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...