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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

po<strong>de</strong> realizar outras tarefas, não necessariamente relacionadas<br />

à ren<strong>de</strong>rização <strong>de</strong> imagens em uma tela. Chegamos aqui às<br />

GPUs, do inglês graphics processing units, ou unida<strong>de</strong>s <strong>de</strong> processamento<br />

gráficos.<br />

As tarefas <strong>de</strong> processamento gráfico foram migrando, pouco<br />

a pouco, da CPU em direção à placa gráfica, que acabou tornando-se<br />

um hardware <strong>de</strong> propósito geral. O curioso <strong>de</strong>sta estória<br />

é que, em nossa incessante busca por <strong>de</strong>sempenho, tenhamos<br />

adicionado novos módulos, especializados e não programáveis,<br />

às GPUs. Os mais recentes mo<strong>de</strong>los, por exemplo, possuem<br />

funções <strong>de</strong> rasterização implementadas em hardware, como era<br />

o caso das antigas CPUs. Aparentemente a roda da reencarnação<br />

<strong>de</strong>u uma volta e meia na história das placas gráficas.<br />

Arquiteturas Heterogêneas. O conjunto CPU-GPU forma uma<br />

arquitetura <strong>de</strong> computadores heterogênea bem diferente do mo<strong>de</strong>lo<br />

CPU-VGA tão comum no passado. A figura 1.1 com<strong>para</strong><br />

estas duas arquiteturas. Enquanto o vetor <strong>de</strong> processamento<br />

gráfico não possui qualquer componente programável, a GPU<br />

é um processador <strong>de</strong> propósito geral. De fato, temos dois processadores<br />

que trabalham juntos, ainda que em essência eles<br />

sejam substancialmente diferentes. Arquiteturas heterogêneas<br />

não são um modismo novo em ciência da computação. Vários<br />

computadores massiçamente <strong>para</strong>lelos utilizam aceleradores<br />

<strong>para</strong> <strong>de</strong>terminados tipos <strong>de</strong> tarefa. Entretanto, tais computadores<br />

são muito caros e portanto, bem menos acessíveis que<br />

as nossas GPUs.<br />

A GPU possui mais unida<strong>de</strong>s <strong>de</strong> processamento que a CPU<br />

– muito mais, na verda<strong>de</strong>. Porém, os processadores presentes<br />

na GPU são mais simples e geralmente mais lentos que os processadores<br />

das CPUs. Outra diferença entre estes dois mundos<br />

se dá em termos <strong>de</strong> entrada e saída <strong>de</strong> dados. As GPUs<br />

possuem mecanismos <strong>de</strong> comunicação muito simples. Normalmente<br />

elas se comunicam somente com a CPU, via áreas <strong>de</strong><br />

memória pré-<strong>de</strong>finidas. Desta forma, aplicações muito iterativas,<br />

tais como editores <strong>de</strong> texto, não se beneficiariam muito do<br />

po<strong>de</strong>r <strong>de</strong> processamento das GPUs. Por outro lado, aplicações<br />

em que exista muito <strong>para</strong>lelismo <strong>de</strong> dados brilham neste ambiente.<br />

Seria possível pensar que a GPU é um processador<br />

4

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

Saved successfully!

Ooh no, something went wrong!