Domanda

Ho implementato Cholesky per la soluzione di grandi dimensioni l'equazione lineare su GPU utilizzando ATI Stream SDK. Ora voglio sfruttare la potenza di calcolo della GPU sempre più e voglio eseguire questo codice su più GPU.

Attualmente ho una macchina e un GPU installata su di esso e fattorizzazione di Cholesky funziona correttamente. Voglio farlo per la macchina N e tutti hanno una GPU installata su di loro. Così mi suggerire come devo procedere.

È stato utile?

Soluzione

In primo luogo, si deve essere consapevoli del fatto che questo approccio introdurrà tre livelli di latenza per qualsiasi comunicazione tra i nodi:

  1. memoria GPU sulla macchina 1 alla memoria principale sulla macchina 1
  2. Memoria principale sulla macchina 1 alla memoria principale sulla macchina 2
  3. La memoria principale sulla macchina 2 alla memoria della GPU sulla macchina 2

Un buon primo passo sarà quello di fare un po 'indietro dei calcoli avvolgono per determinare se la velocità si guadagna fino suddividendo il problema tra più macchine supereranno la latenza si introduce.

Una volta che siete sicuri l'approccio è quello che si desidera seguire, allora è più o meno a voi per implementare correttamente questo. Si noti che, attualmente, CUDA o OpenCL librerie di NVIDIA saranno scelte migliori per voi, perché consentono di accedere alla GPU per il calcolo senza averlo accoppiato con una sessione X. Una volta implementazione OpenCL di ATI supporta la GPU, allora questo dovrebbe anche essere una valida opzione.

Dal momento che si dispone già di un'implementazione GPU di lavoro, qui sono i passi fondamentali da seguire:

  • Determinare come si aggiorna l'algoritmo di fattorizzazione per supportare l'elaborazione da nodi separati
  • Imposta lo scambio di dati tra i computer N (ho notato che avete optato per MPI per questo)
  • impostare il funzionamento dispersione che dividere il problema di ingresso tra i nodi di calcolo
  • Imposta lo scambio di dati tra una macchina e la sua GPU
  • Imposta l'operazione che raccoglierà i risultati dei nodi in un nodo di raccogliere

Altri suggerimenti

E 'una domanda molto specializzato. Suggerisco di controllare le href="http://developer.amd.com/samples/gpusamples/Pages/default.aspx" Ruscello e la Streaming Developer Forum .

Ho mostrato questo Q ad un mio collega che conosce queste cose. Egli ha suggerito di utilizzare ScaLAPACK.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top