mi imbatto nel seguente problema quando si scrive codice scientifica con Python:raccolta la potenza dei computer altamente parallelo con Python codice scientifica
- Di solito si scrive il codice in modo iterativo, come uno script che svolgono qualche calcolo.
- Infine, funziona; ora desideri eseguirlo con più input e parametri e trova che ci vuole troppo tempo.
- Ricordando che lavori per un istituto accademico e hai accesso a circa 100 macchine CPU, sei perplesso su come sfruttare questo potere. Si inizia preparando piccoli script di shell che eseguono il codice originale con input diversi e li eseguono manualmente.
Essendo un ingegnere, so tutto dell'architettura giusta per questo (con gli elementi di lavoro in coda, i thread oi processi di lavoro ei risultati del lavoro accodati e scritti nell'archivio permanente); ma non voglio implementarlo da solo. Il problema più problematico è la necessità di repliche a causa di modifiche al codice o problemi di sistema temporanei (ad esempio, fuori memoria).
Vorrei trovare un framework a cui fornirò gli input desiderati (ad esempio con un file con una riga per esecuzione) e quindi sarò in grado di avviare più istanze di qualche agente fornito da framework che verrà eseguito il mio codice Se qualcosa è andato male con la corsa (ad esempio, problema di sistema temporaneo o eccezione generata a causa di un bug) potrò cancellare i risultati ed eseguire altri agenti. Se prendo troppe risorse, potrò uccidere alcuni agenti senza temere l'incoerenza dei dati, e altri agenti raccoglieranno gli oggetti di lavoro quando troveranno il tempo.
Qualsiasi soluzione esistente? Qualcuno vuole condividere il suo codice che fa proprio questo? Grazie!
Io non lo uso da solo, ma [python per mpi] (http://mpi4py.scipy.org/docs/usrman/index.html) è comunemente usato per questo genere di cose. Poiché mpi è già enorme nello spazio di calcolo scientifico, potrebbe adattarsi all'architettura esistente. – tdelaney
* Essendo un ingegnere, so tutto ... ma non voglio implementarlo da solo. * Mi sembra più un manager. La tua macchina ha un sistema di gestione dei lavori installato? –
@ High Performance Mark: Ahi .. Preferisco chiamarlo focalizzato. :) Ma in realtà, il codice scientifico non è come il codice di produzione; se scrivere un codice sperimentale richiede mezza giornata, non è ok ci vorrà un'altra mezza giornata per farlo funzionare su un cluster, che è il caso per me oggi. –