Sign in to follow this  
typhoons

Décupler la puissance d un PC : le clustering

Recommended Posts

Bonjour
Je découvre sur le net, qu il est possible de se créer chez soit un super calculateur formé par plusieurs PC mis bout à bout.
Cela s appelle cluster, clustering...

En gros en couplant plusieurs ordi, on met en commun leurs processeurs, les mémoires pour n en former qu'un superpuissant.
J ai lu que certains ce sont fabriqué un super ordinateur à 24 cœurs....

C est génial !

Vous en aviez entendu parlé et testé ?

Share this post


Link to post
Share on other sites
Publicité
En vous inscrivant sur Astrosurf,
ce type d'annonce ne sera plus affiché.
Astronomie solaire : la bible est arrivée !
400 pages, plus de 800 illustrations !
Les commandes sont ouvertes sur www.astronomiesolaire.com

Bonsoir,
oui c'est une technique bien connue qui succède à la techno du multi-processeur (plusieurs CPU sur un même PC) pour faire par exemple du calcul numérique(RDM, imagerie, etc.).
Perso je l'utilise pour faire des images et vidéo de synthèse.

Chez moi, je fais l'épure en filaire et la nuit j'utilise les PC du boulot en réseau local pour faire le rendu final, le soft conçu pour du faire du clustering partage le boulot entre tous les Pc du réseau.

Comme il faut 12 h de calcul pour obtenir UNE SEULE IMAGE sur un PC imagine le temps pour faire une vidéo (24 images/s) donc cette techno est impérative si on veut jouer à 'Dreamwork'

Voila une demo de ce que peux faire le soft http://www.youtube.com/watch?v=rtO6lyZtqBY

Pour l'astro aucun intérêt, un Pc bas de gamme (Pentium II, XP, 1 Go ) suffit pour piloter une monture + CCD +APN + ..

Par contre pour le traitement d'image se serait super mais il faudrait que le soft soit PREVU pour le clustering:
partage d'une image entre plusieurs PC,
chacun fait sa partie ( traitement DDP par exemple) sur son bout d'image
consolidation finale sur le PC maître.

A+

Share this post


Link to post
Share on other sites

Déjà que rares sont les logiciels à réellement exploiter le multithreading (découper une activité en plusieurs fils qui sont aujourd'hui executés simultanéments par les différents coeurs des processeurs) et à ma connaissance il y a Registax v6 et Autostakkert qui l'exploitent coté traitement. PlxCapture aussi je pense coté acquisition.

Marc

Share this post


Link to post
Share on other sites

Oui l intérêt est ici pour le traitement d image, le Stacking.
Pixnight doit exploiter le multi cœur je pense.
Le clustering serait intéressant pour les produits adobe, adobe premiere etc
Sutout si on a des PC à la maison qui ne servent pas.

Share this post


Link to post
Share on other sites

Tu peux commencer déjà par la programmation asynchrone qui te permet de lancer plusieurs tâches en // sur un même ordinateur ayant par exemple une architecture multi coeurs. Tu peux étendre le parallélisme à plusieurs ordinateurs s'il te faut plus de puissance de calcul.

La plus part des applications actuelles utilisent la programmation orientée objet qui se prête mal au parallélisme à cause des effets de bords mais avec la montée en puissance des architectures matérielles multi coeurs certaines langages commencent à supporter la programmation fonctionnelle et asynchrone.

Pour l'astro c'est une évolution intéressante car elle permettra de gérer plusieurs tâches en // ... par exemple : pilotage de la monture, acquisition, traitement de la turbulence, affichage.

Share this post


Link to post
Share on other sites

Ca fait longtemps que vos applis sont multithreadées, sinon vos UI n’arrêteraient pas de se bloquer pour chaque traitement un poil long.
Intel à introduit l'hyperthreading depuis 11 ans.
Genika Trigger active jusqu'à 8 threads simultanément, Genika Astro en consomme 4.
Même un pauvre driver ASCOM demande 2 threads pour ne pas bloquer l'appli appelante.

Share this post


Link to post
Share on other sites

Pour les besoins de grosses puissances calcul, on peut faire du cloud computing sur Amazon avec une grande flexibilité sur le nombre de processeurs ;-) http://aws.amazon.com/fr/

