Desenho e Implementação do pSystem para Arquitecturas de
Memória Distribuída
Hervé Miguel Cordeiro Paulino
Mestrado em Ciência de Computadores
Departamento em Ciência de Computadores
Faculdade de Ciências da Universidade do Porto
Outubro 1998
Resumo
Recentemente, têm sido propostas e construídas máquinas paralelas baseadas
em componentes standard. A arquitectura destas máquinas é
predominantemente de memória distribuída, composta
por
clusters de multiprocessadores interligados por redes muito
rápidas, como a Myrinet ou a ATM. Todavia, o sucesso deste tipo de
arquitecturas está condicionado aos ambientes de programação que
proporcionam. Ambientes de programação paralela, como o PVM ou o MPI,
são de grande
utilidade para a programação de arquitecturas de memória distribuída,
no entanto, requerem do programador um conhecimento detalhado da
arquitectura alvo e o controlo explícito de toda a comunicação. Uma
alternativa consiste na utilização de uma camada de software,
por exemplo o TreadMarks, que forneça memória virtualmente partilhada,
permitindo um modelo de programação mais próximo do de memória
partilhada.
Esta tese apresenta o desenho e a implementação do di_pSystem,
um ambiente de programação para arquitecturas de memória
distribuída. Este consiste numa extensão ao pSystem, um ambiente de
programação para arquitecturas de memória
partilhada que permite a anotação de programas em C para execução
paralela. O di_pSystem deverá preservar, ao máximo, a facilidade de
programação do pSystem, assim como a sua modularidade em termos de
arquitectura. Deste modo, distribuirá e balanceará dinamicamente todo
o trabalho paralelo gerado durante a execução paralela. A comunicação
está escondida do programador e é gerida automaticamente, quando
necessário, pelo ambiente. Os programadores têm apenas de identificar
as funções da linguagem C que são candidatas a execução paralela; a
comunicação para a distribuição de trabalho é gerida implicitamente
pelo sistema.
O módulo de comunicação do di_pSystem utiliza o interface paralelo
MPI para suportar a computação distribuída. Este módulo é o único que
depende do sistema utilizado. No entanto, a sua adaptação a outros
sistemas é simples. O di_pSystem também pode ser utilizado para
estudar a performance de algoritmos de distribuição de trabalho. No
âmbito deste trabalho implementaram-se quatro heurísticas assim como
um pequeno número de aplicações que serviram para uma avaliação
inicial à performance do sistema.