programação multicore: como sobreviver a esta revolução?
DESCRIPTION
CONISLI 2008, São Paulo, SP, BrazilTRANSCRIPT
Programacao Multicore:Como sobreviver a esta revolucao?
Paulo Ricardo Paz Vital
IBM Linux Technology Center
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Sobre o palestrante...
Engenheiro de Computacao, UCDB, 2003
Engenheiro de Software, IBM Linux Technology Center:
IBM Installation Toolkit for Linux on POWERYabootIBM Server Consolidation ToolkitMulticore Development Tools - Cell IDE
Pesquisador do Instituto de Computacao da Unicamp:
Memorias TransacionaisProgramacao Multicore
Usuario, administrador e desenvolvedor de sistemas Unix-likedesde 1999
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Agenda
1 Introducao
A emergencia do Software MulticoreO que e Paralelismo?
2 Plataformas de concorrencia
MPIPthreadsOpenMP
3 20 questoes a fazer quando ir para multicore
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
Parte I
Introducao
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
1 A emergencia do Software MulticoreA Lei de Moore
2 O que e Paralelismo?A Lei de AmdahlUm modelo para execucao multithreaded
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de Moore
A Lei de Moore
Gordon Moore - cofundadorda Intel Corporation
Eletronics Magazine, 19 deAbril de 1965
Lei de Moore
O numero de transistores numa mesma area de semicondutordobra a cada 18 (24) meses.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de Moore
A Lei de Moore
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de Moore
A Lei de Moore
Problemas?
Miniaturizacao chegando ao limite.
Dissipacao de calor.
Solucoes?
Novas tecnologias de gravacao de chips.
Mais de um nucleo, ou seja, multicore.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de Moore
A Lei de Moore
Problemas?
Miniaturizacao chegando ao limite.
Dissipacao de calor.
Solucoes?
Novas tecnologias de gravacao de chips.
Mais de um nucleo, ou seja, multicore.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de Moore
A Lei de Moore
Problemas?
Miniaturizacao chegando ao limite.
Dissipacao de calor.
Solucoes?
Novas tecnologias de gravacao de chips.
Mais de um nucleo, ou seja, multicore.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de Moore
A Lei de Moore
Problemas?
Miniaturizacao chegando ao limite.
Dissipacao de calor.
Solucoes?
Novas tecnologias de gravacao de chips.
Mais de um nucleo, ou seja, multicore.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de AmdahlUm modelo para execucao multithreaded
A Lei de Amdahl
”Speedup”
Quanto se ganhou com a execucao de uma tarefa em umcomputador paralelo?
seepdup =Temposerial
Tempoparalelo=
Ts
Tp(1)
Exemplo
Uma determinada tarefa, quando executada em um computadorconvencional consome 200 segundos e quando executada em umamaquina paralela (com 24 processadores) consome 10 segundos,entao
seepdup =Ts
Tp=
200
10= 20 (2)
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de AmdahlUm modelo para execucao multithreaded
A Lei de Amdahl
”Speedup”
Quanto se ganhou com a execucao de uma tarefa em umcomputador paralelo?
seepdup =Temposerial
Tempoparalelo=
Ts
Tp(1)
Exemplo
Uma determinada tarefa, quando executada em um computadorconvencional consome 200 segundos e quando executada em umamaquina paralela (com 24 processadores) consome 10 segundos,entao
seepdup =Ts
Tp=
200
10= 20 (2)
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de AmdahlUm modelo para execucao multithreaded
A Lei de Amdahl
Lei de Amdahl
Se somente uma fracao do programa sera otimizado, somente umafracao do benefıcio sera alcancado
seepdup =1
s + (1− s)/n(3)
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de AmdahlUm modelo para execucao multithreaded
A Lei de Amdahl
Exemplo
20% de um programa nao sera alterado
Serao utilizados 4 processadores para executar todo oprograma
Qual sera o ”speedup”?
Resolucao
20% +80%
4= 40% (4)
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de AmdahlUm modelo para execucao multithreaded
A Lei de Amdahl
Exemplo
20% de um programa nao sera alterado
Serao utilizados 4 processadores para executar todo oprograma
Qual sera o ”speedup”?
Resolucao
20% +80%
4= 40% (4)
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de AmdahlUm modelo para execucao multithreaded
Um modelo para execucao multithreaded
“dag model for multithreading”
vertices = conjunto de instrucoes
arestas = dependencias entre instrucoes
instrucao x precede instrucao y (x ≺ y), se x terminou antesde y comecar,
caso nao aconteca x ≺ y ou y ≺ x , entao dizemas que asinstrucoes estao em paralelo (x ‖ y)
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
A emergencia do Software MulticoreO que e Paralelismo?
A Lei de AmdahlUm modelo para execucao multithreaded
Um modelo para execucao multithreaded
1 ≺ 2
6 ≺ 12
5 ‖ 9
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
MPIPThreadsOpenMP
Parte II
Plataformas de concorrencia
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
MPIPThreadsOpenMP
3 MPI
4 PThreads
5 OpenMP
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
MPIPThreadsOpenMP
MPI
MPI (Message Passing Interface) e uma biblioteca desubrotinas de comunicacao, utilizadas em ambientes dememoria distribuıda, maquinas paralelas massivas, NOWs(network of workstations) e redes heterogeneas.
Informacoes passadas da memoria local do processo para amemoria principal do processo remoto.
Paralelismo e explicito, ou seja, o desenvolvedor e responsavelpela distribuicao.
API predominante no desenvolvimento de aplicacoes paraclusters cientıficos.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
MPIPThreadsOpenMP
MPI
Diversas implementacoes;
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 comecar:
MPI assume que vai trabalhar com processos.MPI assume que nao o mesmo espaco de enderecamento dememoria sera compartilhado.Todos os processos podem usar operacoes de IO.Nao pense em ”regioes paralelas”.MPI opera via ”function calls”.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
MPIPThreadsOpenMP
MPI
Estrutura basica de um programa MPI
/* 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 "rank"from the MPI master process, which has tid == 0 */
MPI_Comm_rank(MPI_COMM_WORLD, &tid);
/* 3rd: this is often useful, get the number ofthreads or processes launched by MPI */
MPI_Comm_size(MPI_COMM_WORLD, &nthreads);
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
MPIPThreadsOpenMP
MPI
hello-mpi
hello-mpi-2
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
MPIPThreadsOpenMP
PThreads
POSIX Threads e um padrao POSIX que define uma API paracriar e manipular threads.
Conjunto de tipos e chamadas para linguagem deprogramacao C
Caracterısticas
Threads co-existem num mesmo processo, compartilhandovarios recursos, mas sao escalonadas separadamente pelosistema operacional
Somente o mınimo necessario de recursos sao replicados entreas duas threads
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
MPIPThreadsOpenMP
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
MPIPThreadsOpenMP
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
MPIPThreadsOpenMP
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
MPIPThreadsOpenMP
PThreads
hello
hello arg1
join
mutex
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
MPIPThreadsOpenMP
OpenMP
http://www.openmp.org
Biblioteca de mais alto nıvel para programac~aoparalela
Suporta memoria compartilhada
C/C++ e Fortran (requer suporte do compilador)
Programador possui controle total sobre aexecuc~ao paralela
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
MPIPThreadsOpenMP
OpenMP
Caracterısticas
Biblioteca para paralelizacao de codigo
Usa #pragma para definir as regioes paralelas
Detecta automaticamente o numero de processadores
Restricoes
Programador necessita fornecer os #pragmas
Nao existe deteccao de conflitos
Exige compilador - nao e apenas uma biblioteca
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
MPIPThreadsOpenMP
OpenMP
openmp hello
ImageMagick
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplicacaoConfiabilidade de Software
Tempo de desenvolvimento
Parte III
20 questoes a fazer quando ir para multicore
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplicacaoConfiabilidade de Software
Tempo de desenvolvimento
6 Desempenho da aplicacao
7 Confiabilidade de Software
8 Tempo de desenvolvimento
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplicacaoConfiabilidade de Software
Tempo de desenvolvimento
20 questoes a fazer quando ir para multicore
Questoes sugeridas por Leiserson e Mirman para ajudar adeterminar a melhor plataforma de concorrencia de acordo com asnecessidades do projeto.Divididas de acordo com as tres arestas do triangulo do softwaremulticore: desempenho da aplicacao, confiabilidade de software etempo de desenvolvimento.
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplicacaoConfiabilidade de Software
Tempo de desenvolvimento
20 questoes a fazer quando ir para multicore
1 A plataforma de concorrencia me permite medir o paralelismoexposto na minha aplicacao?
2 A plataforma de concorrencia indica o gargalo do tempo deresposta, ou somente oferece mais capaciadade?
3 O desempenho da aplicacao aumenta linearmente a medidaque mais cores sao adicionados, ou does it quickly reachdiminishing returns?
4 Meu codigo multicore sera mais rapido que meu codigo serialoriginal quando executado em um processador unico?
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplicacaoConfiabilidade de Software
Tempo de desenvolvimento
20 questoes a fazer quando ir para multicore
5 Sera que o scheduler da plataforma de concorrenciabalanceara cargas (aplicacoes) irregulares de forma eficientepara alcancar plena utilizacao?
6 Minha aplicacao executara legal com outros jobs do sistema,ou jobs multiplos causarao problemas de recursos?
7 Quais ferramentas estao disponıveis para detectar gargalos dedesempenho multicore?
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplicacaoConfiabilidade de Software
Tempo de desenvolvimento
20 questoes a fazer quando ir para multicore
8 Quao difıcil e depurar minha aplicacao multicore em relacao aaplicacao original?
9 Posso usar as ferramentas de depuracao que ja conheco?
10 Existem ferramentas de depuracao eficazes para identificar elocalizar erros em programacao paralela, como bugs de ”datarace”?
11 Devo usar um depurador paralelo mesmo se eu fizer um errode programacao serial ordinario?
12 Que mudancas devo fazer nos processos de lanamento paraassegurar que meu software entregue e confiavel?
13 Posso usar os testes unitarios e testes de regressao existentes?
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplicacaoConfiabilidade de Software
Tempo de desenvolvimento
20 questoes para fazer quando ir para multicore
14 Para transformar minha aplicaaao em multicore, quanto dere-estruturacao logica precisso fazer?
15 Posso treinar facilmente programadores a usarem plataformasde concorrencia?
16 Posso manter somente uma base de codigo, ou devo manteruma versao serial e outra paralela?
17 Posso evitar de reescrever a minha aplicacao toda vez que umanova geracao de processadores aumenta o numero de cores?
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplicacaoConfiabilidade de Software
Tempo de desenvolvimento
20 questoes a fazer quando ir para multicore
18 Posso facilmente habilitar codigo multicore mau-estruturada eirregular, ou a plataforma de concorrencia e limitada aosdados de aplicacoes paralelas?
19 As plataformas de concorrencia suportam modernasparadgmas de programacao, como objetos, templates eexceptions?
20 O que fazer para lidar com variaveis globais na minhaaplicacao?
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Referencias
Amdahl, G.; The validity of the single processor approach toachieving largescale computing capabilities, Proceedings of theAFIPS Spring Joint Computer Conference, 1967
Leiserson, C. E. and Mirman, I, B.; How to Survive theMulticore Software Revolution (or at Least Survive the Hype),e-Book, 2008http://www.cilk.com/multicore-e-book/
Landman, J.; MPI in Thirty Minutes, Linux Magazine, 2008http://www.linux-mag.com/id/5759/
Barney, B; Tutorial PThreads, Livermore Computing, 2008https://computing.llnl.gov/tutorials/pthreads/
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Referencias
Butenhof, D. R.; Programming with POSIX(R) Threads,Addison Wesley, 1997
Chapman, B., Jost, G., Pas, R.; Using OpenMP: PortableShared Memory Parallel Programming, MIT Press, 2007
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
IBM Linux Technology Center
LTC e o braco armado da iniciativa IBM para com o softwarelivre
Desenvolvedores trabalham em cooperacao com a comunidadeOpen Source
E o centro de competencia tecnica para Linux na IBM
+640 pessoas e 38 localidades no mundo
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
IBM Linux Technology Center
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Agradecimentos
Ao colega Higor Alves, pelo emprestimo de um laptop multicore :-D
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
Perguntas?
Paulo Ricardo Paz Vital{pvital, vital}@br.ibm.comhttp://www.pvital.org
Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre