computação*heterogênea - cmsoft chapter - presentation...computação*heterogênea...

44
Computação Heterogênea Programação paralela, clusters e GPUs Profa. Dra. Denise Stringhini (ICTUnifesp) Primeiro Encontro do Khronos Chapters Brasil Belo Horizonte, 20/09/2013

Upload: others

Post on 27-Jul-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Computação  Heterogênea  Programação  paralela,  clusters  e  GPUs  

Profa.  Dra.  Denise  Stringhini    (ICT-­‐Unifesp)  

Primeiro  Encontro  do  Khronos  Chapters  Brasil  Belo  Horizonte,  20/09/2013  

Page 2: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Conteúdo  

•  Computação  heterogênea:  moOvação  •  Processamento  de  alto  desempenho  •  Arquiteturas  heterogêneas  •  Arquitetura  de  GPU  •  Ferramentas  de  programação  •  Outros  aceleradores    

Page 3: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Computação  heterogênea:  moOvação  

•  Desempenho  nos  úlOmos  30  anos:    –  velocidade  de  clock  –  oOmização  das  instruções    –  níveis  de  cache    –  obtenção  de  desempenho:  compilação  

•  Próximos  20  anos:    –  gerenciamento  de  energia    –  oOmização  da  movimentação  de  dados    –  computação  heterogênea    –  obtenção  de  desempenho:  paralelização  do  código  

•  uso  de  direOvas  e  bibliotecas,  ferramentas  de  auto-­‐tuning,  etc  

Page 4: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

MoOvação  

Borkar,  S.;  Chien,  A.  A.  2011.  The  future  of  microprocessors.  Commun.  ACM  54,  5  (May  2011)  

Page 5: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Processamento  de  Alto  Desempenho  

•  PAD  ou  HPC  (High  Performance  Compu<ng).  – A  busca  por  alto  desempenho  fez  com  que  as  melhorias  se  expandissem  para  domínios  externos  aos  de  arquiteturas  convencionais.    

•  Exemplo:  máquinas  mais  rápidas  do  mundo  (www.top500.org).  

Page 6: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT
Page 7: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT
Page 8: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

•  São  clusters  onde  cada  nó  é  um  SMP.  •  Os  nós  podem  ser  equipados  com  algum  Opo  de  acelerador.  

•  Memória:  – ComparOlhada  em  cada  backend.  – Distribuída  entre  os  nós  do  cluster.  

•  Programação:  MPI,  OpenMP,  CUDA,  OpenCL,  etc.  

Clusters  híbridos  

Page 9: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Clusters  híbrid

os  

Page 10: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Clusters  híbrid

os  

Page 11: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Taxonomia  de  Sistemas  Heterogêneos  

•  sistemas  heterogêneos  projetados  por  fabricantes  específicos;  

•  clusters  heterogêneos;  •  redes  locais  de  computadores;  •  redes  globais  de  computadores  em  um  mesmo  nível  organizacional;  

•  redes  globais  de  computadores  de  propósito  geral.  

Page 12: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Heterogeneous  Compu<ng  Jungle  (HPCWire,  março/2012)  

Intel/AMD  X86  host  +  NVIDIA  GPU

s  (x86+GPU)  

AMD  Opteron  +  AMD  GPUs.  AMD  Opteron  +  AMD  APU.  

Intel  Core  +  Intel  Ivy  Bridge  integrated  GPU.  

Intel  Core  +  Intel  MIC  

NVIDIA  Denver:  ARM  +  NVIDIA  G

PU.  

Texas  Instruments:  ARM  +  TI  DSPs.  Convey  Intel  x86  +  FPGA-­‐implemented  reconfigurable  vector  unit  

GP  core  +  some  other  mulOcore  or  s

tream  accelerators  

GP  core  +  FPGA  fabric  

IBM  Power  +  Cell.  

Page 13: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Exemplos  de  Aceleradores  

 •  GPU  (Graphics  Processing  Unit)  – Nvidia,  AMD    –  Intel  Ivy  Bridge  (3ª.  E  4ª.  gerações  Intel  Core)    

•  Intel  Xeon  Phi  Coprocessor  

Page 14: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

GPU  

•  Os  principais  fabricantes  são  a  NVIDIA  e  a  AMD.  –  Podem  atuar  em  conjunto  com  CPUs  Intel  ou  AMD.    

•  Paralelismo  do  Opo  SIMD.  •  Programa  principal  executa  na  CPU  (host)  e  é  o  responsável  por  iniciar  as  threads  na  GPU  (device).    

