Software desktop con risorse HPC per lo scricchiolio dei numeri di back-end


17

Il nostro gruppo di lavoro produce un'applicazione desktop che simula la prestazione energetica dell'edificio. È un'applicazione .NET e quando l'utente esegue molte simulazioni, può richiedere molto tempo. Le simulazioni sono totalmente parallelizzabili e disponiamo di risorse di calcolo HPC molto significative in "ufficio".

Un'idea che abbiamo avuto è quella di consentire agli utenti di scaricare simulazioni che sappiamo dureranno molto a lungo (mentre ogni singola simulazione dura circa 30-120 secondi, l'esecuzione di un gran numero di simulazioni potrebbe richiedere diversi giorni). Qualcuno l'ha già fatto? In tal caso, hai utilizzato delle librerie per semplificare il lavoro? Ne è valsa la pena?

modificato per aggiungere:

Le singole attività per lo scarico della simulazione sarebbero

  • impacchettare un file (circa 5 Mb),
  • caricandolo sui nostri server,
  • scomporre il pacchetto in singole simulazioni (ciascuna richiede circa 30-120 secondi ed è totalmente parallelizzabile), il numero di simulazioni è una funzione del numero di opzioni selezionate dall'utente (isolamento, orientamento dell'edificio, ecc.) e il caso peggiore di selezione ogni possibile opzione si tradurrebbe in circa 1E50 simulazioni. L'esecuzione di simulazioni da 100 a ~ 1E5 non è sconosciuta, ma la maggior parte degli utenti eseguirà meno di 10.
  • riassemblando le simulazioni completate e scaricando il file ora molto più grande.

Non siamo sicuri di quale interfaccia utilizzare, dato che il nostro gruppo è nuovo in questo, e con tagli di budget, potrebbe essere completato in tempo, ma deve essere facile da mantenere per le persone successive (se presenti).

Questa app utilizza già .NET 4 e può espandersi per utilizzare tutti i core che l'utente ha (le nostre macchine di sviluppo hanno 8 core).


Non sono del tutto chiaro su cosa esattamente stai andando qui - la fine di HPC sarà sempre sui tuoi server o altri server dedicati? (Se è così, ciò dovrebbe rendere molto più facile perché potresti essere in grado di fare molto più lato server.)
Aesin

@Asin, la fine di HPC sarà sui nostri server, sì. L'app esistente e la nuova versione eseguono simulazioni sul desktop degli utenti. Sto cercando consigli / raccomandazioni su come pensare alla prossima versione per poter utilizzare HPC per gli utenti più grandi.
Tangurena,

Risposte:


10

Puoi prendere in considerazione l'utilizzo di Condor: http://research.cs.wisc.edu/condor/ . Potrebbe essere eccessivo, a seconda del tipo di risorse HPC di cui stai parlando e di quanto cambieranno. Tuttavia, è abbastanza facile iniziare e si occupa di avviare lavori indipendenti, tolleranza agli errori, bilanciamento del carico, ecc.

Sarebbe più utile se tu fossi più specifico sulle singole attività (quanto tempo, quanto asincrono) e quale interfaccia useresti per l'interazione (processo di avvio, libreria, ecc.)

opaco


Non sono sicuro che condor funzionerebbe con .net (Windows?), Ma il nostro gruppo di lavoro usa condor su Linux e posso consigliarlo per inoltrare lavori +1
Sebastian

Condor può comunicare attraverso il file system, quindi non è necessario seguire .NET. Funziona su Windows.
Matt Knepley,

5

Se ti trovi nel mondo .NET, hai esaminato il supporto multi-threading in .NET 4; e le funzionalità asincrone che vengono aggiunte a .NET 4.5?

Il multithreading non ti aiuta a scaricare l'elaborazione su altre macchine, ma ti consente di utilizzare meglio i PC multicore che stiamo tutti usando in questi giorni. 4.0 ha alcune belle funzionalità in questo senso.

4.5 è attualmente in anteprima tecnologica, quindi vale la pena dare un'occhiata per vedere se sarà di aiuto. In MSDN è stato pubblicato un articolo che introduceva le nuove funzionalità asincrone nell'ultimo mese (ottobre o novembre e sicuramente non prima di settembre). Sembrava che queste funzionalità fossero spinte come un modo per parallelizzare il codice tradizionalmente meno parallelo, ma IIRC includeva anche un supporto multi-server.


4

La risposta dipende da ciò che hai come backend HPC. La domanda si riferisce alle risorse esistenti disponibili per gli utenti NREL. Esistono cluster Linux e un cluster Windows basato sul Windows Compute Cluster Server.

  1. Per utilizzare il cluster Linux, l'autore deve assicurarsi che la routine di simulazione venga eseguita su Mono (l'implementazione della piattaforma .NET per Linux) e assicurarsi che Mono sia installato sui nodi.

  2. La domanda successiva è se gli utenti dispongono di account nei cluster di calcolo e possono trasferire i dati ai nodi. Il caso più semplice è con un singolo filesystem accessibile da PC locali e dai nodi.

    Non sono sicuro che un tale filesystem sia disponibile per gli utenti NREL, quindi saranno coinvolte alcune copie. Questo rende già le cose complicate.

  3. Successivamente l'applicazione dovrebbe essere in grado di compilare uno script di descrizione del lavoro, inviarlo al rispettivo cluster e interrogare il sistema di accodamento per lo stato delle simulazioni fino a quando il lavoro non esce dalla coda.

  4. Infine, l'applicazione dovrebbe essere in grado di recuperare i risultati.

Tutto ciò è fattibile anche se non banale e sarebbe altamente specifico per l'installazione di questo particolare laboratorio.

Le applicazioni commerciali di Ansys o MSC consentono all'utente di salvare una descrizione del lavoro di simulazione che può essere successivamente eseguita in modalità batch su un cluster remoto.

Una soluzione più generale sarebbe quella di utilizzare l'infrastruttura Grid, se disponibile.

Il prossimo potrebbe essere l'architettura orientata ai servizi in cui un servizio Web è impostato da qualche parte per attendere le richieste di simulazione e inviarle sul cluster, disaccoppiando così l'applicazione dalla conoscenza delle specifiche delle risorse disponibili.

Questo è ampiamente usato ad esempio nella biologia computazionale, dove vengono utilizzati strumenti per comporre flussi di lavoro di simulazione costituiti interamente da richieste di servizi Web per l'elaborazione.

Solo per notare che l'offload dei calcoli sulle risorse di calcolo remoto viene comunemente utilizzato in applicazioni come il riconoscimento vocale di Google per Android.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.