Benvenuto su VideoMakers.net
Iscriviti per condividere la tua passione sul principale sito web italiano dedicato al VideoMaking!

Gli eventuali inserti pubblicitari all'interno delle discussioni sono visibili solo se non hai eseguito l'accesso al forum; ricordati di eseguire l'accesso o, se non sei ancora registrato, fallo QUI

Clicca qui per leggere le regole del forum
Discussioni sul favoloso mondo della grafica 2D e sul fotoritocco.

Moderatore: Moderatori

#1112013
Salve gente :D
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.jpg
nulla di che , operazione molto semplice , ma diamo un occhio alle performance cuda :D
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-pycuda


That s it folks! per commenti e critiche sapete dove trovarmi !

Mi sono imbattuto in questo video alla ricerca di […]

Non c'è davvero niente di meglio sul web […]

Nota: non conosco i requisiti del mio pc. quind[…]

Sicuramente ci sarà un metodo più ve[…]