PDA

View Full Version : Virtgola mobile su gpu o virgola fissa su cpu ?


das
19-04-2014, 11:18
Quale delle due è più veloce ? non riesco a trovare benchmark significativi in rete.

So che le GPU danno un notevole incremento di velocità con la virgola mobile, ma a me basta la velocità, poi posso usare anche la virgola fissa.

WarDuck
19-04-2014, 16:21
Quale delle due è più veloce ? non riesco a trovare benchmark significativi in rete.

So che le GPU danno un notevole incremento di velocità con la virgola mobile, ma a me basta la velocità, poi posso usare anche la virgola fissa.

Il punto è: cosa devi fare?

Tendenzialmente la GPU va bene quando devi fare molti calcoli matriciali o vettoriali.

Ma a seconda di cosa devi fare considera anche l'utilizzo di estensioni SIMD sulla CPU.

das
20-04-2014, 11:53
Il punto è: cosa devi fare?

Tendenzialmente la GPU va bene quando devi fare molti calcoli matriciali o vettoriali.

Ma a seconda di cosa devi fare considera anche l'utilizzo di estensioni SIMD sulla CPU.

Reti neurali, quindi sì, molti calcoli matriciali. Sono però tutti numeri compresi tra -1 e 1, quindi in teoria potrei addirittura modificare il tutto per farlo lavorare con interi (trasformando 0.78576 in 78576 per esempio). Solo che non so se da un reale beneficio in termini di velocità.

Mi documento sulle estensioni SIMD.

cdimauro
20-04-2014, 14:12
Se hai una CPU moderna, puoi provare AVX (http://en.wikipedia.org/wiki/Advanced_Vector_Extensions), che sono le ultime estensioni SIMD.

Comunque per questo tipo di calcoli le GPU dovrebbero andare molto bene.

das
22-04-2014, 09:35
Se hai una CPU moderna, puoi provare AVX (http://en.wikipedia.org/wiki/Advanced_Vector_Extensions), che sono le ultime estensioni SIMD.

Comunque per questo tipo di calcoli le GPU dovrebbero andare molto bene.

Sì, infatti opto per la GPU. Le SIMD implicano notevoli complicazioni perchè devo riuscire a capire quali caloli posso parallelizzare. Anche per il debugging mi sembra che questo complichi la vita. Con la GPU invece faccio le stesse cose nella stessa sequenza ma usando funzioni che si appoggiano alle directx anzichè alla normale libreria matematica.

Thanks

cdimauro
22-04-2014, 20:39
Sì, infatti opto per la GPU. Le SIMD implicano notevoli complicazioni perchè devo riuscire a capire quali caloli posso parallelizzare. :Prrr:
Se hai un buon compilatore, o riconosce lui lo scenario per vettorizzare il codice, oppure basta qualche direttiva per indicargli cosa vettorizzare.

Per cui lo sforzo per lo sviluppatore è decisamente ridotto.
Anche per il debugging mi sembra che questo complichi la vita.
No, in genere è molto semplice. A meno che non ti metti a dividere il carico a più thread/processi, e devi gestire in maniera complicata la loro interazione e/o sincronizzazione. Ma non mi pare sia il tuo caso.
Con la GPU invece faccio le stesse cose nella stessa sequenza ma usando funzioni che si appoggiano alle directx anzichè alla normale libreria matematica.

Thanks
Se sai già usare le DirectX / DirectCompute, vai di GPU.