Bruno de Oliveira Abinaderbruno.abinader@openbossa.orgProf. Dr. Raimundo Silva Barretorbarreto@dcc.ufam.edu.brComparativo ...
Guia da apresentação• Introdução• Arquitetura SMP e threads: O que são?• GCC: GNU Compiler Collection• Pthreads• GOMP• Ava...
Introdução• Arquitetura SMP (Symmetric Multiprocessing)• Threads: Linhas de código em paralelo• Padrões de manipulação de ...
Arquitetura SMP e threads: O que são?• SMP: 2+ processadores acessam a mesma memória• Threads: Linhas de código em paralel...
GCC: GNU Compiler Collection• Suíte de compiladores: C, C++, Java, entre outros• Principal compilador na comunidade open-s...
Pthreads• Biblioteca nativa do GCC• Implementa o padrão POSIX ThreadsPadrão IEEE 1003.1 POSIX Threads:• Possui subrotinas ...
GOMP• Biblioteca recente no GCC (4.2)• Implementa o padrão OpenMPPadrão OpenMP (Open Multiprocessing):• API para manipulaç...
Resultadosobtidos
Multiplicação de matrizesTabela 1 – Tempos de execução (incluindo o valor base)Experimento 256x256256x256(otimizado)512x51...
Multiplicação de matrizes (2)Figura 1 – Comparação de speed-up entre as bibliotecas e o valor base256x256 256x256 (otim.) ...
Crivo de EratóstenesTabela 2 – Tempos de execução (incluindo o valor base)Experimento [1...10000][1...10000](otimizado)[1....
Crivo de Eratóstenes (2)Figura 2 – Comparação de speed-up entre as bibliotecas e o valor base[1...10000] [1...10000] (otim...
Conclusão• Bibliotecas possuem vantagens com relação aprogramação seqüencial (sem threads)• Biblioteca GOMP possui desempe...
Obrigado!Apoio:www.indt.org.brwww.indt.org.br www.ufam.edu.br
Referências• Leffa R., Reis T., Vieira M., Charão A. (2006). Avaliação do Suporte à ProgramaçãoMultithread com OpenMP no c...
Próximos SlideShares
Carregando em…5
×

Comparativo das ferramentas de código aberto Pthreads e GOMP para criação de threads com o compilador GCC

680 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
680
No SlideShare
0
A partir de incorporações
0
Número de incorporações
96
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Comparativo das ferramentas de código aberto Pthreads e GOMP para criação de threads com o compilador GCC

  1. 1. Bruno de Oliveira Abinaderbruno.abinader@openbossa.orgProf. Dr. Raimundo Silva Barretorbarreto@dcc.ufam.edu.brComparativo das ferramentas de códigoaberto Pthreads e GOMP para criação dethreads com o compilador GCCWorkshop deSoftware Livre 2008
  2. 2. Guia da apresentação• Introdução• Arquitetura SMP e threads: O que são?• GCC: GNU Compiler Collection• Pthreads• GOMP• Avaliação de desempenho das bibliotecas• Conclusão• Referências
  3. 3. Introdução• Arquitetura SMP (Symmetric Multiprocessing)• Threads: Linhas de código em paralelo• Padrões de manipulação de threads:• POSIX Threads• OpenMP (Open Multiprocessing)• GCC: GNU Compiler Collection• Biblioteca Pthreads• Biblioteca GOMP• Avaliação de desempenho: Pthreads vs GOMP
  4. 4. Arquitetura SMP e threads: O que são?• SMP: 2+ processadores acessam a mesma memória• Threads: Linhas de código em paralelo• Programação multithread• Processos:ParalelosConcorrentesTempoT1T2T3T4TempoT3T1 T2 T4P1:P2:P1:
  5. 5. GCC: GNU Compiler Collection• Suíte de compiladores: C, C++, Java, entre outros• Principal compilador na comunidade open-source• Código aberto robusto e portável• Extensão através de bibliotecas• Pthreads (POSIX Threads)• GOMP (OpenMP)
  6. 6. Pthreads• Biblioteca nativa do GCC• Implementa o padrão POSIX ThreadsPadrão IEEE 1003.1 POSIX Threads:• Possui subrotinas agrupadas em três classes:• Gerenciamento de threads• Mutexes• Variáveis de condição
  7. 7. GOMP• Biblioteca recente no GCC (4.2)• Implementa o padrão OpenMPPadrão OpenMP (Open Multiprocessing):• API para manipulação de threads• Possui três componentes primários• Diretivas de compilador• Rotinas de bibliotecas em tempo de execução• Variáveis de ambiente
  8. 8. Resultadosobtidos
  9. 9. Multiplicação de matrizesTabela 1 – Tempos de execução (incluindo o valor base)Experimento 256x256256x256(otimizado)512x512512x512(otimizado)1024x10241024x1024(otimizado)Valor base 0,500659 s 0,353554 s 12,183798 s 5,473466 s 142,404751 s 70,656252 sGOMP (2 threads) 0,326334 s 0,113727 s 7,624408 s 3,950000 s 91,074894 s 57,889763 sGOMP (4 threads) 0,282169 s 0,090470 s 5,470327 s 3,212754 s 61,363369 s 51,301064 sPthreads (2 threads) 0,104188 s 0,048776 s 1,145446 s 1,040097 s 58,174239 s 41,702057 sPthreads (4 threads) 0,103416 s 0,049626 s 1,291636 s 1,174551 s 57,648465 s 40,006351 s• Pthreads e GOMP possuem melhor desempenho• 4 threads melhoram o desempenho• Pthreads possui melhor desempenho que GOMP
  10. 10. Multiplicação de matrizes (2)Figura 1 – Comparação de speed-up entre as bibliotecas e o valor base256x256 256x256 (otim.) 512x512 512x512 (otim.) 1024x1024 1024x1024 (otim.)1234567891011GOMP (2 threads)GOMP (4 threads)Pthreads (2 threads)Pthreads (4 threads)
  11. 11. Crivo de EratóstenesTabela 2 – Tempos de execução (incluindo o valor base)Experimento [1...10000][1...10000](otimizado)[1...100000][1...100000](otimizado)[1...1000000][1...1000000](otimizado)Valor base 0,013877 s 0,010896 s 1,164814 s 1,132676 s 56,307484 s 45,123013 sGOMP (2 threads) 0,013838 s 0,011235 s 1,120182 s 0,759020 s 47,324883 s 25,358077 sGOMP (4 threads) 0,012856 s 0,011678 s 1,057970 s 0,630478 s 43,516830 s 25,400973 sPthreads (2 threads) 0,018196 s 0,016705 s 1,088643 s 0,993504 s 57,091813 s 45,000071 sPthreads (4 threads) 0,019630 s 0,015735 s 1,073918 s 1,052199 s 56,930139 s 45,025957 s• Valor base possui melhor desempenho• Desempenho inferior:• Maior comunicação entre threads• Distância entre números primos
  12. 12. Crivo de Eratóstenes (2)Figura 2 – Comparação de speed-up entre as bibliotecas e o valor base[1...10000] [1...10000] (otim.) [1...100000] [1...100000] (otim.) [1...1000000] [1...1000000] (otim.)0,60,70,80,911,11,21,31,41,51,61,71,8GOMP (2 threads)GOMP (4 threads)Pthreads (2 threads)Pthreads (4 threads)
  13. 13. Conclusão• Bibliotecas possuem vantagens com relação aprogramação seqüencial (sem threads)• Biblioteca GOMP possui desempenho similar abiblioteca Pthreads• Diferenças de desempenho variam de acordocom o algoritmo utilizado• Número de threads influenciam nos resultados(mais threads = melhor performance)
  14. 14. Obrigado!Apoio:www.indt.org.brwww.indt.org.br www.ufam.edu.br
  15. 15. Referências• Leffa R., Reis T., Vieira M., Charão A. (2006). Avaliação do Suporte à ProgramaçãoMultithread com OpenMP no compilador GCC. Anais do 8o Fórum Internacional deSoftware Livre, Porto Alegre, RS, Brasil.• OpenMP, ARB (2005). OpenMP Application Program Interface. Technical report,OpenMP Architecture Review Board. http://www.openmp.org/specs.• IEEE (2004). The Open Group Base Specification Issue 6. IEEE Standard 1003.1, 2004Edition. http://www.opengroup.org/onlinepubs/009695399/toc.htm.• GNU (2007). GCC website. http://gcc.gnu.org/.• GOMP (2007). GNU OpenMP. http://gcc.gnu.org/projects/gomp/.• OpenMP (2007). OpenMP website. http://www.openmp.org/.• Nichols, B., Buttlar, D., and Farrell, J. (1996). Pthreads Programming. O’Reilly &Associates, Inc., Cebastopol, CA , USA.• Sato, M. (2002). OpenMP: Parallel programming API for shared memorymultiprocessors and on-chip multiprocessors. ACM 1-58113-562-9/02/0010...$5.00.

×