O documento discute programação multicore, apresentando:
1) A emergência de software multicore devido aos limites da Lei de Moore e necessidade de dissipação de calor;
2) O modelo de execução paralela e a Lei de Amdahl, que mostra que apenas parte do speedup pode ser alcançado ao otimizar parte do código;
3) Principais plataformas de programação paralela: MPI, PThreads e OpenMP.
1. Programa¸˜o Multicore:
ca
Como sobreviver a esta revolu¸˜o?
ca
Paulo Ricardo Paz Vital
IBM Linux Technology Center
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
2. Sobre o palestrante...
Engenheiro de Computa¸˜o, UCDB, 2003
ca
Engenheiro de Software, IBM Linux Technology Center:
IBM Installation Toolkit for Linux on POWER
Yaboot
IBM Server Consolidation Toolkit
Multicore Development Tools - Cell IDE
Pesquisador do Instituto de Computa¸˜o da Unicamp:
ca
Mem´rias Transacionais
o
Programa¸˜o Multicore
ca
Usu´rio, administrador e desenvolvedor de sistemas Unix-like
a
desde 1999
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
3. Agenda
1 Introdu¸˜o
ca
A emergˆncia do Software Multicore
e
O que ´ Paralelismo?
e
2 Plataformas de concorrˆncia
e
MPI
Pthreads
OpenMP
3 20 quest˜es a fazer quando ir para multicore
o
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
4. A emergˆncia do Software Multicore
e
O que ´ Paralelismo?
e
Parte I
Introdu¸˜o
ca
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
5. A emergˆncia do Software Multicore
e
O que ´ Paralelismo?
e
1 A emergˆncia do Software Multicore
e
A Lei de Moore
2 O que ´ Paralelismo?
e
A Lei de Amdahl
Um modelo para execu¸˜o multithreaded
ca
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
6. A emergˆncia do Software Multicore
e
A Lei de Moore
O que ´ Paralelismo?
e
A Lei de Moore
Gordon Moore - cofundador
da Intel Corporation
Eletronics Magazine, 19 de
Abril de 1965
Lei de Moore
O n´mero de transistores numa mesma ´rea de semicondutor
u a
dobra a cada 18 (24) meses.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
7. A emergˆncia do Software Multicore
e
A Lei de Moore
O que ´ Paralelismo?
e
A Lei de Moore
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
8. A emergˆncia do Software Multicore
e
A Lei de Moore
O que ´ Paralelismo?
e
A Lei de Moore
Problemas?
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
9. A emergˆncia do Software Multicore
e
A Lei de Moore
O que ´ Paralelismo?
e
A Lei de Moore
Problemas?
Miniaturiza¸˜o chegando ao limite.
ca
Dissipa¸˜o de calor.
ca
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
10. A emergˆncia do Software Multicore
e
A Lei de Moore
O que ´ Paralelismo?
e
A Lei de Moore
Problemas?
Miniaturiza¸˜o chegando ao limite.
ca
Dissipa¸˜o de calor.
ca
Solu¸˜es?
co
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
11. A emergˆncia do Software Multicore
e
A Lei de Moore
O que ´ Paralelismo?
e
A Lei de Moore
Problemas?
Miniaturiza¸˜o chegando ao limite.
ca
Dissipa¸˜o de calor.
ca
Solu¸˜es?
co
Novas tecnologias de grava¸˜o de chips.
ca
Mais de um n´cleo, ou seja, multicore.
u
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
12. A emergˆncia do Software Multicore
e A Lei de Amdahl
O que ´ Paralelismo?
e Um modelo para execu¸˜o multithreaded
ca
A Lei de Amdahl
”Speedup”
Quanto se ganhou com a execu¸˜o de uma tarefa em um
ca
computador paralelo?
Temposerial Ts
seepdup = = (1)
Tempoparalelo Tp
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
13. A emergˆncia do Software Multicore
e A Lei de Amdahl
O que ´ Paralelismo?
e Um modelo para execu¸˜o multithreaded
ca
A Lei de Amdahl
”Speedup”
Quanto se ganhou com a execu¸˜o de uma tarefa em um
ca
computador paralelo?
Temposerial Ts
seepdup = = (1)
Tempoparalelo Tp
Exemplo
Uma determinada tarefa, quando executada em um computador
convencional consome 200 segundos e quando executada em uma
m´quina paralela (com 24 processadores) consome 10 segundos,
a
ent˜o
a
Ts 200
seepdup = = = 20 (2)
Tp 10
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
14. A emergˆncia do Software Multicore
e A Lei de Amdahl
O que ´ Paralelismo?
e Um modelo para execu¸˜o multithreaded
ca
A Lei de Amdahl
Lei de Amdahl
Se somente uma fra¸˜o do programa ser´ otimizado, somente uma
ca a
fra¸˜o do benef´ ser´ alcan¸ado
ca ıcio a c
1
seepdup = (3)
s + (1 − s)/n
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
15. A emergˆncia do Software Multicore
e A Lei de Amdahl
O que ´ Paralelismo?
e Um modelo para execu¸˜o multithreaded
ca
A Lei de Amdahl
Exemplo
20% de um programa n˜o ser´ alterado
a a
Ser˜o utilizados 4 processadores para executar todo o
a
programa
Qual ser´ o ”speedup”?
a
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
16. A emergˆncia do Software Multicore
e A Lei de Amdahl
O que ´ Paralelismo?
e Um modelo para execu¸˜o multithreaded
ca
A Lei de Amdahl
Exemplo
20% de um programa n˜o ser´ alterado
a a
Ser˜o utilizados 4 processadores para executar todo o
a
programa
Qual ser´ o ”speedup”?
a
Resolu¸˜o
ca
80%
20% + = 40% (4)
4
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
17. A emergˆncia do Software Multicore
e A Lei de Amdahl
O que ´ Paralelismo?
e Um modelo para execu¸˜o multithreaded
ca
Um modelo para execu¸˜o multithreaded
ca
“dag model for multithreading ”
v´rtices = conjunto de instru¸˜es
e co
arestas = dependˆncias entre instru¸˜es
e co
instru¸˜o x precede instru¸˜o y (x
ca ca y ), se x terminou antes
de y come¸ar,
c
caso n˜o aconte¸a x y ou y
a c x, ent˜o dizemas que as
a
instru¸˜es est˜o em paralelo (x
co a y)
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
18. A emergˆncia do Software Multicore
e A Lei de Amdahl
O que ´ Paralelismo?
e Um modelo para execu¸˜o multithreaded
ca
Um modelo para execu¸˜o multithreaded
ca
1 2
6 12
5 9
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
19. MPI
PThreads
OpenMP
Parte II
Plataformas de concorrˆncia
e
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
20. MPI
PThreads
OpenMP
3 MPI
4 PThreads
5 OpenMP
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
21. MPI
PThreads
OpenMP
MPI
MPI (Message Passing Interface) ´ uma biblioteca de
e
subrotinas de comunica¸˜o, utilizadas em ambientes de
ca
mem´ria distribu´ m´quinas paralelas massivas, NOWs
o ıda, a
(network of workstations) e redes heterogˆneas.
e
Informa¸˜es passadas da mem´ria local do processo para a
co o
mem´ria principal do processo remoto.
o
Paralelismo ´ explicito, ou seja, o desenvolvedor ´ respons´vel
e e a
pela distribui¸˜o.
ca
API predominante no desenvolvimento de aplica¸˜es para
co
clusters cient´
ıficos.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
22. MPI
PThreads
OpenMP
MPI
Diversas implementa¸˜es;
co
OpenMPI - http://www.open-mpi.org/
LAM/MPI - http://www.lam-mpi.org/
Los Alamos MPI - http://public.lanl.gov/lampi/
MPICH - http://www-unix.mcs.anl.gov/mpi/mpich/
MPICH2 - http://www-unix.mcs.anl.gov/mpi/mpich2/
Alguns pontos antes de come¸ar:
c
MPI assume que vai trabalhar com processos.
MPI assume que n˜o o mesmo espa¸o de endere¸amento de
a c c
mem´ria ser´ compartilhado.
o a
Todos os processos podem usar opera¸˜es de IO.
co
N˜o pense em ”regi˜es paralelas”.
a o
MPI opera via ”function calls”.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
23. MPI
PThreads
OpenMP
MPI
Estrutura b´sica de um programa MPI
a
/* add in MPI startup routines */
/* 1st: launch the MPI processes on each node */
MPI_Init(&argc,&argv);
/* 2nd: request a thread id, sometimes called a quot;rankquot;
from the MPI master process, which has tid == 0 */
MPI_Comm_rank(MPI_COMM_WORLD, &tid);
/* 3rd: this is often useful, get the number of
threads or processes launched by MPI */
MPI_Comm_size(MPI_COMM_WORLD, &nthreads);
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
24. MPI
PThreads
OpenMP
MPI
hello-mpi
hello-mpi-2
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
25. MPI
PThreads
OpenMP
PThreads
POSIX Threads ´ um padr˜o POSIX que define uma API para
e a
criar e manipular threads.
Conjunto de tipos e chamadas para linguagem de
programa¸˜o C
ca
Caracter´
ısticas
Threads co-existem num mesmo processo, compartilhando
v´rios recursos, mas s˜o escalonadas separadamente pelo
a a
sistema operacional
Somente o m´ ınimo necess´rio de recursos s˜o replicados entre
a a
as duas threads
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
26. MPI
PThreads
OpenMP
PThreads
Criando e Terminando Threads
pthread_create (thread,attr,start_routine,arg)
pthread_exit (status)
pthread_attr_init (attr)
pthread_attr_destroy (attr)
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
27. MPI
PThreads
OpenMP
PThreads
Unindo e Desunindo Threads
pthread_join (threadid,status)
pthread_detach (threadid,status)
pthread_attr_setdetachstate (attr,detachstate)
pthread_attr_getdetachstate (attr,detachstate)
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
28. MPI
PThreads
OpenMP
PThreads
Criando e Destruindo Mutex
pthread_mutex_init (mutex,attr)
pthread_mutex_destroy (mutex)
pthread_mutexattr_init (attr)
pthread_mutexattr_destroy (attr)
Travando e Destravando Mutex
pthread_mutex_lock (mutex)
pthread_mutex_trylock (mutex)
pthread_mutex_unlock (mutex)
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
29. MPI
PThreads
OpenMP
PThreads
hello
hello arg1
join
mutex
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
30. MPI
PThreads
OpenMP
OpenMP
http://www.openmp.org
Biblioteca de mais alto n´vel para programa¸~o
ı ca
paralela
Suporta mem´ria compartilhada
o
C/C++ e Fortran (requer suporte do compilador)
Programador possui controle total sobre a
execu¸~o paralela
ca
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
31. MPI
PThreads
OpenMP
OpenMP
Caracter´
ısticas
Biblioteca para paraleliza¸˜o de c´digo
ca o
Usa #pragma para definir as regi˜es paralelas
o
Detecta automaticamente o n´mero de processadores
u
Restri¸˜es
co
Programador necessita fornecer os #pragmas
N˜o existe detec¸˜o de conflitos
a ca
Exige compilador - n˜o ´ apenas uma biblioteca
a e
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
32. MPI
PThreads
OpenMP
OpenMP
openmp hello
ImageMagick
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
33. Desempenho da aplica¸˜o
ca
Confiabilidade de Software
Tempo de desenvolvimento
Parte III
20 quest˜es a fazer quando ir para multicore
o
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
34. Desempenho da aplica¸˜o
ca
Confiabilidade de Software
Tempo de desenvolvimento
6 Desempenho da aplica¸˜o
ca
7 Confiabilidade de Software
8 Tempo de desenvolvimento
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
35. Desempenho da aplica¸˜o
ca
Confiabilidade de Software
Tempo de desenvolvimento
20 quest˜es a fazer quando ir para multicore
o
Quest˜es sugeridas por Leiserson e Mirman para ajudar a
o
determinar a melhor plataforma de concorrˆncia de acordo com as
e
necessidades do projeto.
Divididas de acordo com as trˆs arestas do triˆngulo do software
e a
multicore: desempenho da aplica¸˜o, confiabilidade de software e
ca
tempo de desenvolvimento.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
36. Desempenho da aplica¸˜o
ca
Confiabilidade de Software
Tempo de desenvolvimento
20 quest˜es a fazer quando ir para multicore
o
1 A plataforma de concorrˆncia me permite medir o paralelismo
e
exposto na minha aplica¸˜o?
ca
2 A plataforma de concorrˆncia indica o gargalo do tempo de
e
resposta, ou somente oferece mais capaciadade?
3 O desempenho da aplica¸˜o aumenta linearmente a medida
ca
que mais cores s˜o adicionados, ou does it quickly reach
a
diminishing returns?
4 Meu c´digo multicore ser´ mais r´pido que meu c´digo serial
o a a o
original quando executado em um processador unico?
´
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
37. Desempenho da aplica¸˜o
ca
Confiabilidade de Software
Tempo de desenvolvimento
20 quest˜es a fazer quando ir para multicore
o
5 Ser´ que o scheduler da plataforma de concorrˆncia
a e
balancear´ cargas (aplica¸˜es) irregulares de forma eficiente
a co
para alcan¸ar plena utiliza¸˜o?
c ca
6 Minha aplica¸˜o executar´ legal com outros jobs do sistema,
ca a
ou jobs m´ltiplos causar˜o problemas de recursos?
u a
7 Quais ferramentas est˜o dispon´
a ıveis para detectar gargalos de
desempenho multicore?
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
38. Desempenho da aplica¸˜o
ca
Confiabilidade de Software
Tempo de desenvolvimento
20 quest˜es a fazer quando ir para multicore
o
8 Qu˜o dif´ ´ depurar minha aplica¸˜o multicore em rela¸˜o a
a ıcil e ca ca
aplica¸˜o original?
ca
9 Posso usar as ferramentas de depura¸˜o que j´ conhe¸o?
ca a c
10 Existem ferramentas de depura¸˜o eficazes para identificar e
ca
localizar erros em programa¸˜o paralela, como bugs de ”data
ca
race”?
11 Devo usar um depurador paralelo mesmo se eu fizer um erro
de programa¸˜o serial ordin´rio?
ca a
12 Que mudan¸as devo fazer nos processos de lan¸mento para
c a
assegurar que meu software entregue ´ confi´vel?
e a
13 Posso usar os testes unit´rios e testes de regress˜o existentes?
a a
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
39. Desempenho da aplica¸˜o
ca
Confiabilidade de Software
Tempo de desenvolvimento
20 quest˜es para fazer quando ir para multicore
o
14 Para transformar minha aplica¸˜o em multicore, quanto de
aa
re-estrutura¸˜o l´gica precisso fazer?
ca o
15 Posso treinar facilmente programadores a usarem plataformas
de concorrˆncia?
e
16 Posso manter somente uma base de c´digo, ou devo manter
o
uma vers˜o serial e outra paralela?
a
17 Posso evitar de reescrever a minha aplica¸˜o toda vez que uma
ca
nova gera¸˜o de processadores aumenta o n´mero de cores?
ca u
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
40. Desempenho da aplica¸˜o
ca
Confiabilidade de Software
Tempo de desenvolvimento
20 quest˜es a fazer quando ir para multicore
o
18 Posso facilmente habilitar c´digo multicore mau-estruturada e
o
irregular, ou a plataforma de concorrˆncia ´ limitada aos
e e
dados de aplica¸˜es paralelas?
co
19 As plataformas de concorrˆncia suportam modernas
e
paradgmas de programa¸˜o, como objetos, templates e
ca
exceptions?
20 O que fazer para lidar com vari´veis globais na minha
a
aplica¸˜o?
ca
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
41. Referˆncias
e
Amdahl, G.; The validity of the single processor approach to
achieving largescale computing capabilities, Proceedings of the
AFIPS Spring Joint Computer Conference, 1967
Leiserson, C. E. and Mirman, I, B.; How to Survive the
Multicore Software Revolution (or at Least Survive the Hype),
e-Book, 2008
http://www.cilk.com/multicore-e-book/
Landman, J.; MPI in Thirty Minutes, Linux Magazine, 2008
http://www.linux-mag.com/id/5759/
Barney, B; Tutorial PThreads, Livermore Computing, 2008
https://computing.llnl.gov/tutorials/pthreads/
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
42. Referˆncias
e
Butenhof, D. R.; Programming with POSIX(R) Threads,
Addison Wesley, 1997
Chapman, B., Jost, G., Pas, R.; Using OpenMP: Portable
Shared Memory Parallel Programming, MIT Press, 2007
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
43. IBM Linux Technology Center
LTC ´ o bra¸o armado da iniciativa IBM para com o software
e c
livre
Desenvolvedores trabalham em coopera¸˜o com a comunidade
ca
Open Source
´
E o centro de competˆncia t´cnica para Linux na IBM
e e
+640 pessoas e 38 localidades no mundo
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
44. IBM Linux Technology Center
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
45. Agradecimentos
Ao colega Higor Alves, pelo empr´stimo de um laptop multicore :-D
e
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
46. Perguntas?
Paulo Ricardo Paz Vital
{pvital, vital}@br.ibm.com
http://www.pvital.org
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre