13.04.2013 Views

Técnicas de Otimização de Código para Placas de ... - UFMG

Técnicas de Otimização de Código para Placas de ... - UFMG

Técnicas de Otimização de Código para Placas de ... - UFMG

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Bloco (0, 0)<br />

Memória<br />

Compartilhada<br />

Regs Regs<br />

Thread<br />

(0, 0)<br />

Mem<br />

Local<br />

Thread<br />

(1, 0)<br />

Mem<br />

Local<br />

A viagem internacional<br />

A viagem interplanetária<br />

Hospe<strong>de</strong>iro (CPU)<br />

Dispositivo (GPU)<br />

Bloco (0, 1)<br />

Memória<br />

Compartilhada<br />

Regs Regs<br />

Thread<br />

(0, 0)<br />

Mem<br />

Local<br />

Memória Global<br />

DRAM<br />

Thread<br />

(1, 0)<br />

Mem<br />

Local<br />

Figura 1.16. A organização <strong>de</strong> memórias<br />

<strong>de</strong>ntro da GPU.<br />

um barramento PCI (Peripheral Component Interconnect). Esta<br />

tranferência é muito lenta, com<strong>para</strong>da com o tempo <strong>de</strong> acesso<br />

<strong>de</strong> dados <strong>de</strong>ntro do micro-chip CUDA.<br />

A transferência <strong>de</strong> dados entre CPU e GPU é ilustrada pelo<br />

programa na figura 1.17. As funções cudaMalloc, cudaFree<br />

e cudaMemcpy são parte da biblioteca <strong>de</strong> <strong>de</strong>senvolvimento CUDA.<br />

A primeira função reserva uma área na memória da GPU, ao<br />

passo que a segunda função libera esta área <strong>para</strong> outros usos.<br />

Finalmente, cudaMemcpy copia dados da CPU <strong>para</strong> a GPU, ou<br />

vice-versa, <strong>de</strong>pen<strong>de</strong>ndo <strong>de</strong> seu último argumento.<br />

20

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!