Your SlideShare is downloading. ×
Comparativo das ferramentas de código  aberto Pthreads e GOMP para criação de  threads com o compilador GCC
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

355
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
355
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. 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. 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. 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. 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. 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. 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. Resultadosobtidos
  • 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. 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. 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. 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. 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. Obrigado!Apoio:www.indt.org.brwww.indt.org.br www.ufam.edu.br
  • 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.

×