PDA

Voir la version complète : Cluster HPC



Minas
10/01/2017, 22h27
Pour raccourcir les temps de calcul d'un logiciel de calcul par éléments finis, je souhaiterais :
- Option 1 : créer un cluster avec les PC de mon réseau. Est-ce possible ? avec quels logiciels ?

- Option 2 : monter un Cluster "économique" avec des Raspberry ou autre. Même si le montage en lui même ne me semble pas trop sorcier, je ne connais que windows et Linux m'effraie un peu. Le logiciel tournant sur un PC sous windows, peut-il utiliser la puissance de calcul du HPC sous linux ? L'un de vous, a-t-il déjà tenté ce genre d'expérience. Est-ce techniquement et économiquement abordable ... et surtout est-ce efficace ?

Merci à tous les gens de bonne volonté.

shlagevuk
12/01/2017, 11h18
Salut,

Il faudrait plus de détails pour que l'on puisse répondre à tes questions:

Quel est ton budget?
Quel est le logiciel que tu compte utiliser? (et potentiellement si tu sais déjà ces détails: a-t-il besoin de beaucoup de ressource réseau/disque/mémoire? fait-il du calcul gpu?)
Quel est la configuration type des postes de ton réseau?
Que font tes utilisateurs dessus? (a moins que ce soit juste chez toi)

Minas
15/01/2017, 12h33
Une tendance aujourd'hui (Dassault, Autodesk ...) est de proposer des crédits (... donc payants) pour des calculs accélérés via le cloud, d'où ma piste de réflexion : comment mutualiser nos propres ressources de calcul plutôt que payer à nouveau !

Option 1 : Pour la mise en commun des ressources réseau, cela me semble finalement utopique (à la maison en plus du PC principal il doit y avoir 2 vieux portables et basta / pour le réseau pro il y en bien une vingtaines mais de tous ages en XP et win 7 ...).

Option 2 : elle me semble plus intéressante,
- un cluster de 4 raspberry pourrait être économique (environ 300 EUR) afin de valider le principe et la faisabilité,
- elle peut être évolutive en fonction des finances et des besoins en ressources

ci-dessous le fruit de mes maigres recherches :
http://coen.boisestate.edu/ece/files/2013/05/Creating.a.Raspberry.Pi-Based.Beowulf.Cluster_v2.pdf
http://makezine.com/projects/build-a-compact-4-node-raspberry-pi-cluster/
http://www.framboise314.fr/un-cluster-de-66-raspberry-pi/
http://www.rasmurtech.com/raspberry-pi-3-cluster-supercomputer/

Honnêtement je découvre le Raspberry sur ce projet mais je ne suis pas du tout informaticien ou programmeur ... je connais encore moins linux et python. Mon idée n'est pas de vous faire travailler à ma place, mais cette idée a obligatoirement été eu par des centaines de personnes bien avant moi ... et d'autres peuvent également être intéressées par cette application.

Comment programmer les raspberry ?
Comment benchmarker/évaluer le cluster ?
Comment faire fonctionner le cluster sur Moldflow Insight (en priorité), Abaqus ou Ansys ?

A tous les intéressés, merci.

Møgluglu
15/01/2017, 15h58
Avant tout, est-ce que tu disposes de codes de calcul sur cluster pour tes applications ? Vu que tu ne mentionne que des logiciels pour station de travail ("un PC sous Windows"), j'ai l'impression que ce n'est pas le cas. Un cluster est simplement un groupe de machines branchées ensemble et se programme comme tel. Il faut donc que les programmes soient spécialement écrits pour.

Le cluster de Raspberry Pi, oublie, c'est un jouet : le principe est de construire un cluster pour construire un cluster, pas pour calculer avec.

Minas
15/01/2017, 18h23
Merci Møgluglu,

En effet, c'est bien l'impression que j'avais en regardant ces sites "un cluster pour construire un cluster" ! Tout reste à faire après.

Pour les codes de calcul : je ne sais même pas de quoi tu me parles ^^ ... ça en dit long sur mon niveau.

Je peux juste te donner ces liens qui personnellement ne m'ont pas avancé :
https://knowledge.autodesk.com/support/moldflow-insight/troubleshooting/caas/CloudHelp/cloudhelp/2017/ENU/MFIA-InstallLicence/files/GUID-C9739CC5-BC78-40F6-BE0B-2E8C8FA589FD-htm.html
https://knowledge.autodesk.com/support/moldflow-insight/troubleshooting/caas/sfdcarticles/sfdcarticles/Environmental-Variable-information-for-Linux-Thin-Client.html

Møgluglu
15/01/2017, 19h47
OK, effectivement Moldflow dispose d'un gestionnaire de tâches pour distribuer les calculs sur plusieurs machines :
https://knowledge.autodesk.com/support/moldflow-insight/learn-explore/caas/CloudHelp/cloudhelp/2017/ENU/MoldflowInsight/files/GUID-19D04D37-430B-4C31-9F8C-9E886CF24F02-htm.html

Tu as donc un gestionnaire de tâches sur une machine, un certain nombre de serveurs de calcul, et un certain nombre de clients. L'intérêt de cette configuration est de mieux répartir la charge qu'avec des stations de travail indépendantes, ou bien d'avoir des machines plus puissantes et bruyantes en salle machine climatisée pendant que les utilisateurs bossent au calme dans un open-space.
Mais je n'ai pas l'impression que ça soit pensé pour avoir plus de serveurs que de clients comme ce que tu veux faire. Si je comprends bien, une simulation tourne toujours sur une seule machine. En ajoutant des machines, tu ferais tourner plus de simulations en même temps, mais pas accélérer une simulation donnée.

