Programação Paralela em Arquiteturas Multi-Core/Compiladores paralelizadores: diferenças entre revisões
[edição não verificada] | [edição não verificada] |
Conteúdo apagado Conteúdo adicionado
formatação; ortografia; cat |
Sem resumo de edição |
||
Linha 291:
==== Oxygen ====
O '''Oxygen''' é um compilador paralelizador que gera código paralelo a partir de códigos em Fortran 77. Para tanto são utilizadas diretivas de compilação que permitem a distribuição de código e dados e suporte a um espaçamento de nomes globais. Os códigos gerados pelo ''Oxygen'' são destinados a arquiteturas paralelas com memória distribuída ou supercomputadores. O modelo de máquina assumido pelo ''Oxygen'' é um torus bi-dimensional de elementos processadores (PE – Processing Elements). Arquiteturas como Parystec Supercluster SC256, iWarp, o Fujitsu AP1OOO, e simulador K9 implementam este tipo de topologia. A '''Figura 1''' mostra um modelo de máquina torus bi-dimensional onde cada elemento processador comunica-se através de primitivas ''send'' e ''receive''.
<center>[[Imagem:Comp_paral-fig1.JPG]]</center>
O ''Oxygen'' portou dois tipos de sistemas com memória distribuída: o de ''comunicação sistólica'' e o de ''comunicação por memória'', conforme observado na figura. Na '''comunicação sistólica''' não há trocas de mensagens. Os dados são transmitidos do enviador para o receptor usando transferências entre as filas de memória ou filas de registradores existentes entre os PEs. Nesse caso, um PE pode se comunicar com seus quatro vizinhos mais próximos. A '''comunicação por memória''', também chamada '''comunicação por troca de mensagens''', acontece entre primitivas ''send'' e ''receive''. As mensagens podem ser roteadas não só aos vizinhos mais próximos e sim a todos os PEs presentes no torus. Embora as trocas de mensagens sejam mais confortáveis para programar, o tempo gasto no gerenciamento e na computação do roteamento impõe uma maior latência para a comunicação.
|