ssc#0143...

47
SSC0143 PROGRAMAÇÃO CONCORRENTE Aula 06 – Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella

Upload: others

Post on 16-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

SSC-­‐0143    PROGRAMAÇÃO  CONCORRENTE  

Aula  06  –  Modelos  de  Programação  Prof.  Jó  Ueyama  e    Julio  Cezar  Estrella  

 

Page 2: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Créditos  

2  1º  Semestre  de  2013  

Os   slides   integrantes   deste   material  foram   construídos   a   par4r   dos  conteúdos   relacionados   às   referências  bibliográficas  descritas  neste  documento  

Page 3: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Visão  Geral  da  Aula  de  Hoje    

3  1º  Semestre  de  2013  

• Overview  1  • Modelo  de  Memória  ComparJlhada  2  • Modelo  de  Threads  3  • Modelo  de  Passagem  de  Mensagens  4  • Modelo  Paralelo  de  Dados  5  • Modelo  Híbrido  6  • Exercício  e  Leitura  Recomendada  7  

Page 4: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

OVERVIEW  

4  1º  Semestre  de  2013  

Page 5: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelos  de  Programação  

•  Há  vários  modelos  de  programação  paralela  em  uso  atualmente:  – Memória  comparJlhada  –  Threads  –  Passagem  de  Mensagens  – Dados  paralelos  – Híbrido  Modelos  de  programação  paralela  existem  como  uma  abstração  acima  da  arquitetura  de  hardware  e  de  memória  

 5  1º  Semestre  de  2013  

Page 6: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelos  de  Programação  

•  Apesar  de  não  ser  evidente,  os  modelos  não  são  específicos  para  um  determinado  Jpo  de  arquitetura  

•  Qualquer  modelo  pode  (teoricamente)  ser  implementado  em  qualquer  hardware    

•  Exemplos  

6  1º  Semestre  de  2013  

Page 7: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelos  de  Programação  

•  Modelo  de  memória  comparJlhada  em  uma  máquina  de  memória  distribuída:  Kendall  Square  Research  (KSR)  – A  memória  é  fisicamente  distribuída,  mas  aparece  para  o  usuário  como  uma  memória  única  (espaço  de  endereçamento  global).    • Memória  virtual  compar4lhada  

7  1º  Semestre  de  2013  

Page 8: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelos  de  Programação  

•  Modelo  de  Passagem  de  Mensagens  em  uma  máquina  de  memória  comparJlhada  

•  Cada  tarefa  tem  acesso  direto  à  memória  global    

•  Exemplo:  – MPI  em  SGI  Origin    

8  1º  Semestre  de  2013  

Page 9: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelos  de  Programação  

•  A  SGI  Origin  uJliza  o  Jpo  de  arquitetura  de  memória  comparJlhada  CC-­‐NUMA  – Cada  tarefa  tem  acesso  direto  à  memória  global.  No  entanto  a  capacidade  para  enviar  e  receber  mensagens  com  MPI,  como  é  realizado  em  uma  máquina  com  memória  distribuída,  não  somente  é  possível,  como  é  comumente  uJlizada  

9  1º  Semestre  de  2013  

Page 10: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelos  de  Programação  

•  Reflexões  – Qual  modelo  uJlizar  é  em  geral  decidido:  •  Com  base  no  que  há  disponível    •  Escolha  pessoal  

•  Não  existe  o  melhor  modelo.  No  entanto  há  melhores  implementações  de  alguns  modelos  sobre  outros  – Vamos  descrever  os  modelos  e  discuJr  algumas  de  suas  implementações  reais    

1º  Semestre  de  2013   10  

Page 11: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

MODELO  DE  MEMÓRIA  COMPARTILHADA  

11  1º  Semestre  de  2013  

Page 12: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Memória  ComparJlhada  

•  Neste  modelo  as  tarefas  comparJlham  um  espaço  de  endereço  comum,  onde  elas  podem  ler  e  escrever  simultaneamente  

•  Mecanismos  como  semáforos  podem  ser  uJlizados  para  controlar  o  acesso  à  memória  comparJlhada  

•  Vantagem  à  Para  o  programador  – Não  existe  a  necessidade  de  comunicação  explicita  de  dados  entre  as  tarefas  

12  1º  Semestre  de  2013  

Page 13: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Memória  ComparJlhada  

•  Desvantagem    – Dificuldade  de  entender  e  gerenciar  a  localidade  dos  dados  

•  Manter  os  dados  locais  ao  processador  que  os  opera  minimiza  os  acessos  à  memória  que  ocorrem  quando  múlJplos  processadores  uJlizam  o  mesmo  dado.  

 