Minas
15/01/2017, 22h32
"Launch and manage jobs on other machines on the network that have been set up as job servers. This makes it possible to run jobs on server-only platforms that do not provide a user-interface for launching analyses" : Je comprends que le calcul est effectué par une plateforme serveur qui n'a pas l'interface utilisateur ...
Bon en gros, il faudrait être sûr de pouvoir lancer le calcul sur un autre poste que celui utilisé pour lancer l'analyse, pour ensuite, éventuellement, vouloir le lancer sur un cluster (et accessoirement lui faire un bout de programme pour qu'il puisse le faire...)

Møgluglu
16/01/2017, 10h44
Oui, c'est ça. Un cluster est simplement un groupe de plusieurs serveurs, rien de plus! (Même si tu peux faire des tests avec un PC sous Linux, en vrai un serveur de calcul n'est pas un poste de travail, mais plutôt un nœud bi-processeur avec une vingtaine de coeurs et une centaine de Go de RAM.)

shlagevuk
16/01/2017, 15h48
Dans tout les cas si tu veux tester le fonctionnement/installation de l'ensemble tu peux le faire dans des machines virtuelles, si tu as une bécanne assez bien pourvu en RAM tu doit pouvoir faire tourner 2 à 4 noeuds de calcul, ce qui permet au final de tester un peu tout.

Minas
16/01/2017, 21h58
Voici les investigations d'aujourd'hui :
- lancer le calcul sur un autre poste est possible (via licences réseau),
- lancer le calcul d'un poste Win7 sur linux est également possible (mais seul le solver peut être installé sous linux),
- a priori, sous linux le fonctionnement d'un cluster est également possible !

Reste à déterminer la réelle utilité/gain avec un cluster de Raspberry :
- test du poste de travail (avec le premier logiciel venu ... QwikMark) : 70 GFlops (pas franchement un foudre de guerre),
- combien sur 1 RaspPi ?
- combien sur N RaspPi ? gain en temps ?
- coût des licences réseaux ... et temps passé,
... bon un truc à tester en non-officiel, bien planqué à la maison ;-D

@shlagevuk
mon PC n'a que 8GB de RAM ... est-ce suffisant pour la virtualisation ? quelle est la marche à suivre ? Peut-on virtualiser des raspberry ?

Y-a-t'il des règles pour estimer le gain en passant d'une machine à N machines en parallèle ?

Minas
16/01/2017, 22h13
...
Mais je n'ai pas l'impression que ça soit pensé pour avoir plus de serveurs que de clients comme ce que tu veux faire. Si je comprends bien, une simulation tourne toujours sur une seule machine. En ajoutant des machines, tu ferais tourner plus de simulations en même temps, mais pas accélérer une simulation donnée.

Oui c'est complétement ça !

A ton avis, est-ce qu'avec un cluster :
- le réseau ne voit que l'élément maitre : et il traite plus rapidement toutes les taches, mais les unes après les autres
- ou toute la grappe : ... et chaque nœud ne gère qu'une seule tâche ? et s'il faut attribuer chaque tache à chaque nœud manuellement : bof bof

Møgluglu
16/01/2017, 22h45
Reste à déterminer la réelle utilité/gain avec un cluster de Raspberry :
- test du poste de travail (avec le premier logiciel venu ... QwikMark) : 70 GFlops (pas franchement un foudre de guerre),
- combien sur 1 RaspPi ?

Un Pi 1 : quelques MFlops (pas d'unités virgule flottante).
Un Pi 2 ou 3 : environ 3 GFlops
Mais en pratique plutôt zéro, faute d'avoir assez de mémoire, et de toute façon tes logiciels ne tournent que sous x86, pas sous ARM.

Comme disait Seymour Cray (https://en.wikipedia.org/wiki/Seymour_Cray), si tu veux labourer un champ tu attelles ta charrue à quoi : 2 bœufs costauds ou 1024 poulets ?


Y-a-t'il des règles pour estimer le gain en passant d'une machine à N machines en parallèle ?

Yep, la loi d'Amdahl (https://en.wikipedia.org/wiki/Amdahl's_law). Pour N grand ça tend vers une constante. :)


A ton avis, est-ce qu'avec un cluster :
- le réseau ne voit que l'élément maitre : et il traite plus rapidement toutes les taches, mais les unes après les autres
- ou toute la grappe : ... et chaque nœud ne gère qu'une seule tâche ? et s'il faut attribuer chaque tache à chaque nœud manuellement : bof bof

Le gestionnaire de tâches s'occupe de répartir la charge automatiquement en assignant un nœud à chaque tâche. Chaque nœud peut gérer une ou plusieurs tâches suivant la façon dont c'est configuré. Une fois que tous les nœuds sont occupés les tâches suivantes sont mises en file d'attente en attendant qu'un nœud se libère. Mais une tâche ne tourne que sur un seul nœud.

Minas
17/01/2017, 07h26
j'adore la métaphore agricole ! ça le mérite d’être parlant.

... mais que de déception.

Bon, alors retour à l'option 1 : comment peut-on lier 2 PC i7 win7 (proc différents) pour qu'ils travaillent ensemble ? ... nos deux bœufs quoi.
... j'ai bien une petite idée : on peut pas.

Møgluglu
17/01/2017, 12h10
C'est ça. ;)
Tu peux les faire bosser en même temps sur deux calculs différents, mais pas ensemble sur le même calcul (à moins d'avoir du logiciel spécialement écrit pour cluster comme ce qui tourne sur les supercalculateurs).