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
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Controle<br />
Cache<br />
ALU ALU<br />
ALU ALU<br />
DRAM DRAM<br />
CPU GPU<br />
Figura 1.2. Uma com<strong>para</strong>ção entre a GPU e<br />
a CPU, conforme figura obtida do manual <strong>de</strong><br />
programação CUDA [4].<br />
da Nvidia suportam até 768 threads ativas por multiprocessador;<br />
algumas GPUs elevando este número a 1.024. Em dispositivos<br />
que possuem 30 multiprocessadores, tais como a GeForce GTX<br />
280, isto faz com que 30,000 threads possam estar ativas simultaneamente".<br />
Este hardware po<strong>de</strong>rosíssimo tem permitido que<br />
algumas aplicações pu<strong>de</strong>ssem executar até 100 vezes mais rapidamente<br />
que suas rivais restritas à CPU [22]. A figura 1.2 mostra<br />
uma típica representação da GPU, com<strong>para</strong>da com a CPU.<br />
A GPU se<strong>para</strong> uma porção muito gran<strong>de</strong> <strong>de</strong> sua área útil <strong>para</strong><br />
tarefas <strong>de</strong> processamento, ao passo que a CPU usa bastante<br />
<strong>de</strong>sta área <strong>para</strong> implementar a sua memória <strong>de</strong> cache.<br />
A GPU necessita <strong>de</strong> todo este <strong>para</strong>lelismo porque aplicações<br />
gráficas ten<strong>de</strong>m a ser embaraçosamente <strong>para</strong>lelas. Isto<br />
quer dizer que tais aplicações são formadas por tarefas em geral<br />
in<strong>de</strong>pen<strong>de</strong>ntes umas das outras. Por exemplo, po<strong>de</strong>mos escurecer<br />
ou clarear os pixels em uma imagem atendo-nos a cada<br />
pixel em se<strong>para</strong>do. Dada a natureza minimalista <strong>de</strong>stas tarefas,<br />
a GPU po<strong>de</strong> se dar ao luxo <strong>de</strong> possuir núcleos <strong>de</strong> processamento<br />
simples, porém estes <strong>de</strong>vem existir em gran<strong>de</strong> número.<br />
Alguns autores, principalmente aqueles mais ligados à NVI-<br />
DIA, costumam usar a expressão STMD (Single Thread Multiple<br />
Data) <strong>para</strong> caracterizar as GPUs. Este contudo, é um termo relativamente<br />
novo e ainda pouco utilizado. Muitos outros autores<br />
6