09.05.2015 Views

universidade feevale douglas neves spindler algoritmos para ...

universidade feevale douglas neves spindler algoritmos para ...

universidade feevale douglas neves spindler algoritmos para ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

50<br />

largura de banda limitada – de 177 GB/s, conforme Farber (2011). Assim, uma aplicação que<br />

faça uso de muitas threads acessando a memória global pode facilmente congestionar o<br />

acesso a esta, acarretando em perda de desempenho.<br />

Outro fator limitador de desempenho é a taxa de transferência de dados entre o host e<br />

o dispositivo. A NVIDIA (2010b) afirma que o pico da largura de banda entre a memória do<br />

dispositivo e a GPU é muito mais alto que o pico da largura de banda entre a memória do host<br />

e a memória do dispositivo, com valores de 141 GB/s (<strong>para</strong> a placa GeForce GTX 280, por<br />

exemplo) e 8 GB/s, respectivamente. Esta limitação de 8 GB/s se deve ao pico do barramento<br />

PCIe x16 Gen2. Isto demonstra a importância de minimizar tais transferências, mantendo os<br />

dados o máximo possível na memória do dispositivo.<br />

Para contornar tais problemas, CUDA provê diferentes tipos de memória que podem<br />

ser utilizadas <strong>para</strong> diminuir o tráfego à memória global. Ao alocar uma variável em um destes<br />

tipos de memória, define-se a visibilidade, velocidade de acesso, escopo e tempo de vida da<br />

mesma. Estas memórias e algumas de suas características são ilustradas no quadro abaixo, e<br />

detalhadas na sequência:<br />

Memórias na arquitetura CUDA<br />

Tipo de memória Localização Cache Acesso Escopo Tempo de vida<br />

Registrador No chip Não Leitura/escrita Thread Kernel<br />

Local No chip Sim Leitura/escrita Thread Kernel<br />

Compartilhada No chip - Leitura/escrita Bloco Kernel<br />

Fora do chip (exceto<br />

Global<br />

se em cache) Sim Leitura/escrita Grade e host Aplicação<br />

Fora do chip (exceto<br />

Constante se em cache) Sim Leitura Grade e host Aplicação<br />

Textura<br />

Fora do chip (exceto<br />

se em cache) Sim Leitura Grade e host Aplicação<br />

Quadro 4 – Características dos diferentes tipos de memória na arquitetura CUDA.<br />

Fonte: Adaptado de Kirk e Hwu (2010, p.80) e Farber (2011, p. 116).<br />

Farber (2011) comenta a respeito dos diferentes tipos de memória da GPU.<br />

A memória global é a maior disponível em um dispositivo CUDA. Entretanto, é<br />

também a mais lenta, de modo que a latência de acesso a essa memória pode ser até 600 vezes<br />

maior que a de um registrador. Para reduzir os efeitos desta alta latência e minimizar o<br />

congestionamento na memória global, o hardware da GPU coalesce os acessos de leitura e<br />

escrita. Isto significa que uma única operação é utilizada <strong>para</strong> retornar os dados de posições<br />

consecutivas de memória. Dado que a coalescência é feita por warps, o melhor desempenho é

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

Saved successfully!

Ooh no, something went wrong!