Salve gente
Era un po che non mi facevo vedere! Sono qui per condividere un po gli ultimi studi che sto facendo in caso potesse interessare a qualcuno.
Ultimamente ho ripreso a studiarmi per bene il discorso massive parallel computing e GPU , ho unito il tutto anche ad un corso di image processing che sto facendo.
Per mandare la computazione su GPU ho deciso di affidarmi a PYCUDA , un python wrapper intorno alla ben nota nvidia C library.
La ragione per cui ho scelto il python e' semplicemente perche' mi veniva piu comodo per prototipare e sopratutto per leggere le immagini sotto forma di matrice.
Qualche giorno fa avevo fatto dei semplici test come la conversione in bianco e nero di un immagine, per un immagine di dimensione 1440x900 il tempo sepso nella computazione
era di circa 5-6 secondi ! Un po troppo per i miei gusti , allora ho deciso di provare a buttare il tutto su gpu e vedere che succede.
Ho dovuto smadonnare parecchio per capire le varie conversioni di dati che accadevano "under the hood" ma alla fine ne sono venuto a capo e vi mostro cosa ho ottenuto.
Qui il risultato del processing di un immagine di 1k~
http://www.marcogiordanotd.com/blog/wp- ... ge1KBW.jpgnulla di che , operazione molto semplice , ma diamo un occhio alle performance cuda
Qui sotto il mio log :
----------> SERIAL CONVERSION
-----> Opening path : C:/Users/Marco/Desktop/jessTest.jpg
-----> Saving path : C:/Users/Marco/Desktop/jessTestLuminosity.jpg
Image size : (1440, 900)
get and convert Image data : 0.04000210762023926
Processing data : 4.67326807975769
Save image time : 0.03500199317932129
total Execution time : 4.748272180557251
----------> CUDA CONVERSION
-----> Saving path : C:/Users/Marco/Desktop/jessTestLuminosityCuda.jpg
Image size : (1440, 900)
get and convert Image data to gpu ready : 0.042001962661743164
allocate mem to gpu: 0.006000041961669922
Kernel execution time : 0.04200291633605957
Get data from gpu and convert : 0.010999917984008789
Save image time : 0.03200197219848633
total Execution time : 0.13300681114196777
Come si puo' notare c''e un bel ~40X di boost in performance , nonostante la gpu per questo task non sia stata sfruttata al meglio (la gpu da il meglio di se quando ha parecchia computazione sugli stessi dati , aka tanti filtri sulla stessa foto).
Ora sto cercando di scrivermi un coder e decoder JPEG ( puro esercizio non per necessita') , anche quello sarebbe interessante da mandare su GPU essendo che iniziano ad esserci un po piu di calcoli da fare.
Se siete interessati a saperne di piu vi invito a leggere il mio blog post dove ci sono bench marsk su foto fino a 9k di risoluzione e svariati altri dati che ho raccolto.
link :
http://www.marcogior...ocessing-pycudaThat s it folks! per commenti e critiche sapete dove trovarmi !