Gestione grossi calcoli su piattaforma condivisa

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto UtenteDarwinNE
31,0k 7 11 13
G.Master EY
G.Master EY
Messaggi: 4421
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France
Contatta:
2
voti

[1] Gestione grossi calcoli su piattaforma condivisa

Messaggioda Foto UtenteDarwinNE » 6 lug 2015, 17:20

Sarebbe possibile secondo voi prendere le varie macchine a mia disposizione e configurarle come nodi di un cluster (anche se non sono tutte uguali)? Uno potrebbe definire dei job che richiedono molta memoria, ad esempio, e questi verrebbero mandati solo su i nodi più potenti. Invece, job con richieste meno esose potrebbero essere sbrigati dal primo nodo disponibile.

Colpa di fairyvilje
Ho inavvertitamente cancellato il contenuto del post e sono riuscito solo a recuperare una parte che avevo citato nella risposta :(. Mi scuso tantissimo con Foto UtenteDarwinNE e spero possa recuperare il contenuto originale :(

Hai hai Foto Utentefairyvilje. Dai, non è grave, più tardi riscrivo quello che manca del post :-) DarwinNE
Follow me on Mastodon: @davbucci@mastodon.sdf.org

Avatar utente
Foto UtenteJackd
794 4 7
Expert
Expert
Messaggi: 284
Iscritto il: 15 set 2014, 19:10
Località: Padova
Contatta:
0
voti

[2] Re: Gestione grossi calcoli su piattaforma condivisa

Messaggioda Foto UtenteJackd » 7 lug 2015, 3:52

Ciao,
sinceramente non ne so molto di questa tecnologia dal punto di vista "SERVER", ma fino a qualche anno fa
ho partecipato come "Utente Volontario" al progetto di ricerca "SETI@Home" basato sul sistema BOINC.

Dopo aver letto il tuo messaggio sono andato a riguardare il sito del progetto BOINC ed ho visto che già al tempo davano indicazioni di come aggiungere il proprio progetto.

Ti consiglio di darci un occhiata, che se non ho interpretato male questo sistema potrebbe esserti di aiuto per sfruttare anche le macchine un po più datate, oltre ad aggiungere al calcolo macchine più nuove senza grossi problemi

Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
Messaggi: 2193
Iscritto il: 4 ott 2009, 10:25
2
voti

[3] Re: Gestione grossi calcoli su piattaforma condivisa

Messaggioda Foto UtenteRussell » 7 lug 2015, 8:38

per il calcolo multipiattaforma puoi vedere questo framework

http://it.wikipedia.org/wiki/OpenMP

ho la stessa esigenza, ma al momento mi sono fermato con uno sviluppo multithread monomacchina.
Il mio problema principale è che il quantitativo di memoria da condividere per ogni job è sproporzionato rispetto al calcolo che ci lavorerebbe sopra, quindi ho delle perplessità che quel mondo possa concretamente aiutarmi... ecco perche' non posso aiutarti non avendo concretamente approfondito la questione.

In realtà (via alternativa) nel mio caso, grazie ad una certa indipendenza dei risultati dei singoli job, sarebbe facilmente possibile usare una cartella condivisa in cui i vari pezzetti possono essere caricati e salvati dopo il calcolo, senza particolari sincronismi per le condivisioni, in quel caso basta un minimo di organizzazione del lavoro con i banali socket ed il gioco sarebbe fatto ... ma anche qui non ho ancora avuto tempo di passare all'implementazione.

Fammi sapere, se userai OpenMP, avrei piacere di sentire un parere sincero a fine lavori.

ciao

Avatar utente
Foto Utentecronos80
1.546 1 6 12
Expert EY
Expert EY
Messaggi: 636
Iscritto il: 17 gen 2012, 9:43
1
voti

[4] Re: Gestione grossi calcoli su piattaforma condivisa

Messaggioda Foto Utentecronos80 » 7 lug 2015, 12:11

Non so molto di cluster a parte le definizioni di base. Però...
Se ne dovessi avere bisogno organizzerei il codice da eseguire in modo tale da poter essere eseguito separatamente cambiando solo gli argomenti in ingresso. Fatto questo metterei su un sistema client-server in cui il client si identifica e chiede al server cosa fare. Il server a sua volta ha su un demone che dirige il traffico dati in base a determinati criteri.
Sto ragionando in python, quindi un linguaggio interpretato, e immagino che il client abbia già il codice e che gli manchino solo gli argomenti.
Si potrebbe fare anche che il server invii il codice e gli argomenti da eseguire al client. Il client farebbe un "banalissimo" exec del codice che invii dal server.
Ovviamente tutto questo ha senso se il codice non è già scritto ed è accessibile.
O_/
Non cercare di piegare il cucchiaio. È impossibile. Cerca invece di fare l'unica cosa saggia: giungere alla verità. Il cucchiaio non esiste. Allora ti accorgerai che non è il cucchiaio a piegarsi, ma sei tu stesso!

Avatar utente
Foto UtenteDarwinNE
31,0k 7 11 13
G.Master EY
G.Master EY
Messaggi: 4421
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France
Contatta:
4
voti

[5] Re: Gestione grossi calcoli su piattaforma condivisa

Messaggioda Foto UtenteDarwinNE » 7 lug 2015, 14:22

Ah, Foto Utentefairyvilje biricchino :D

Grazie delle risposte ragazzi, preciso un po' meglio il contesto. In pratica è un software che ho scritto io in gran parte, fa calcoli per risolvere le equazioni di Maxwell in certe situazioni, ed è parallelizzato in una certa misura. Potrei usare OpenMP, anche se di solito il problema viene dall'occupazione di memoria che richiede macchine con 64 GiB di RAM almeno, se non di più (quindi non hardware obsoleto).

In pratica, adesso abbiamo tre macchine con caratteristiche leggermente diverse che sono usate come server.
Se voglio, io posso collegarmi alla macchina 1 e lanciare un calcolo, poi un mio collega si lancia alla macchina 2 ed un terzo alla macchina 3. Adesso come adesso le macchine sono viste ed utilizzate separatamente, io vorrei aggiungere un sistema che permetta agli utenti di vedere le tre macchine come una sola entità ed effettuare la ripartizione dei vari calcoli a seconda delle risorse disponibili.
Per esempio, io vorrei poter fare in modo che se un collega ha lanciato dei calcoli sulla macchina 1 e 3, una mia richiesta venga automaticamente assegnata alla macchina 2 perché è libera.

Se supponiamo che la macchina 1 abbia più memoria o sia più veloce delle macchine 2 e 3, potrei fare dei calcoli piccoli che possono girare in maniera indifferente sulle macchine 1, 2 e 3 o calcoli più complessi che devono girare sulla macchina 1. Se però ho una collega che la sta già usando, vorrei che la mia richiesta finisca in coda e venga eseguita nonappena il suo calcolo finisce.

Poi, in un secondo tempo, per certe problematiche possiamo passare ad utilizzare OpenMP, oppure anche una parallellizzazione più grezza (abbiamo già fatto qualcosa in merito e funziona bene).

Se poi, poniamo, in un progetto ci arrivano 5k€ da spendere in informatica, posso pensare di comperare un nodo nuovo e di aggiungerlo al sistema (diventerebbe la macchina 4), magari mandando in pensione dopo un po' di tempo la macchina 2 che inizia a diventare vecchiotta rispetto al resto.

Per me sarebbe anche più semplice da gestire l'aggiornamento del programma in questione perché attualmente abbiamo 3 macchine ed ognuna (per ragioni diverse e varie) fa girare una versione diversa :oops:

In passato, ho usato un cluster, ma l'avevamo acquistato in un sol blocco (1 master e 10 nodi identici), già perfettamente configurato ed è invecchiato piano piano fino a che non è stato smantellato perché pesantemente obsoleto. Io cercherei più flessibilità, perché investimenti da 50-100 k€ non ne possiamo fare in questo momento e non possiamo permetterci l'acquisto di un cluster in un sol blocco. D'altro canto, i responsabili del nostro servizio informatico non sono formati alla configurazione di un cluster e se questa strada è percorribile dovrei dare io delle informazioni chiare ed abbastanza dettagliate su come procedere.

Mi piacerebbe anche fosse possibile definire quote di calcolo, per evitare situazioni spiacevoli da gestire dove qualcuno monopolizza tutto il sistema intasandolo di richieste.

Tutto ciò che mi interessa si può fare con un cluster Beowulf? E' difficile da configurare (sono tutte macchine Linux CentOS)?

Potremmo tenere le macchine separate ed andare avanti come si fa adesso, ma mi pare una soluzione inefficiente e scomoda e dato che le risorse scarseggiano razionalizzarle permetterebbe a tutti gli interessati di approfittarne pienamente.
Follow me on Mastodon: @davbucci@mastodon.sdf.org

Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
Messaggi: 2193
Iscritto il: 4 ott 2009, 10:25
0
voti

[6] Re: Gestione grossi calcoli su piattaforma condivisa

Messaggioda Foto UtenteRussell » 7 lug 2015, 14:57

Ah, ma se quindi non fraintendo la situazione, su ogni macchina si dovrebbe lanciare un job indipendente dagli altri... il tuo obiettivo allora in pratica è soltanto quella di lanciare il job sulla prima macchina disponibile, o eventualmente di accodarti per l'utilizzo forzato di una macchina appena disponibile.
Beh, se riesci a lanciare il tuo lavoro tramite una semplice riga di comando, credo si possa scriversi degli script che siano in grado di gestire questa logica.
Non sono molto pratico di linux per questa faccende, ma mi viene da pensare che battezzando uno del PC 'master' (dandogli il ruolo di dirigere gli instradamenti) e il generare su ogni macchina un semplice file (tipo 'busy.txt' oppure 'nextjobrun.txt" creato in una cartella condivisa) [o qualcosa del genere] sia sufficiente (con un po' di lavoro) a cavarci le gambe
no?

Avatar utente
Foto UtenteDarwinNE
31,0k 7 11 13
G.Master EY
G.Master EY
Messaggi: 4421
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France
Contatta:
0
voti

[7] Re: Gestione grossi calcoli su piattaforma condivisa

Messaggioda Foto UtenteDarwinNE » 7 lug 2015, 15:07

Sì, Foto UtenteRussell, è più o meno così.
Ora, io posso scrivere un software del genere, ma se esistesse già (e credo sia il caso), mi risparmierebbe un bel po' di lavoro. Per questo chiedo a riguardo di Beowulf:

https://en.wikibooks.org/wiki/Building_ ... lf_Cluster

Ma se i nodi non sono identici (ma nessuno è una schifezza, intendiamoci, la macchina più piccola mi pare abbia 32 GiB di RAM), il sistema funziona lo stesso?
Follow me on Mastodon: @davbucci@mastodon.sdf.org

Avatar utente
Foto UtenteSjuanez
11,3k 6 8 13
G.Master EY
G.Master EY
Messaggi: 3479
Iscritto il: 18 mar 2015, 12:48
0
voti

[8] Re: Gestione grossi calcoli su piattaforma condivisa

Messaggioda Foto UtenteSjuanez » 7 lug 2015, 15:08

Una faticaccia minare sti Bit Coin, vero? :mrgreen: :mrgreen: :mrgreen: :mrgreen:

Scherzi a parte, seguo con interesse la proposta di Foto UtenteRussell.

O_/ O_/ O_/
Più so e più mi accorgo di non sapere.

Qualsiasi cosa abbia scritto, tieni presente che sono ancora al mio primo rocchetto di stagno.

Avatar utente
Foto UtenteDarwinNE
31,0k 7 11 13
G.Master EY
G.Master EY
Messaggi: 4421
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France
Contatta:
0
voti

[9] Re: Gestione grossi calcoli su piattaforma condivisa

Messaggioda Foto UtenteDarwinNE » 7 lug 2015, 15:09

Sjuanez ha scritto:Una faticaccia minare sti Bit Coin, vero? :mrgreen: :mrgreen: :mrgreen: :mrgreen:


Lol, no, è roba come questa: http://davbucci.chez-alice.fr/fisica/pa ... -3-367.pdf

Non per forza con guide curve, funziona anche con strutture regolari (RCWA).
Follow me on Mastodon: @davbucci@mastodon.sdf.org

Avatar utente
Foto UtenteSjuanez
11,3k 6 8 13
G.Master EY
G.Master EY
Messaggi: 3479
Iscritto il: 18 mar 2015, 12:48
0
voti

[10] Re: Gestione grossi calcoli su piattaforma condivisa

Messaggioda Foto UtenteSjuanez » 7 lug 2015, 15:17

Farò finta di aver capito e dirò: ah ecco! :mrgreen: :mrgreen:

(abbi pietà, ho aperto il primo libro di fisica a 30 anni :oops: :oops: )

O_/ O_/ O_/
Più so e più mi accorgo di non sapere.

Qualsiasi cosa abbia scritto, tieni presente che sono ancora al mio primo rocchetto di stagno.


Torna a “Programmi applicativi: simulatori, CAD ed altro”