•  Tem  sua  própria  hierarquia  de  memória  e  os  dados  devem  ser  transferidos  através  de  um  barramento  PCI  express.    

Page 15: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

GPU  

!

Page 16: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Nvidia:  Arquitetura  Kepler  

•  Versões  mais  completas  trazem  um  conjunto  de  até  15  SMX  com  192  núcleos  cada.  –  2880  cores  

•  Paralelismo  dinâmico.  

•  Hyper-­‐Q  possibilita  disparar  kernels  simultaneamente.      

Page 17: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Ambientes  de  programação  

!

Page 18: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

OpenMP  

•  Padrão  composto  por:  –   conjunto  de  direOvas  de  programação  –   conjunto  de  funções  de  biblioteca  –   variáveis  de  ambiente  –  linguagens  C/C++  e  Fortran  

Page 19: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Modelo  de  execução  

•  No  início  há  uma  única  thread  (master  thread)  que  executa  até  encontrar  a  primeira  região  paralela  (parallel  region).    

•  Um  fork  acontece,  fazendo  com  que  um  Rme  de  threads  seja  criado  para  executar  a  região  paralela.    

•  Ao  final,  uma  operação  de  join  sincroniza  e  finaliza  todas  as  threads  e  permite  que  apenas  a  mestre  avance.    

Page 20: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Modelo  de  execução  

!

Page 21: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Exemplo  

#pragma omp parallel for schedule(static, 2) num_threads(4)

Page 22: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

CUDA  

•  Arquitetura  de  computação  paralela  de  propósito  geral  da  NVIDIA.    -  Modelo  de  programação  paralela  e  um  

conjunto  de  instruções.  •  Aplicações  paralelas  executadas  em  GPUs  

Page 23: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

CUDA  

O modelo assume que suas threads são executadas em um dispositivo separado, uma GPU, que trabalha como coprocessador do host.    O código principal é executado na CPU, e faz chamadas a funções que são executadas pela GPU  

Page 24: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Função  Kernel  

•  Threads  executam  o  código  definido  em  uma  função  kernel.  

•  Uma  chamada  a  uma  função  kernel,  dispara  a  execução  de  N  instâncias  paralelas  por  N  threads  CUDA.    

Page 25: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Modelo  de  Programação  

Um  SM  ou  SMX  executa  um  ou  mais  blocos  de  threads  e  os  cores  e  outras  unidades  de  execução  no  SMX  executam  as  instruções  da  thread.  

Page 26: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

OpenCL  

•  A  linguagem  e  seu  sistema  de  tempo  de  execução  servem  como  uma  camada  de  abstração  ao  hardware  heterogêneo.    

•  Um  programa  OpenCL  tem  o  objeOvo  de  aproveitar  todos  os  disposiOvos  presentes  na  máquina.  

Page 27: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

OpenCL  

•  Uma  aplicação  OpenCL  deve  seguir  os  seguintes  passos:  – Descobrir  os  componentes  heterogêneos;    – Detectar  suas  caracterísOcas;  –  Criar  os  blocos  de  instruções  (kernels)  que  irão  executar  na  plataforma  heterogênea;  

–  Iniciar  e  manipular  objetos  de  memória;  –  Executar  os  kernels  na  ordem  correta  e  nos  disposiOvos  adequados  presentes  no  sistema;  

–  Coletar  os  resultados  finais.  

Page 28: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Modelo  de  plataforma  

•  É  composto  por  um  host  e  um  ou  mais  disposiOvos  OpenCL  (OpenCL  devices).    

•  Cada  disposiOvo  possui  uma  ou  mais  unidades  de  computação  (compute  units).  

•  Estes  são  compostos  por  um  conjunto  de  elementos  de  processamento  (processing  elements).    

Page 29: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Modelo  de  Plataforma  

!

Page 30: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Modelo  de  Execução  

•  Uma  aplicação  OpenCL  é  composta  por  um  programa  host  e  um  conjunto  de  kernels.    

•  O  programa  host  executa  no  host  (normalmente  uma  CPU)  e  os  kernels  executam  nos  disposiOvos  disponíveis.  

Page 31: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Itens  de  trabalho  

•  O  programa  host  envia  o  comando  de  execução  de  um  kernel  para  um  disposiOvo.    

•  Isto  faz  com  que  várias  instâncias  da  função  que  implementa  o  kernel  sejam  executadas.  – Em  OpenCL  estas  instâncias  são  chamadas  de  itens  de  trabalho  (work-­‐items)  

– Correspondem  às  threads  de  CUDA.      

