This project is read-only.
C-sharp.png

MPI# - Status

Para status do projeto por favor verifique os releases e a página Project Status

Tarefa 1:
No período de 03/03/2008 a 31/03/2008 foram realizados estudos sobre C#, sobre a plataforma .NET e foram desenvolvidas algumas pequenas aplicações de teste. Nota-se que algumas dessas pequenas aplicações seqüênciais serão utilizadas para a realização de benchmarks em futuras soluções e análises do MPI.NET. Exemplos de aplicações criadas: Multiplicação de Matrizes, Cálculo do Fractal de Mandelbrot e Produtos Vetoriais/Escalares de vetores, Cálculo do Pi.

Tarefa 2:
Não foi concluída a instalação do .NET sobre um cluster de 4 máquinas como proposto devido a indisponibilidade do mesmo. No entanto foi feita a instalação sobre 2 máquinas e alguns testes de comunicação serão realizados.

Tarefa 3:
Entre 01/04/2008 e 30/04/2008 a solução MPI.NET da Universidade de Indiana foi instalada e alguns testes estão sendo realizados, dentre eles foi feito um benchmark da aplicação Ping-Pong referenciada no artigo encontrado em na url http://www.cs.indiana.edu/pub/techreports/TR570.pdf.
  • Teste da aplicação Ping-Pong, Ring, Cálculo de PI (Reduce) e outros em MPI-C#: Algumas execuções foram realizadas em uma máquina local do programa para diferentes números de processos, seguido do cálculo de processamento.
  • Realização de benchmarks das linguagens C#, Java e C++.
  • Realização de testes utilizando passagem de objetos por MPI, função esta disponível na versão MPI.NET da Universidade de Indiana.
  • Início de um estudo mais aprofundado de MPI no caso próprio para o C e de suas diversas funções existentes para comunicação coletiva (All2All, AllGather, Gather, Scatter, BCast, Reduce)
  • Início de uma observação do código da solução MPI.NET da Universidade de Indiana. Verificação de classe própria para a linkagem com o código nativo em C para o MPI (Classe Unsafe), além de demais classes para a realização da interface com o MPI nativo (Communicator, Environment...)
  • Leitura do artigo "Using MPI With C# and the Common Language Infrastructure" desenvolvido pela Universidade de Indiana e encontrado na url http://www.cs.indiana.edu/pub/techreports/TR570.pdf

Tarefa 4:
  • Foi realizada uma lista de equivalência entra funções MPI nativas do C e as funções propostas na interface MPI.NET desenvolvida pela Universidade de Indiana. Essa lista encontra-se disponível no link abaixo:

Lista de primitivas equivalentes entre MPI/C e MPI.NET
  • Foram realizados alguns testes para a funcionaliade do método Gather da classe Communicator. Uma das principais conclusões obtidas foi que os métodos MPI/C MPIGather e MPIGatherv foram encapsulados em um único método, facilitando o modo de abstração e usabilidade das mesmas. O link para os testes e as devidas conclusões encontra-se abaixo:

Testes e Conclusões do método Communicator.Gather
  • Foram realizados alguns testes para a funcionaliade do método Scatter da classe Communicator. Uma das principais conclusões obtidas foi que as funções MPI/C MPIScatter e MPIScatterv foram encapsulados em um único método, facilitando o modo de abstração e usabilidade das mesmas. O link para os testes e as devidas conclusões encontra-se abaixo:

Testes e Conclusões do método Communicator.Scatter
  • Foram realizados alguns testes para a funcionaliade do método AllGather da classe Communicator. Uma das principais conclusões obtidas foi que as funções MPI/C MPIAllGather e MPIAllGatherv foram encapsulados em um único método, facilitando o modo de abstração e usabilidade das mesmas. O link para os testes e as devidas conclusões encontra-se abaixo:

Testes e Conclusões do método Communicator.AllGather
  • Foram realizados alguns testes para a funcionaliade do método Alltoall da classe Communicator. Uma das principais conclusões obtidas foi que as funções MPI/C MPIAlltoall e MPIAlltoallv foram encapsulados em um único método, facilitando o modo de abstração e usabilidade das mesmas. O link para os testes e as devidas conclusões encontra-se abaixo:

Testes e Conclusões do método Communicator.Alltoall

Funcionamento do Alltoall para o caso da funcionalidade MPI_Alltoallv pode ser observada na figura abaixo. Todas as funções MPI/C destinada a tamanhos de vetores diferentes podem ser baseadas no mesmo estilo.

alltoall.JPG
  • Foram realizados alguns testes para a funcionaliade do método Reduce da classe Communicator. Uma das principais conclusões obtidas foi que este método funciona tanto para operações pré-definidas como para operações definidas pelo usuário (que sejam associativas). Além disso, ele funciona também para "reduzir objetos" e não apenas para tipos primitivos.

Testes e Conclusões do método Communicator.Reduce
  • Foram realizados alguns testes para a funcionaliade do método Allreduce da classe Communicator. Uma das principais conclusões obtidas foi que este método funciona tanto para operações pré-definidas como para operações definidas pelo usuário (que sejam associativas). Além disso, ele funciona também para "reduzir objetos" e não apenas para tipos primitivos. O "broadcast" da redução para todos os processos foi realizada com sucesso.

Testes e Conclusões do método Communicator.Allreduce
  • Foram realizados alguns testes para a funcionaliade do método ReduceScatter da classe Communicator. Uma das principais conclusões obtidas para o método ReduceScatter é que ele realiza de forma satisfatória a divisão de diferentes quantidades de elementos do "vetor reduzido" entre os diferentes processos MPI.

Testes e Conclusões do método Communicator.ReduceScatter
  • Foram realizados testes em cima da funcionalidade do método Scan da classe Intracommunicator. Uma das principais conclusões obtidas para este método é que objetos quaisquer e tipos primitivos de dados podem ser usados na função satisfatoriamente. Além disso, pode-se utilizar funções pré-definidas pelo usuário para o processo de redução.

Testes e Conclusões do método Intracommunicator.Scan

Dado início em 1º de maio, estamos construindo um relatório que compara as classes MPI para C++ e para C#.
Após esse relátorio ser concluido estaremos aptos a contribuir com novas funcionalidades para o MPI.NET.
  • Percebeu-se que uma função existente na norma MPI, a MPI_Bsend, não foi implementada pela solução MPI.NET. Assim sendo, projetou-se uma solução para a utilização de buffers pelo usuário. A implementação está sendo desenvolvida.

Diversos algoritmos estão sendo criados para que sejam realizados benchmarks para comparações entre o desempenho do C/C#, o MPI/C e o MPI.NET, o MPI/sockets, etc...
Atualmente estão sendo rodados algoritmos seqüências da Fatoração LU e da Multiplicação de Matrizes em uma máquina dual core para verificar as diferenças de desempenho entre o C e o C#.

Próximas tarefas: 2, 5, 6, 7.

Last edited Mar 24, 2009 at 8:37 PM by faafonso, version 28

Comments

No comments yet.