Mais comme le dit Marc, il faut que le code soit parallélisé. On fait déjà pas mal de choses avec 4 coeurs sur R6 ou du Autostakert 2.

Share this post


Link to post
Share on other sites

Oui, et il y a une telle différence que de revenir "à l'ancienne" (monothread comme iris ou avistack) c'est quelque chose que je redoute !

Par contre je me souviens avoir lancé plusieurs traitements avistack simultanés sur autant de fichiers SER. Cela revient au même à la fin.
Si la ram suit (systeme x64 avec >>4Go) et l'interface disque aussi (RAID 0 à l'époque), il n'y a pas de ralentissement notable.


Marc

Share this post


Link to post
Share on other sites

Imaginez vous donc un calculateur perso extensible à l infini, utilisation des vielles config ou un windows 7 64bits travaillant avec 3 / 4 / 5 , i7quad ou plus simultanément...
La puissance serait phénoménale !
Les traitements de stacking par exemple se feraient quasi en temps réels...
c est la solution d avenir...
Et celui qui s y interreserai ne reviendrai plus en arrière
Ce procédé serait aussi source d économie car au lieu d acheter un nouveau PC avec un processeur dernier cris, les anciens Pc, Pc portable inutilisés de la famille seraient miśà contribution au moment ou on en a besoin

Share this post


Link to post
Share on other sites

Bonsoir,
------------------
c est la solution d avenir...
------------------
Bof
1:toutes les bonnes applis sont déjà "multitaches/multithread", depuis 10 ans.
2:le clustering existe déjà pour les applis d'imagerie 3D/Vidéos, de calcul numérique intensif, etc. depuis 15 ans.

Donc ce n'est qu'un problème de marché, d'opportunité pour les sociétés, d'y aller ou pas, la technique de programmation est bien connue.

Par contre, il faut penser à la dure réalité des faits
1:si tu possèdes 3 PC, hors de question que d'autres les utilisent en même temps de toi, il faut que les I/O, CPU, réseau local câblé, mémoire soient disponibles, autrement tu perds tout bénéfice à le faire.

2:si tes 3 pc's sont de puissance très inégales en CPU et en mémoire, le maître du cluster attendra forcement le moins rapide pour finir son traitement final....pas rentable du tout.

3:pas vraiment d'intérêt pour le "stacking" mais plus pour des traitements d'image, du genre drizzle, convolution, RL etc..

A+

Share this post


Link to post
Share on other sites

Ben non ton histoire de pc maillon faible n'existe pas dans certains environnements comme Erlang (1987) ou Scala (2004) qui supportent des réseaux complètement hétérogènes.

Scala très influencé par Erlang (approche fonctionnelle) offre en plus l'approche objet.

D'un autre coté c'est sûr que si vous vous cantonnez à l'approche classique (threads/locks/mutex) vous pouvez alors remonter à la préhistoire de l'informatique ... sinon Erlang, Scala, Go ou Clojure offrent une approche moderne et plus efficace pour gérer la concurrence et la distribution.

Voir par exemple dans le chapitre Acteurs, comment Scala avec la librairie Akka gèrent le clustering :
http://it-ebooks.info/book/747/

[Ce message a été modifié par ms (Édité le 13-02-2013).]

Share this post


Link to post
Share on other sites

Bonjour


"c est la solution d avenir..."

Mouais... Déjà que pas mal d'applications ne gère pas le multi-coeurs...


Julien

Share this post


Link to post
Share on other sites

Play Framework permet de faire du clustering (Play -> Scala -> Akka), plusieurs exemples sont donnés sur la toile.

Share this post


Link to post
Share on other sites

Le "clustering" solution d'avenir... mon premier cluster Linux date de 1998 ! Bien avant les technos multicoeurs des procs. Seule la gestion multiprocesseurs est anterieure.

Le probleme n'est pas tant de developper des applis multithread dans ce cas, mais la gestion des differents noeud du cluster, la gestion de la bande passante du reseau ainsi constitue pour l'echange de donnees et l'organisation du cluster. Bref, une solution a preferer pour le traitement de donnees massives, plus que pour le calcul. Il est de meme pour les multiprocesseurs, c'est pourquoi la notion de multicoeur a ete introduite.

