Logo Background RSS

Pubblicita'

Programmazione GPGPU: differenze Cuda e OpenCL

  • Scritto da spriksprik Nessun Commento Comments
    Ultimo aggiornamento: 9 ottobre, 2010

    Il passaggio da Cuda ad OpenCL è abbastanza breve, per chi comincia è sempre buona norma imparare prima Cuda e poi OpenCL per avere una larga conoscenza dell’intero ambiente parallelo su schede grafiche.
    Analizziamo le prime differenze a livello di codice (Cuda –> OpenCL):

    1) Modello principale architettura

    • Kernel –> Kernel (Funzione da eseguire nella GPU)
    • Host program –> Host program (Funzione da eseguire nella CPU)
    • Grid –> NDRange (Insieme di blocchi di therad e memoria condivisa)
    • Thread –> Work item (Singolo thread dove verranno eseguite le operazioni Kernel)
    • Block –> Work group (Insieme di thread)

    2) Indici per la selezione dei vari thread

    • blockIdx.x*blockDim.x + threadIdx.x –> get_global_id(0)
    • threadIdx.x –> get_local_id(0)
    • gridDim.x*blockDim.x –> get_global_size(0)
    • blockDim.x –> get_local_size(0)

    3) Memoria

    • global memory –> global memory (Memoria globale condivisa da tutti i thread della GPU)
    • constant memory –> constant memory (Memoria globale condivisa da tutti i thread della GPU)
    • shared memory –> local memory (Memoria dedicata per ogni singolo blocco di thread)
    • local memory –> private memory (Memoria dedicata di ogni singolo thread)

    L’architettura, per quanto complessa, si può rappresentare in questo modo:

    Chiaramente si nota che ogni oggetto ha la propria memoria: il thread con la Private Memory, il blocco di thread con la Local Memory e la Global/Constant Memory condivisa da tutti.
    Naturalmente, sia la Global Memory sia la Constant Memory sono aiutate da una cache che ne fa da intermediario, dato che queste memorie sono più lente delle Private Memory e Local Memory.

Pubblicita'

Votaci su Net-Parade.it
Inserisci un commento

:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :1up: :alert: :beer: :borg: :coffee: :cuckoo: :cuss: :finger: :goombah: :megaman: :pity: :noshake: :oogle: :pacman: :pill: :poison: :poop: :rant: :satansmoking: :shake: :shiftyeyes: :shroom: :sick: :smirk: :stfu: :thumbdown: :thumbup: :turtle: :what: :whatever:
Notify me of follow-up comments via email.