13  1º  Semestre  de  2013  

Page 14: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Memória  ComparJlhada  

•  Implementações  – Neste  Jpo  de  organização  os  compiladores  naJvos  traduzem  as  variáveis  do  programa  do  usuário  em  endereços  de  memória,  que  são  globais  

•  Os  SMPs  (e.g.  mulJcore)  representam  uma  implementação  comum  de  uma  arquitetura    de  memória  comparJlhada  – A  KSR  fornece  uma  visão  de  memória  comparJlhada  mesmo  com  a  memória  lsica  sendo  distribuída  

14  1º  Semestre  de  2013  

Page 15: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

MODELO  DE  THREADS  

15  1º  Semestre  de  2013  

Page 16: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Threads  

•  No  modelo  de  threads,  cada  processo  pode  ter  múlJplos  caminhos  de  execução  concorrente  

 

16  1º  Semestre  de  2013  

Page 17: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Threads  –  O  programa  principal  é  escalonado  para  ser  executado  pelo  sistema  operacional  naJvo  e  adquire  todos  os  recursos  necessários    para  ser  executado.  

–  O  programa  principal  executa    sequencialmente,  mas  cria  tarefas  (threads)  que  podem  ser  escalonadas  e  executadas  simultaneamente  pelo  SO  

–  Cada  thread  tem  dados  locais  e  comparJlha  recursos  com  o  programa  principal.  Isso  diminui  o  overhead  associado  com  a  replicação  dos  recursos  entre  vários  processos.  Cada  thread  também  se  beneficia  de  uma  visão  global  de  memória,  porque  ela  comparJlha  o  espaço  de  memória  com  o  programa  principal.    

17  1º  Semestre  de  2013  

Page 18: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Threads  –  Threads  se  comunicam  umas  com  as  outras  por  meio  da  memória  global  (atualizando  endereços  locais).  Isso  requer  sincronização  para  garanJr  a  consistência  dos  dados  durante  a  execução  das  threads.    

–  Threads  podem  ser  criadas  ou  destruídas,  mas  o  programa  principal    conJnua  aJvo  para  fornecer  os  recursos  comparJlhados  necessários  até  que  a  tarefa  seja  concluída.  

 

18  1º  Semestre  de  2013  

Page 19: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Threads  •  Threads  são  comumente  associadas  com  arquiteturas  de  memória  comparJlhada  e  sistemas  operacionais    

19  1º  Semestre  de  2013  

Page 20: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Threads  

20  1º  Semestre  de  2013  

Page 21: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Threads  

•  Implementação  inclui:  – Uma  biblioteca  de  sub-­‐roJnas  que  são  chamadas  a  parJr  do  código  fonte  paralelo  

– Um  conjunto  de  direJvas  de  compilador  no  código  fonte  paralelo  ou  serial.  Em  ambos  os  casos,  o  programador  é  responsável  por  determinar  todo  o  paralelismo  

21  1º  Semestre  de  2013  

Page 22: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Threads  •  OpenMP  –  Padrão  definido  e  apoiado  pelos  maiores  fabricantes  de  hardware  e  sonware  do  mundo  

– API  OpenMP  Fortran  à  28/10/1957  – API  OpenMP  C/C++  à  Final  de  1998  –  Portável  e  mulJplataforma  (Unix  e  Windows)  –  É  fácil  e  simples  de  usar  à  Prevê  paralelismo  incremental  

– A  Microson  tem  sua  própria  implementação  de  threads  •  Não  relacionada  com  o  padrão  Unix  POSIX  ou  OpenMP  

22  1º  Semestre  de  2013  

Page 23: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Threads  

•  Posix  Threads  – Especificado  pelo  padrão  IEEE  POSIX  1003.1c  (1995).  

– Somente  linguagem  C  – Conhecido  como  Pthreads  – A  maioria  dos  fabricantes  de  hardware  já  fornecem  pthreads  

– Paralelismo  explícito;  requer  muita  atenção  do  programador  para  detalhes  de  codificação  

23  1º  Semestre  de  2013  

Page 24: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

MODELO  DE  PASSAGEM  DE  MENSAGENS  

24  1º  Semestre  de  2013  

Page 25: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Passagem  de  Mensagens  

•  CaracterísScas  –  Conjunto  de  tarefas  que  uJlizam  a  memória  local  durante  a  computação.  Várias  tarefas  podem  residir  na  mesma  máquina.    

–  Tarefas  trocam  dados  através  de  comunicação,  enviando  e  recebendo  mensagens.  

