2010-06-03 15 views
6

Does .net 4.0 Task Libreria parallela sostituisce MPI.NET per i calcoli ad alte prestazioni?.net 4.0 Attività Libreria parallela contro MPI.NET

MPI.NET trovato qui http://www.osl.iu.edu/research/mpi.net/svn/ è un'implementazione ad alte prestazioni e di facile utilizzo dell'interfaccia Message Passing Interface (MPI) per l'ambiente .NET di Microsoft. MPI è lo standard di fatto per scrivere programmi paralleli in esecuzione su un sistema di memoria distribuita, come un cluster di calcolo.

.NET 4 TPL dice: "La Libreria parallela attività (TPL) è un insieme di tipi pubblici e API negli spazi dei nomi System.Threading e System.Threading.Tasks in .NET Framework versione 4. Lo scopo del TPL è quello di rendere gli sviluppatori più produttivi semplificando il processo di aggiunta del parallelismo e della concorrenza alle applicazioni.Il TPL scala dinamicamente il grado di concorrenza per utilizzare in modo più efficiente tutti i processori disponibili.Inoltre, il TPL gestisce il partizionamento del lavoro, la pianificazione dei thread sul ThreadPool, il supporto per la cancellazione, la gestione dello stato e altri dettagli di basso livello. Utilizzando TPL, puoi massimizzare le prestazioni del tuo codice concentrandoti sul lavoro che il tuo programma è progettato per realizzare. "

Il mio obiettivo è creare un'applicazione che può essere eseguita su Windows HPC 2008 ... quale strada da percorrere?

risposta

2

Il passaggio di messaggi è un modo diverso di affrontare l'idea della programmazione parallela. Axum ed Erlang usano entrambi il passaggio dei messaggi. Non sono realmente confrontabili direttamente, poiché entrambi stanno affrontando due implementazioni specifiche.

Il vantaggio che ho riscontrato con il passaggio di messaggi è che qualsiasi limite di rete/processo può essere reso trasparente e il messaggio che passa non si basa sui thread sottostanti (tutti i messaggi e gli attori possono trovarsi su un thread).

Il TPL, dalla mia comprensione limitata, è lì per costruire/sostituire/migliorare molto l'attuale modello di threading in .NET, ovvero hai thread reali che controlli e comunichi trasferendo argomenti o utilizzando lo stato condiviso.

Se il problema si verifica da zero e il design si adatta a segmenti molto piccoli di codice, suggerirei MPI.NET. Se il tipo di lavoro richiede un uso intensivo della CPU (come il lavoro matematico) suggerirei la rotta TPL.

Modifica: modifica da molto tempo, questa risposta è vecchia! MPI.NET si adatta direttamente a HPC in quanto rende trasparente e configurabile il limite di comunicazione dei nodi HPC. MPI.NET invia messaggi agli endpoint - questi sono i punti definiti come indirizzi IP/porta nei file di configurazione. Il codice non sa che un endpoint attraversa un confine di rete.

Se si sceglie TPL su HPC (non si sa se è supportato), penso che il codice dovrà quindi essere a conoscenza dei nodi e di come trasferire l'elaborazione da uno all'altro, in modo da non trarne vantaggio.

+0

Quindi, si suggerisce MPI.NET per le applicazioni HPC? –

+0

Dai un'occhiata a http://resourcekit.windowshpc.net/MORE_INFO/SeqToParallelHPC.html –

+0

Ciao jalchr, non è così semplice, sfortunatamente. Se si sta eseguendo un pesante sollevamento matematico (ovvero si manterrà un throttle pesante su un singolo thread), optare per il TPL, che è un buon framework per il threading nel modello standard. L'unica area utile per MPI.NET (beh, Axum per me) è attualmente in rete, dove gli attori possono ascoltare sulle porte di rete senza consumare CPU. MPI.NET non sarebbe molto adatto. –

6

Da quello che ho capito, TPL non supporta il calcolo distribuito mentre MPI.NET lo fa.

Problemi correlati