Este programa tem como objetivo comparar a eficiência de diferentes implementações da computação 2d de jacobi utilizando diferentes técnicas de paralelismo.
As técnicas aplicadas foram paralelização por threads com pthreads, por processos com Open MPI, e uma abordagem híbrida.
Desenvolvido durante a disciplina de Programação Paralela no curso de Ciência da Computação na UEM.
Esse projeto foi desenvolvido para sistemas linux (testado em um sistema baseado em Debian), sendo compilado com o GCC. São utilizadas as bibliotecas nativas math.h, argp.h e pthread.h. Também foi utilizada a biblioteca mpi.h, que pode ser obtida com:
$ sudo apt-get update
$ sudo apt install openmpi-bin libopenmpi-devPara compilar, é possível utilizar o makefile. Os binários serão gerados na pasta bin.
$ makeAlguns parâmetros, como tamanho da matriz e a flag de debug, devem ser alterados diretamente no headerfile. Para recompilar:
$ make clean
$ makeAlém disso, cada executável pode receber parâmetros adicionais em tempo de execução, que podem ser listados com --help.
bin/jacobi-2d-pthread --size MEDIUM --seed 123 --threads 4Foram desenvolvidos alguns scripts shell para analisar a execução das implementações. Eles podem ser executados com bash, por exemplo:
$ bash scripts/speedup.shOs scripts têm como dependência vários comandos utilitários, a maioria disponíveis por padrão em distribuições inspiradas em Ubuntu/Debian, como time e bc.