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

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

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

42<br />

3.1 OPENCL<br />

A evolução das CPUs e GPUs e a utilização destes processadores em sistemas<br />

computacionais <strong>para</strong>lelos trazem a necessidade de prover um modelo de programação que<br />

possa ser adequadamente utilizado <strong>para</strong> o desenvolvimento em plataformas heterogêneas. O<br />

modelo de programação OpenCL (Open Computing Language) surge <strong>para</strong> suprir esta<br />

necessidade. Desenvolvido pelo Grupo Khronos, é um padrão aberto <strong>para</strong> programação<br />

<strong>para</strong>lela de propósito geral <strong>para</strong> CPUs, GPUs ou outros processadores. Desta forma, os<br />

desenvolvedores têm acesso a plataformas heterogêneas de modo portátil e eficiente<br />

(KHRONOS GROUP, 2011).<br />

O Grupo (2011) ainda define o padrão OpenCL como um framework que inclui uma<br />

API <strong>para</strong> coordenação de processamento <strong>para</strong>lelo entre processadores heterogêneos, uma<br />

linguagem de programação e um sistema runtime <strong>para</strong> o desenvolvimento de aplicações. O<br />

framework, entre outras características, suporta modelos de programação <strong>para</strong>lela baseados<br />

em <strong>para</strong>lelismo de dados ou de tarefas, e interopera de maneira eficiente com outras APIs<br />

gráficas, como OpenGL. O modelo de processamento é ilustrado pela Figura 13, onde<br />

múltiplos dispositivos (devices) OpenCL são conectados a um hospedeiro (host). Os<br />

dispositivos são divididos em unidades computacionais (compute units), as quais, por sua vez,<br />

são divididas em elementos de processamento (processing elements).<br />

Figura 13 – Modelo de processamento OpenCL<br />

Fonte: Khronos Group (2011, p. 22).<br />

A execução de um programa OpenCL ocorre em duas partes: os kernels são<br />

executados nos dispositivos e o programa host é executado no hospedeiro. A aplicação envia<br />

comandos do hospedeiro <strong>para</strong> executar tarefas nos elementos de processamento de um<br />

dispositivo (KHRONOS GROUP, 2011).

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

Saved successfully!

Ooh no, something went wrong!