Esempi di algoritmi di uso generale che hanno beneficiato dell'esecuzione su una GPU? [chiuso]


10

Sto cercando esempi di algoritmi di uso generale (che significano non legati alla grafica) che hanno dimostrato di eseguire un ordine di grandezza più veloce su una GPU che su una CPU. Userò questi esempi per pensare in modo creativo ad altri algoritmi che potrei implementare su una GPU.


Concatenazione di stringhe, ordinamento del sonno
Giobbe

Risposte:


10

Vengono subito in mente alcune cose:

Un client Bitcoin specializzato è stato scritto per utilizzare la GPU per eseguire gli hash crittografici. Il client GPU generalmente offre prestazioni 10 volte migliori rispetto al client CPU SMP su un tipico sistema a 4 core. Bitcoin dipende dal calcolo di un gran numero di hash crittografici non correlati, che possono essere calcolati in parallelo.

Il progetto Folding @ Home offre un client GPU per le loro simulazioni di dinamica molecolare. Questi calcoli vengono eseguiti sui singoli legami tra atomi in vari ambienti e condizioni. La matematica è relativamente semplice, ma deve essere calcolata miliardi di volte per ogni legame per simulare semplici nanosecondi di attività.

Il popolare esempio di "giocattolo" utilizzato dai sostenitori del GPU computing è il problema n-body .

Ciò che queste cose hanno in comune è che sono imbarazzantemente parallele . Cioè, il problema può essere scomposto in un piccolo numero di calcoli discreti che vengono eseguiti più volte su un set di dati di grandi dimensioni. Questo è il tipo di calcolo in cui la GPU è brava.

I calcoli complessi che dipendono dai risultati dei calcoli precedenti non sono adatti alla GPU.


Più client BOINC hanno il supporto GPU. SETI @ Home è un altro.
Brian Knoblauch,

Infatti. Esistono molti progetti simili, ma non volevo che questo fosse un elenco completo di progetti, solo per sottolineare ciò che hanno in comune.
Greyfade,

8

La transcodifica audio e video è un ottimo esempio. È la conversione da un formato di file a un altro. Un esempio è da MPEG-2 a H.264.

Nota la transcodifica video non è correlata alla grafica 3D. Non è possibile codificare un video utilizzando un vertice e pixel shader.


L'OP chiede esempi non legati alla grafica.
kiamlaluno,

6
@kiamlaluno La transcodifica di un video non è correlata alla grafica, e la transcodifica audio in modo più evidente non lo è. È la conversione da un formato di file a un altro. Un esempio è da MPEG-2 a H.264. Non richiede la visualizzazione della grafica per eseguire.
Thomas Owens

2
@kiamlaluno: la transcodifica video non è correlata alla grafica 3D. Non è possibile codificare un video utilizzando un vertice e pixel shader.
DeadMG,

3

Il mining di Bitcoin utilizzando una GPU è diventato molto popolare.

... sistema di cassa elettronico peer-to-peer. La creazione e il trasferimento di bitcoin si basa su un protocollo crittografico open source e non è gestito da alcuna autorità centrale. Ogni bitcoin è suddiviso in otto cifre decimali, formando 100 milioni di unità più piccole chiamate satoshi. I bitcoin possono essere trasferiti tramite un computer o uno smartphone senza un istituto finanziario intermedio.

L'elaborazione delle transazioni bitcoin è protetta da server chiamati minatori Bitcoin. Questi server comunicano su una rete basata su Internet e confermano le transazioni aggiungendole a un libro mastro che viene aggiornato e archiviato periodicamente. Oltre all'archiviazione delle transazioni, ogni nuovo aggiornamento del libro mastro crea bitcoin coniati di recente ...

Un'altra applicazione è nei mercati finanziari per il trading in tempo reale utilizzando modelli come Black-Scholes .

... Un requisito chiave per l'utilizzo delle opzioni è il calcolo del loro valore equo. Trovare modi per risolvere efficacemente questo problema di prezzo è stato un campo di ricerca attivo per più di trenta anni e continua a essere al centro della moderna ingegneria finanziaria. Poiché è stato applicato più calcolo ai problemi relativi alla finanza, è diventato più importante trovare modi efficaci per implementare questi algoritmi su architetture moderne.

Questo capitolo descrive come i prezzi possono essere valutati in modo efficiente utilizzando la GPU. Eseguiamo le nostre valutazioni utilizzando due diversi modelli di prezzo: il modello Black-Scholes e i modelli reticolari. Entrambi questi approcci si adattano bene alla GPU, ed entrambi sono sostanzialmente più veloci sulla GPU che sulle CPU moderne. Sebbene entrambi abbiano anche mappature semplici per la GPU, l'implementazione di modelli reticolari richiede ulteriore lavoro a causa delle interdipendenze nei calcoli ...


2

Conway's Game of Life è un buon esempio accademico.

... L'universo del Gioco della vita è una griglia ortogonale bidimensionale infinita di celle quadrate, ognuna delle quali si trova in uno dei due possibili stati, vivo o morto. Ogni cellula interagisce con i suoi otto vicini, che sono le celle adiacenti orizzontalmente, verticalmente o diagonalmente. Ad ogni passaggio nel tempo, si verificano le seguenti transizioni:

  1. Ogni cellula vivente con meno di due vicini vivi muore, come se fosse causata da sottopopolazione.
  2. Qualsiasi cellula viva con due o tre vicini vivi vive alla generazione successiva.
  3. Ogni cellula viva con più di tre vicini vivi muore, come se fosse sovraffollata.
  4. Qualsiasi cellula morta con esattamente tre vicini vivi diventa una cellula viva, come per riproduzione.

Il modello iniziale costituisce il seme del sistema. La prima generazione viene creata applicando simultaneamente le regole di cui sopra a ogni cellula del seme: nascite e morti si verificano simultaneamente e il momento discreto in cui ciò accade viene talvolta chiamato segno di spunta (in altre parole, ogni generazione è una pura funzione del precedente). Le regole continuano ad essere applicate ripetutamente per creare ulteriori generazioni ...


1

Problemi che richiedono molta matematica che può essere eseguita contemporaneamente. Dove lavoravo volevamo giocare con le GPU per aggiungere / sottrarre / moltiplicare 2 matrici per elaborare la correlazione genetica. La prima volta che ho sentito parlare di GPU è stato che venivano utilizzati da una software house finacial per eseguire alcuni dei loro modelli (Monte Carlo e così via). Sarebbe utile nella violazione del codice.

Probabilmente le GPU non aiuteranno molto con i tuoi problemi di programmazione più regolari in cui un paio di core della CPU sono sufficienti perché la maggior parte dei programmi regolari deve solo eseguire alcuni processi simultanei. (potrebbe essere diverso con memoria / disco che è molto più veloce di quello che abbiamo attualmente)


-3

Forse sono molto specifico per i calcoli di matematica / scienza / ingegneria, ma uno che mi viene in mente è l'algoritmo FFT.

Ho già visto questo benchmark FFT prima, e anche se ha qualche anno penso che sia stato ben fatto per quello che è: http://www.sharcnet.ca/~merz/CUDA_benchFFT

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.