Trabalhando com OpenMp
Por: DirceuMj • 2/9/2015 • Trabalho acadêmico • 3.187 Palavras (13 Páginas) • 274 Visualizações
[pic 1]
CAMPUS ALEGRETE
CIÊNCIA DA COMPUTAÇÃO
Relatório Técnico Científico
Análise de desempenho com OpenMP
Dirceu Maraschin
Jairo Dias Pimentel
dirceu_maraschin@hotmail.com
jairodp013@gmail.com
Alegrete, Agosto, 2014
RESUMO
Este trabalho tem como objetivo a análise e comparação dos resultados obtidos a cerca do desempenho de diferentes versões, sequencial e paralela, a partir da execução de uma aplicação que realiza multiplicação de matrizes. Essa aplicação foi testada sob a interface de programação OpenMP (Open Multi-Processing), fazendo-se a paralelização dos laços for aninhados, os quais são responsáveis pela multiplicação das matrizes propriamente dita. Duas máquinas com organizações diferentes foram utilizadas nos testes de duas abordagens quanto ao laço a ser paralelizado, além disso, três políticas de distribuição de iterações: static, dynamic e guided do OpenMP. Variou-se o número de threads a serem processadas, de 2 até o dobro do número de cores do processador de cada máquina.
Palavras-chave: Desempenho, paralelização, OpenMP.
Sumário
RESUMO
1 Introdução
1.1 Objetivos
2 Desenvolvimento do Trabalho
2.1 Métodos de paralelização
2.2 Ambientes de testes
3 Resultados
3.1 Tempos de execução do computador 1
3.2 Tempos de execução do computador 2
3.3 Speedup
3.4 Eficiência
3.5 Comparações das políticas de iteração por laço paralelizado
4 Conclusão
5 Referências
- 1 Introdução
O uso da paralelização em computadores não é mais exceção. Internamente em um processador, há diversas unidades executando tarefas em paralelo no conjunto de instruções da arquitetura da CPU de forma transparente para o usuário [1]. Neste trabalho, para a paralelização da aplicação de multiplicação de matrizes, foi-se implementada utilizando a interface de programação OpenMP. Essa é uma interface portável baseada no modelo de programação paralela de memória compartilhada para arquiteturas de múltiplos processadores. O OpenMP pode ser executado tanto em ambientes Windows quanto Linux, pois se tratam de sistemas Multithreads.
Para a elaboração deste trabalho, utilizamos técnicas de paralelização para arquiteturas de processadores Multicores (CPUs com mais de um núcleo), característica presente em quase todos os computadores da atualidade. Como técnicas, foram utilizadas três políticas de distribuição de iterações de laços for da interface OpenMP: static, dynamic e guided. Para isso, fez-se necessário também a variação no número de threads a fim de testar o desempenho em cada uma das versões da aplicação de multiplicação de matrizes (de 2 até o dobro do número de cores do processador de cada máquina utilizada).
Conforme visto nas aulas ministradas pela Prof.ª Márcia Cera [2], adquirimos conhecimento a cerca das técnicas de paralelização, o que provê ganho de desempenho e um melhor uso das arquiteturas multicores. Dessa forma, obtendo uma execução mais rápida das aplicações. Por tais razões, foi-nos proposto desempenhar testes a fim de comprovar tais afirmações por meio de testes para demonstrar as políticas de iteração e analisar os resultados, fazendo comparativos observando qual delas seria a melhor para a paralelização da aplicação.
Com base nos conhecimentos adquiridos e demonstrações feitas em aula, podemos perceber vantagens ao fazer uso de técnicas de paralelização. Dentre as vantagens, o ganho de desempenho e o melhor uso dos recursos oferecidos pelas arquiteturas Multicores são as de maior destaque. No decorrer deste trabalho, serão apresentados os testes bem como os resultados obtidos pela execução da aplicação de multiplicação de matrizes variando as políticas de iteração citadas anteriormente.
- 1.1 Objetivos
Este trabalho tem como objetivo mostrar os resultados obtidos a partir dos testes feitos com a execução de diferentes versões, paralela e sequencial, da aplicação de multiplicação de matrizes a nós fornecida pela Prof.ª Márcia Cera. Comparar estes resultados e observar qual das políticas de paralelização apresenta melhor desempenho, static, dynamic ou guided em termos de menor tempo de execução, sob as arquiteturas Multicores utilizadas. Também é nosso objetivo adquirir maior conhecimento e prática no uso de técnicas de paralelização a fim de fazer um melhor uso do poder de processamento dos computadores.
- 2 Desenvolvimento do Trabalho
Para realizar este trabalho foi realizada uma adaptação quanto ao código utilizado no trabalho anterior (Atividade 7), adaptação essa sendo a definição de qual tipo de iteração iria ser usada e o número de threads que serão processadas.
Na análise, percebeu-se que a paralelização da parte do código contendo três laços for aninhados, os quais são responsáveis pela multiplicação das matrizes, é a forma de se obter melhor desempenho. Isso se dá devido ao maior tempo de execução estar concentrado justamente no processo de multiplicação desempenhado pela aplicação.
...