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.

i<br />

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19<br />

treadIdx.x<br />

Figura 1.14. Espaço <strong>de</strong> iterações <strong>para</strong> o programa<br />

da figura 1.13.<br />

semântica bastante peculiar quando analisados sob a lupa <strong>de</strong><br />

máquinas SIMD: quando um processador não possui trabalho<br />

útil <strong>para</strong> realizar, então ele “dorme", até que as threads possam<br />

ser novamente postas em sincronia.<br />

O Assembly <strong>de</strong> CUDA. Um programa escrito em uma linguagem<br />

<strong>de</strong> alto nível normalmente é traduzido <strong>para</strong> código binário<br />

a fim <strong>de</strong> ser executado. Em CUDA isto não é diferente. Existem<br />

compiladores que traduzem CUDA <strong>para</strong> instruções Direct3D, por<br />

exemplo. Neste material nós utilizaremos uma linguagem assembly<br />

conhecida por PTX, do inglês Parallel Thread Execution.<br />

O programa PTX que correspon<strong>de</strong> ao nosso primeiro kernel,<br />

visto na figura 1.4, é dado na figura 1.15. PTX, sendo uma<br />

linguagem assembly, manipula tipos <strong>de</strong> dados muito simples,<br />

como inteiros <strong>de</strong> 8, 16, 32 e 64 bits e números <strong>de</strong> ponto flutuante<br />

<strong>de</strong> 16, 32 e 64 bits. PTX <strong>de</strong>screve um típico código <strong>de</strong> três<br />

en<strong>de</strong>reços, contendo instruções aritméticas (add, sub, mul,<br />

etc), lógicas (eq, leq, etc), <strong>de</strong> fluxo <strong>de</strong> controle (bra, ret,<br />

call, etc) e <strong>de</strong> transmissão <strong>de</strong> dados (load, store). PTX<br />

também contém muitas instruções <strong>para</strong> calcular funções transcen<strong>de</strong>ntais<br />

como senos e cossenos. Além <strong>de</strong>stas instruções,<br />

também presentes em linguagens assembly mais tradicionais,<br />

16<br />

j

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

Saved successfully!

Ooh no, something went wrong!