Mieux vaut se concentrer sur un developpement rigoureux, qui reste la base meme des performances.

Amicalement,
Yann DUCHEMIN

Share this post


Link to post
Share on other sites

Je ne cherche pas à programmer
J y connais rien
Je cherche juste une appli toute faite me permettant de faire du clutering chez moi pour travailler plus sereinement avec Adobe première cs6 et autres
Sachant que mon pc principal est un
Q6600 quad W7 64bits 4 go

Pc portables
Dual core w7 4go
Intel duo 2 xp pro 4 go
P4 xp 3 go
Un autre pc fixe i3 3 go sous xp mais peut le mettre sous w7

Ms et autre peut on poursuive par email pour aide mise en place.

Benoit.robert2 escargot Numericable.fr

Share this post


Link to post
Share on other sites

> avec Adobe première cs6

Dans ce cas poser la question sur un forum Adobe/Adobe Premier serait plus approprié à mon avis.

Mais à voir ce topic : http://forums.creativecow.net/thread/3/914206
Adobe Premier ne propose pas cette possibilité : "Premiere Pro unfortunately doesn't have network rendering."

Par contre After Effect oui : http://help.adobe.com/en_US/aftereffects/cs/using/WS3878526689cb91655866c1103a4f2dff7-79a3a.html


Share this post


Link to post
Share on other sites

Tu ne peux pas et tu ne pourra jamais ajouter une fonction de traitement distribué à une application qui ne le supporte pas.
Donc soit c'est possible et à mon avis le fournisseur du produit le signale, soit cela ne l'est pas et ... tant pis !

Je rejoins ce qui a été dit plus haut, et pour profiter d'un clustering il FAUT des liens de données très performants (comprendre certainement pas nos liens à 10/100/1000 Mb/s de l'Ethernet) alors que les flux mémoires sont généralement 100 à 10000 fois plus rapides encore.


Marc

Share this post


Link to post
Share on other sites

Re,
là on boucle complètement
soit le soft existe avec les fonctions de clustering et on l'achète
ou
il faut s'écrire son propre pgm de traitement d'image en y incluant les routines de clustering.
Ce n'est pas une routine triviale que l'on ajoute à un existant ne possédant pas les fonctions de clustering.

Dans l'aviation embarquée, le clustering a été largement testé en Unix et il c'est avéré que les différents composants devaient être impérativement de même puissance sous peine d'attente(c'est du temps réel, les calculateurs sont irrigués par les sondes 100 fois /s ).

Chaque calculateur(* 4) reçoit les mêmes data, chacun fait son job séparément ,le Master attends les 4 résultats AVANT de prendre une décision.

Je ne vous évoque pas les problèmes choix si l'un des 4 donne un résultat différent.
Là c'est un mobile de 400 t, à 30 000 pieds d'altitude, à 900 km/h avec 400 pax, pas un pixel à colorier donc soft ROBUSTE ET MAINTENABLE.

A+

Share this post


Link to post
Share on other sites

... Ça a l air plus compliqué que ce que je ne pensais, je pensais qu il suffisait de brancher les ordi en réseau et un soft aurait dispatché le travail vers les PC et ça pour n importe quelle application (dans le présent adobe premiere et effect... ) Mais aussi les softs astro de pré et traitements, MaximDL, Pixinsight, R6, avistak qui peuvent mettre beaucoup de temps à mouliner de façon répétitive et ou la puissance de calcul de processeur est primordiale.

Comme le lien de itzanam l indique, affect supporte le clustering, donc avec le lien dynamique de premiere vers affect, c est un moyen de rendre première compatible au clustering.

[Ce message a été modifié par typhoons (Édité le 13-02-2013).]

Share this post


Link to post
Share on other sites

> le lien dynamique de premiere vers affect

Si j'ai bien compris ce qui est dit ici : http://help.adobe.com/fr_FR/aftereffects/cs/using/WS92A6319B-B1EB-4b49-A09A-9FFE8 3E6CD37.html ,
ce lien permet d'importer dynamiquement un projet After Effect dans Premier (Un peu comme les calques dynamiques dans photoshop), pas de déléguer le rendu de l'un à l'autre.


