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.

34<br />

contrapartida, o uso de APIs <strong>para</strong> definir <strong>para</strong>lelismo em conjunto com linguagens de<br />

programação já consolidadas é uma abordagem mais atrativa aos desenvolvedores. Dentre as<br />

diversas APIs disponíveis atualmente, destacam-se MPI, baseada no modelo de troca de<br />

mensagens, e OpenMP, baseado no modelo de memória compartilhada. Os dois modelos são<br />

amplamente aceitos atualmente.<br />

Este capítulo é destinado a apresentar estas duas APIs utilizadas <strong>para</strong> programação<br />

em sistemas <strong>para</strong>lelos. Um maior enfoque será dado à API OpenMP, que foi a escolhida <strong>para</strong><br />

o desenvolvimento deste estudo. Ao final do capítulo, traz-se uma discussão onde são<br />

com<strong>para</strong>das as duas abordagens, de modo a justificar a escolha pelo modelo OpenMP.<br />

2.1 MPI<br />

Conforme Dongarra et al. (2003, p. 314), “a abordagem baseada em troca de<br />

mensagens é, de longe, a mais amplamente utilizada <strong>para</strong> computação <strong>para</strong>lela, ao menos em<br />

grandes sistemas”. Esta abordagem, segundo os autores (2003), apresenta duas grandes<br />

vantagens: a primeira é a portabilidade, de modo que virtualmente qualquer conjunto de<br />

computadores pode ser utilizado <strong>para</strong> executar uma aplicação <strong>para</strong>lela que utilize troca de<br />

mensagens; e a segunda é o fato de proporcionar aos desenvolvedores controle explícito sobre<br />

a memória.<br />

Embora este modelo de programação seja altamente portável pelo fato de poder ser<br />

facilmente implementado em qualquer plataforma, uma aplicação é portável apenas se o<br />

sistema <strong>para</strong> o qual foi desenvolvida for amplamente utilizado. Contudo, esta não era a<br />

realidade até o final da década de 80. Segundo Quinn (2003), àquela época o ambiente de<br />

desenvolvimento <strong>para</strong> computadores <strong>para</strong>lelos era geralmente baseado em uma linguagem<br />

sequencial, como C ou Fortran, com extensões através de bibliotecas que permitiam que os<br />

processos trocassem mensagens. Cada fabricante possuía um conjunto próprio de funções, de<br />

modo que um programa compilado <strong>para</strong> um tipo de computador não poderia executar em<br />

outro.<br />

Tendo em mente, assim, que um único padrão bem especificado traria benefícios aos<br />

desenvolvedores e fabricantes, foi criada a primeira versão do MPI, o padrão atualmente mais<br />

difundido <strong>para</strong> a programação baseada em troca de mensagens (DONGARRA ET AL., 2003).<br />

O MPI (do inglês message passing interface) é uma especificação de uma biblioteca

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

Saved successfully!

Ooh no, something went wrong!