Page 32: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Grupos  de  trabalho  

•  Os  itens  de  trabalho  são  organizados  em  grupos  de  trabalho  (work-­‐groups).    

•  Estes  oferecem  uma  maneira  de  estabelecer  granularidades  diferentes  aos  grupos  de  itens  de  trabalho,  o  que  normalmente  facilita  a  divisão  de  trabalho  e  a  sincronização.    

Page 33: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Contexto  

•  Define  o  ambiente  de  execução  no  qual  os  kernels  são  definidos  e  executam  e  é  definido  em  termos  dos  seguintes  recursos:  –  disposiOvos,    –  conjunto  de  kernels,    –  objetos  de  programa  e    –  objetos  de  memória.  

•  Assim,  um  contexto  é  todo  o  conjunto  de  recursos  que  um  kernel  vai  uOlizar  durante  sua  execução.  

Page 34: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Contexto  

•  O  contexto  é  definido  em  tempo  de  execução  pelo  host  de  acordo  com  os  disposiOvos  disponíveis.    

•  Para  possibilitar  uma  escolha  dinâmica  do  disposiOvo  o  OpenCL  compila  os  kernels  dinamicamente,  gerando  os  objetos  de  programa  em  tempo  de  execução.    

Page 35: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Fila  de  comandos  

•  A  interação  entre  o  host  e  os  disposiOvos  é  realizada  através  de  uma  fila  de  comandos  (command-­‐queue).    

•  Os  comandos  são  colocados  nesta  fila  e  aguardam  seu  momento  de  executar.    

•  A  fila  é  criada  pelo  host  e  conectada  a  um  disposiOvo  logo  após  a  criação  do  contexto.    

 

Page 36: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

OpenACC  

•  Anunciado  em  novembro  de  2011  na  conferência  SuperCompuOng.  

•  É  um  padrão  para  programação  paralela.  •  O  padrão  tem  como  base  o  compilador  PGI  

(Portland  Group)    

Page 37: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

OpenACC  

•  Descreve  uma  API  de  programação  que  fornece  uma  coleção  de  direRvas  para  especificar  laços  e  regiões  de  código  paralelizáveis  que  podem  ter  sua  execução  acelerada  por  disposiOvo  tal  como  uma  GPU.  

Page 38: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

OpenACC  

•  O  modelo  de  execução  do  OpenACC  tem  três  níveis:  gang,  worker  e  vector.    

•  Em  GPU  pode  ser  mapeado  como:  •  gang  →  bloco  

•  worker  →  warp  

•  vector  →  threads  em  um  warp  

Page 39: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

OpenACC  

•  As  DireOvas  em  C/C++  são  especificadas  usando  #pragma  •  Método  especificado  pelo  C  padrão  para  fornecer  

informações  adicionais  ao  compilador.  •  Mesmo  uOlizado  pelo  OpenMP.  

•  Se  o  compilador  não  uOlizar  pré-­‐processamento,  as  anotações  são  ignoradas  na  compilação.  

Page 40: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

OpenACC  

•  Cada  direOva  em  C/C++  inicia  com  –   #pragma  acc  

•  Os  tokens  seguintes  são  tratados  por  uma  macro  de  pré-­‐processamento  que  aplica  as  transformações  necessárias  ao  bloco  ou  laço  imediatamente  seguinte.  

Page 41: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Intel  Xeon  Phi  •  x86  SMP-­‐on-­‐a-­‐chip  •  Linux  •  Cada  placa  tem  o  seu  próprio  endereço  IP  

% ssh mic0  •  64  bits,  SIMD  vetorial    •  Núcleos  conectados  em  anel  bidirecional  de  alta  velocidade  •  Várias  configurações  

–   >  50  núcleos  –   mulOthreading  (4  hardware  threads  por  núcleo)  

•  execução  in-­‐order  •  OpenMP,  OpenCL,  TBB,  Cilk,  MPI  •  Intel  Language  Extensions  for  Offload  

Page 42: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Intel  Xeon  Phi  

Page 43: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Intel  Ivy  Bridge  

•  Intel  OpenCL  SDK  entre  outros.  

Page 44: Computação*Heterogênea - CMSoft Chapter - Presentation...Computação*Heterogênea Programação)paralela,)clusters)e)GPUs) Profa.*Dra.*Denise*Stringhini** (ICT

Recursos  online  

•  openmp.org  •  www.nvidia.com  – www.gputechconf.com  – developer.nvidia.com    

•  www.khronos.org/opencl  •  www.openacc.org  •  www.hpcwire.com  •  souware.intel.com