Questo carico di lavoro si adatta alle GPU?

1

Ho una funzione perfettamente parallela che funzionerebbe perfettamente su una macchina con 1024 core e 4 GB di RAM. C'è un bel po 'di ramificazioni (facendo set union e strutture di attraversamento). Non c'è comunicazione tra i thread (tranne quando l'intero calcolo è completo). Ogni thread richiede meno di 1 MB di memoria privata e nessuna memoria condivisa. Il risultato di ogni calcolo può essere unito come un CRDT; è fondamentalmente max su un insieme di strutture.

So che questo si adatterebbe al calcolo distribuito. Le GPU sono più efficienti e potenti delle CPU, quindi preferisco usarle. Sembra che questo si adatterebbe GPGPU, dal momento che è massicciamente parallelo e utilizza così poca memoria, ma come posso dire? OpenCL / AMD / CUDA non ha importanza.

    
posta Filip Haglund 08.05.2016 - 14:35
fonte

1 risposta

2

Le GPU sono progettate per l'esecuzione di codice con poche o nessuna ramificazione. Nello specifico, lavorano insieme su un principio di raggruppamento dei dati che farà sì che gli stessi rami vengano presi in una routine e li eseguano simultaneamente attraverso le stesse istruzioni laddove possibile. Se il codice coinvolge un numero elevato di filiali e questi rami sono difficili da raggruppare insieme per i meccanismi di invio del processore, è improbabile che possano trarre enormi vantaggi dall'esecuzione su una GPU. Vedi questa descrizione della ramificazione nelle architetture GPU per maggiori dettagli.

    
risposta data 09.05.2016 - 03:33
fonte

Leggi altre domande sui tag