– A  transferência  de  dados  em  geral  requer  operações  de  cooperação  a  serem  executadas  por  cada  processo.  Exemplo:    •  Operação  de  envio  deve  ter  uma  operação  de  recepção  correspondente  

25  1º  Semestre  de  2013  

Page 26: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Passagem  de  Mensagens  

26  1º  Semestre  de  2013  

Page 27: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Passagem  de  Mensagens  •  O  programador  é  responsável  por  determinar  todo  o  

Paralelismo  •  Várias  bibliotecas  disponíveis  desde  a  década  de  1980  

–  Muitas  diferenças  à  Dificuldade  de  desenvolver  aplicações  portáteis  

•  1992  à  Forum  MPI  estabelece  um  padrão  de  interface  para  implementação  de  passagem  de  mensagens    

•  1994  à  Parte  1  •  1996  à  Parte  2  (MPI-­‐2),    •  MPI:  Padrão  da  indústria  para  ambientes  de  passagem  de  

mensagens    

27  1º  Semestre  de  2013  

Page 28: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  de  Passagem  de  Mensagens  

•  Para  arquiteturas  de  memória  comparJlhada,  as  implementações  de  MPI  geralmente  não  uJlizam  redes  para  a  comunicação  entre  as  tarefas  (overhead  de  comunicação)  

•  Ao  invés  disso  é  uJlizada  memória  comparJlhada  (cópias  de  memória)  por  razões  de  desempenho  

28  1º  Semestre  de  2013  

Page 29: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

MODELO  PARALELO  DE  DADOS  

29  1º  Semestre  de  2013  

Page 30: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  Paralelo  de  Dados  

•  CaracterísScas  – A  maioria  da  tarefas  paralelas  envolve  a  execução  de  operações  em  um  conjunto  de  dados.  Os  dados  são  em  geral  organizados  em  uma  estrutura,  como  uma  matriz  ou  um  cubo  

– Um  conjunto  de  tarefas  trabalham  coleJvamente  na  mesma  estrutura  de  dados,  no  entanto,  cada  tarefa  opera  em  uma  parJção  diferente  da  mesma  estrutura  de  dados  

30  1º  Semestre  de  2013  

Page 31: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  Paralelo  de  Dados  •  Tarefas  executam  a  mesma  operação  em  sua  parJção  de  trabalho  

•  Exemplo:  – Adicionar  4  a  cada  elemento  de  um  array  

•  Em  arquiteturas  de  memória  comparJlhada,  todas  as  tarefas  podem  ter  acesso  à  estrutura  de  dados  armazenada  na  memória  global.    

•  Em  arquiteturas  de  memória  distribuída,  a  estrutura  de  dados  é  dividida  e  distribuída  na  memória  local  de  cada  processador  

31  1º  Semestre  de  2013  

Page 32: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  Paralelo  de  Dados  

32  1º  Semestre  de  2013  

Page 33: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  Paralelo  de  Dados  

•  Implementação  – Escreve-­‐se  um  programa  definindo  a  organização  paralela  dos  dados  

– A  organização  pode  ser  definida  por  chamadas  a  uma  biblioteca  de  dados  paralelos,  ou  por  direJvas  do  compilador  

33  1º  Semestre  de  2013  

Page 34: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  Paralelo  de  Dados  •  Implementação  

–  Fortran  90  e  95:  extensões  ISSO/ANSI  padrão  para  Fortran  77  

–  Contém  tudo  o  que  está  no  Fortran  77  –  Novo  formato  de  código-­‐fonte;  adições  ao  conjunto  de  caracteres  

–  Adições  à  estrutura  do  programa  e  aos  comandos  –  Adições  de  variáveis  –  métodos  e  argumentos  –  Ponteiros  e  alocação  de  memória  dinâmica  adicionados  – Matriz  de  transformação  (matrizes  tratadas  como  objetos)  

–  Recursividade  e  novas  funções  intrínsecas    

34  1º  Semestre  de  2013  

Page 35: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Modelo  Paralelo  de  Dados  

•  Implementações  – High  Performance  Fortran  (HPF):  Extensões  do  Fortran  90  para  suportar  distribuição  de  dados    

–  Tudo  o  que  tem  o  Fortran  90  – DireJvas  para  dizer  ao  compilador  como  distribuir  os  dados  

– AsserJvas  que  podem  melhorar  a  oJmização  do  código  gerado  

–  Construção  paralela  de  dados  (parte  do  Fortran  95)  

35  1º  Semestre  de  2013  

Page 36: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

OUTROS  MODELOS  

