Programação Multicore: Como sobreviver a esta revolução?

Preview:

DESCRIPTION

CONISLI 2008, São Paulo, SP, Brazil

Citation preview

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