Avistack ne gère déjà pas le multicoeurs... A moins qu'il y ait eu une nouvelle version, cela fait bien une année que je ne l'ai pas utilisé. Par contre il est possible d'en lancer plusieurs instances, chaque instance utilisera alors un coeur.

Pixinsight gère bien les processeur multicoeur si je ne me trompe pas.

R6 : je ne connais pas, c'est quoi ?

MaximDL. Lui j'ai l'impression que certaines fonction ne sont pas multi-threadées.


Si tu veux améliorer les perfs de tes traitements, il faut plutôt commencer par trouver les points qui posent problème : CPU ? Disque ? RAM ?


Julien

[Ce message a été modifié par Itzamna (Édité le 13-02-2013).]

Share this post


Link to post
Share on other sites

Re,
pour faire ultra simple avec 4 pc's(1 maître et 3 autres):

Si tu souhaites faire un DDP (par exemple) sur une image avec le soft XYZ:
1:le master doit "couper" l'image en 4 parties

2:en fonction de sa config de cluster, affecter et envoyer les données à chaque PC par le réseau en plusieurs coups et la fonction DDP

3:chaque PC éxécute la fonction DDP, fait le boulot sur les données actuelles, les renvoie au master via le réseau et attends les prochaines.

4:le master assemble son propre boulot avec celui des 3 autres et affiche en final l'image.

C'est TRES simpliste comme description mais:
1:il y a de l'intelligence répartie(un subset du soft XYZ à charger dans chaque PC), de la charge réseau, du travail en plus pour le soft XYZ du master à gérer son équipe.

2:la charge réseau est importante, car le master préfère envoyer des portions plutôt que l'image entière afin de ne pas saturer les ressources des Pc(en image de synthèse ça se passe comme cela et les Sun ne font que ça).

Faut pas être "prix Nobel" en développement mais il faut bien penser l'architecture de son soft.
C'est franchement à la portée d'Adobe ou d'autres mais y a t'il un marché, c'est le nerf de la guerre

A+


Share this post


Link to post
Share on other sites

astrotech> Moi "aviation embarqué" avec dans la même phrase "unix" cela me fait un peu tiquer de mon coté !

Share this post


Link to post
Share on other sites

typhoons et astrotech, avec la librairie Akka 2 (API Java ou Scala) vos exemples peuvent s'implémenter de la façon suivante :
http://letitcrash.com/post/29044669086/balancing-workload-across-nodes-with-akka-2

Il n'est pas nécessaire de réécrire une appli existante (Worker x) si vous avez accès à son API. Il est donc inexact d'affirmer :

quote:
Tu ne peux pas et tu ne pourra jamais ajouter une fonction de traitement distribué à une application qui ne le supporte pas.
.

Sous Windows par exemple les "Worker x" peuvent être des objets COM (Word, Excel, Photoshop, Gimp, SolidWorks, etc ...) capables de communiquer avec le "Master" via un système de boites à lettres.

La même manip pourrait se faire dans l'environnement Python avec la librairie Pykka moins complète que Akka mais suffisante dans bien des cas.

Pour CS6 la doc sur les objets COM se trouve :
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/indesign/sdk/cs6/plugin/plugin-programming-guide-vol1.pdf

[Ce message a été modifié par ms (Édité le 14-02-2013).]

Share this post


Link to post
Share on other sites

Oui ms mais avec Word/Excel ce n'est pas du traitement distribué. Tu réalise plusieurs traitements distincts (ou pas) à un objet. Cela ne permet pas d'obtenir un traitement "plus rapide" au global.
Il faudrait pour cela découper un objet et/ou un traitement pour le répartir. C'est une connaissance que n'a pas un outil comme word ou excel.
Pykka est différent puisque il répartit un traitement (python) sur plusieurs clients. Autant dire qu'on a un nouveau "Python" en fait ! La problématique n'est pas tant dans les clients (exécutants) que dans le serveur de distribution.

C'est un peu comme pour une compilation distribuée. Tu peux compiler un fichier par machine (ou par coeur) pour optimiser la vitesse de l'ensemble mais là on a aussi découpé les données (l'ensemble des fichiers) en plusieurs lots. Là encore c'est un problème de distribution, pas de réalisation.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this