نبذة مختصرة : L'obbiettivo della tesi è sperimentare il comportamento di una GPU, utilizzata per problemi non strettamente Data parallel, ampliando così l'ormai crescente range di utilizzi studiati per le General Purpose GPUs. In particolare, in questa tesi si è cercato di sperimentare, su processori grafici NVIDIA, il comportamento di uno Streaming parallel pattern, chiamato Farm. A tale scopo si è implementato un codice che facesse un utilizzo particolare delle risorse di una GPU: a partire da uno stream di dati in input (lato host), si creano molti task data parallel di dimensioni ridotte, da mandare in elaborazione sulla GPU. Utilizzando tanti CUDA Streams, quanti sono gli Streaming Multiprocessors (SM), ci si aspetta di osservare un occupazione completa della GPU. Soprattutto, si confronta il tempo di completamento del caso in cui non si usino CUDA Streams, con quello che si ottiene, invece, utilizzandoli. Quindi lo Speedup massimo atteso, tra le due suddette implementazioni, è minore o uguale al numero di SM di cui una GPU dispone. Studiando le performance su tre diversi tipi di kernel (altamente computazionale, moltiplicazione di matrici e image processing) si è osservato che, in effetti, si ottiene uno speedup vicino a quello atteso. Questo si verifica principalmente in applicazioni computation-bound, piuttosto che memory-bound.
No Comments.