2011-12-07 24 views
5

Sto pensando di chiedere al mio capo una buona GPU, al fine di eseguire il calcolo con gli strumenti di elaborazione parallela matlab. Tuttavia, dopo alcuni semplici test sul computer di un collega, su una NVidia Quadro 600. Ottengo un guadagno di prestazioni molto scarso (tra 1x e 2x).Che guadagno di prestazioni dalla GPU con MATLAB?

Sono particolarmente interessato a fare convoluzioni su array n-d.

Qualcuno ha un'esperienza simile, sta facendo il calcolo con gpuArray e così via?

Quale aumento di prestazioni posso aspettarmi?

Quale modello di GPU dovrei acquistare (meno di 1000 $, si spera meno di 400 $)?

+2

Potete mostrare quali funzioni di matlab userete? – osgx

+2

Sembra che ci siano diverse domande qui. Di loro "Quale GPU dovrei comprare?" è off-topic e troppo localizzato a mio avviso. "Che esperienza hai?" sembra molto loquace e anche a tempo indeterminato. – Flexo

+0

Come ho detto nella mia domanda, mi interessano soprattutto le convoluzioni, specialmente 'convn' e' conv2' – Oli

risposta

2

Le prestazioni del gpuArray in MATLAB è guidato da diversi fattori:

  • Se il vostro problema funziona bene su GPU, in primo luogo
  • Quanti CUDA core che hai in dispositivo, in generale, tanto meglio è
  • Se si utilizza un dispositivo con prestazioni a doppia precisione migliorate (come i recenti dispositivi Quadro/Tesla di capacità di calcolo> = 2)
  • Quale versione di MATLAB sei usando - R2011b è sig notevolmente migliore di R2010b.

Ecco un esempio di alcuni benchmark sull'eccellente blog "Walking Randomly": http://www.walkingrandomly.com/?p=3634. Questi mostrano i tipi di accelerazione che ci si potrebbe aspettare in applicazioni ragionevoli - ad esempio ~ 5x a 10x è plausibile, molto più di questo è raro.

(Se vuoi vedere uno di quei rari esempi, l'insieme di Mandelbrot sulla GPU programmato utilizzando gpuArray s e arrayfun gestisce circa 1500x più veloce della CPU: http://www.mathworks.com/products/demos/parallel-computing/paralleldemo_gpu_mandelbrot/paralleldemo_gpu_mandelbrot.html?product=DW)

1

Un Quadro 400 ha solo 48 core rispetto al GeForce 480 che ha 480 core e il GeForce 580 con 512 core. Anche questi funzionano anche con clock più alti, quindi puoi aspettarti un guadagno superiore a 10 volte quando l'accesso alla memoria non è il fattore limitante.

Non ho usato GPU per accelerare MATLAB ma ho PC che uso per GPU (CUDA) dev ogni giorno. Uno ha una Quadro FX5800 + GeForce 480, l'altra una GeForce 580. Per quanto ne so, non otterrai alcun beneficio da una scheda workstation rispetto a una GeForce. Quindi risparmia un po 'di soldi e ottieni un GF480 o GF580.

Questo thread sembra avere una funzione di CUDA conv che apparentemente è 50x più veloce accelerato: http://www.mathworks.com/matlabcentral/fileexchange/20220 Non sono sicuro di quello che MATLAB ha out-of-the-box in questi giorni.

Spero che questo aiuti! Le GPU possono essere ottime per accelerare molte attività. Ma i guadagni in termini di prestazioni possono richiedere un po 'di inseguimento.

1

Attualmente sto ricerca di questo stesso argomento. Una cosa che sto vedendo è che le schede grafiche a bassa e media gamma sono pensate per il gaming e conseguentemente ottimizzate per le prestazioni dell'FP32. Le loro prestazioni dell'FP64 sono significativamente inferiori e potrebbero essere ciò che state vedendo. Il $ 1k GTX Titan sembra essere il punto di partenza per una seria computazione scientifica.

Problemi correlati