36  1º  Semestre  de  2013  

Page 37: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Outros  Modelos  

•  Além  dos  modelos  já  mencionados  há  outros  modelos  de  programação  paralela.  Três  dos  mais  comuns  são  descritos:  – Híbrido  – SPMD  – MPMD  

 

37  1º  Semestre  de  2013  

Page 38: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Outros  Modelos  

•  Híbrido  –  Combinação  de  dois  ou  mais  modelos  de  programação  paralela  •  Exemplo:  

– Combinação  do  modelo  de  passagem  de  mensagens  (MPI)  com  o  modelo  de  threads  (POSIX  Threads)  ou  o  modelo  de  memória  comparJlhada  (OpenMP)    

– Combinação  de  dados  paralelos  com  passagem  de  mensagens  em  arquiteturas  de  memória  distribuída.    Na  verdade  uJliza-­‐se  passagem  de  mensagens  para  transmiJr  dados  entre  as  tarefas,  de  forma  transparente  para  o  programador  

38  1º  Semestre  de  2013  

Page 39: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Outros  Modelos  

•  SPMD  –  Single  Program  MulSple  Data    – Modelo  de  programação  de  alto  nível  que  pode  ser  construído  a  parJr  da  combinação  dos  modelos  de  programação  paralela  previamente  mencionados  

•  Aqui  o  processamento  é  colaboraJvo  entre  todas  as  máquinas  

•  O  código  executado  em  todas  é  o  mesmo  (single  program)  

•  Os  dados  (mulJple  data)  são  trocados  de  modo  coordenado  entre  os  processos  

39  1º  Semestre  de  2013  

Page 40: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Outros  Modelos  

40  1º  Semestre  de  2013  

•  Programas  SPMD  geralmente  possuem  a  lógica  necessária  em  seu  programa  para  permiJr  que  diferentes  tarefas  se  ramifiquem  ou  condicionalmente  executem  apenas  as  partes  do  programa  que  se  desJnam  a  executar.    

•  Todas  as  tarefas  podem  uJlizar  diferentes  dados    

Page 41: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Outros  Modelos  

•  MPMD  –  MulSple  Program  MulSple  Data    –  Modelo  de  programação  de  alto  nível  que  pode  ser  construído  a  parJr  da  combinação  dos  modelos  de  programação  paralela  previamente  mencionados  

•  Um  único  processo  chamado  mestre  controla  todas  as  tarefas  que  serão  dadas  para  os  outros  processos  (escravos/trabalhadores)  

•  Todos  podem  executar  o  mesmo  programa  ou  diferentes  programas  

41  1º  Semestre  de  2013  

Page 42: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Outros  Modelos  •  Todas  as  tarefas  podem  uJlizar  dados  diferentes  •  O  mestre  executa  a  coordenação  e  pode  ou  não  contribuir  para  a  computação  

•  Os  trabalhadores  executam  as  tarefas  independentemente.  E  só  se  comunicam  com  o  mestre  para  passar  o  resultado  da  tarefa  por  ele  executada  e  obter  a  sua  próxima  tarefa  

•  Esse  modelo  tem  gargalo  na  comunicação  causado  por  todos  os  trabalhadores,  pois  eles  precisam  se  comunicar  com  o  processo  mestre  

1º  Semestre  de  2013   42  

Page 43: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

EXERCÍCIO  E  LEITURA  RECOMENDADA  

43  1º  Semestre  de  2013  

Page 44: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Exercício  

•  Acessar  o  Moodle  

44  1º  Semestre  de  2013  

Page 45: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Leitura  Recomendada  •  IntroducJon   to   Parallel   CompuJng,   Ananth   Grama,  Anshul  Gupta,  George  Karypis,  Vipin  Kumar  -­‐  2ª  ed.,  Addison  Wesley  

•  IntroducJon  to  Parallel  CompuJng  –  hyps://compuJng.llnl.gov/tutorials/parallel_comp/  

45  1º  Semestre  de  2013  

Page 46: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Dúvidas  

46  1º  Semestre  de  2013  

Page 47: SSC#0143 PROGRAMAÇÃO(CONCORRENTE(wiki.icmc.usp.br/images/e/e2/Aula-03-Modelos-Programacao-Paralel… · SSC#0143 PROGRAMAÇÃO(CONCORRENTE(Aula(06(–Modelos(de(Programação(Prof.&Jó&Ueyamae&&Julio&

Próxima  Aula...  

•  Técnicas  de  Desenvolvimento  de  Programas  Paralelos  –  Parte  1  

47  1º  Semestre  de  2013