SlideShare uma empresa Scribd logo
1 de 16
OpenACC: um promissor standard
  para aceleração de códigos
           Pedro Pais Lopes
NVIDIA GPU Computing Developer Forum
         Curitiba, 17/07/2012
O que é OpenACC?
• Diretivas de compilação, na forma de pragmas
  (C/C++) ou comentários (Fortran) de alto nível,
  que orientam o compilador a executar trechos
  de código em um acelerador

• Esforço conjunto PGI + Cray + NVIDIA + CAPS,
  visando integrar padrão OpenMP

• Vide padrão em www.openacc.org
Sintaxe
• C:
   #pragma acc nome_diretiva [cláusula [,cláusula]…]
      bloco estruturado de código

• Fortran:
   !$acc nome_diretiva [cláusula [,cláusula]…]
      bloco estruturado de código
   !$acc end nome_diretiva
Exemplo #1: Jacobi
    • Converge iterativamente para um valor a
      partir da média dos pontos vizinhos
                                           0°C


           A(i+1,j)



                                    0°C           0°C
A(i-1,j)        A(i,j)   A(i+1,j)



           A(i,j-1)

                                          100°C
Código Fortran
do while ( err > tol .and. iter < iter_max )
  err=0.0
 do j=1,m
   do i=1,n
     Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + &
                        A(i , j-1) + A(i , j+1))
     err = max(err, Anew(i,j) - A(i,j))
   end do
 end do

 do j=1,m-2
   do i=1,n-2
     A(i,j) = Anew(i,j)
   end do
 end do
  iter = iter +1
end do
Inserindo OpenMP
do while ( err > tol .and. iter < iter_max )
  err=0.0
!$omp parallel do private(i,j) reduction(max:err)
  do j=1,m
    do i=1,n
      Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + &
                         A(i , j-1) + A(i , j+1))
      err = max(err, Anew(i,j) - A(i,j))
    end do
  end do
!$omp end parallel do
!$omp parallel do private(i,j)
  do j=1,m-2
    do i=1,n-2
      A(i,j) = Anew(i,j)
    end do
  end do
!$omp end parallel do
  iter = iter +1
end do
Código em Fortran e OpenACC
                Um kernel por ninho de laços
do while ( err > tol .and. iter < iter_max )
  err=0.0
!$acc kernels reduction(max:err)        Trafego GPU-CPU gerado
  do j=1,m                          automaticamente pelo compilador
    do i=1,n
      Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + &
                         A(i , j-1) + A(i , j+1))
      err = max(err, Anew(i,j) - A(i,j))
    end do
  end do
!$acc end kernels         barreira
!$acc kernels
  do j=1,m-2                                   Outro kernel
    do i=1,n-2
      A(i,j) = Anew(i,j)
    end do
  end do
!$acc end kernels
  iter = iter +1
end do
Vantagens
• Código CUDA gerado automaticamente

• Mantém portabilidade entre o código sequencial e o
  código paralelo
   – Chave de compilação define se compilador gera código
     para GPU ou não


• Trafego de dados entre a CPU e a GPU determinado
  “automaticamente” pelo compilador
CPU: Intel Xeon X5680    Desempenho        GPU: NVIDIA Tesla M2070
6 Cores @ 3.33GHz
                        (fonte: NVIDIA)
    Execução                   Tempo (s)   Speedup
    CPU 1 OpenMP thread        69.80       --
    CPU 2 OpenMP threads       44.76       1.56x
    CPU 4 OpenMP threads       39.59       1.76x

    CPU 6 OpenMP threads       39.71       1.76x

    OpenACC GPU 1 thread       162.16      0.43x OPA!
Compilador fez o melhor que pode
• Mas ele NÃO pode desrespeitar o código
1.   Enquanto condicional do while for satisfeita…
2.   copia A para a placa
3.   Computa primeiro laço
4.   Copia Anew para CPU
5.   Copia Anew para placa
6.   Computa segundo laço
7.   Copia A para a CPU
8.   Volta para 1.
Código em Fortran e OpenACC
do while ( err > tol .and. iter < iter_max )
  err=0.0
!$acc kernels reduction(max:err)
  do j=1,m
    do i=1,n
     Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + &
                        A(i , j-1) + A(i , j+1))
      err = max(err, Anew(i,j) - A(i,j))
    end do
  end do
!$acc end kernels
!$acc kernels
  do j=1,m-2
    do i=1,n-2
      A(i,j) = Anew(i,j)
    end do
  end do
!$acc end kernels
  iter = iter +1
end do
Melhoria #1
do while ( err > tol .and. iter < iter_max )
  err=0.0
!$acc kernels reduction(max:err)
  do j=1,m
    do i=1,n
      Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + &
                         A(i , j-1) + A(i , j+1))
      err = max(err, Anew(i,j) - A(i,j))
    end do
  end do
               Juntar os dois kernels em um elimina tráfego
             CPU/GPU de A e Anew entre os dois aninamentos
  do j=1,m-2
    do i=1,n-2
      A(i,j) = Anew(i,j)
    end do
  end do
!$acc end kernels
  iter = iter +1
end do
Podemos ir além (melhoria #2)
                     Envie A da CPU para a GPU no início do
                      laço e envie de volta ao final do laço
!$acc data copy(A), create(Anew)              Crie e mantenha Anew na GPU
do while ( err > tol .and. iter < iter_max )
  err=0.0
!$acc kernels reduction(max:err)
  do j=1,m
    do i=1,n
      Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + &
                           A(i , j-1) + A(i , j+1))
      err = max(err, Anew(i,j) - A(i,j))
    end do
  end do

  do j=1,m-2
    do i=1,n-2
      A(i,j) = Anew(i,j)
    end do
  end do
!$acc end kernels
  iter = iter +1
end do
!$acc end data
CPU: Intel Xeon X5680    Desempenho        GPU: NVIDIA Tesla M2070
6 Cores @ 3.33GHz
                        (fonte: NVIDIA)
    Execução                   Tempo (s)   Speedup

    CPU 1 OpenMP thread        69,80       --

    CPU 2 OpenMP threads       44,76       1,56x

    CPU 4 OpenMP threads       39,59       1,76x

    CPU 6 OpenMP threads       39,71       1,76x
                                           5,11x
    OpenACC GPU                13,65
                                           BOM!
Resumo
• Foram 3 linhas a mais para 5,11x de speedup
  – Inclusão de comentários: outros compiladores
    ignorarão esta linha e código segue inalterado
• Uso de diretivas deve ter “precisão cirúrgica”
• Corretude da computação: não somente se
  preocupar com “race conditions” mas
  também com gerenciamento de dados
  – Lembrar-se SEMPRE que temos cópia LOCAL e
    cópia REMOTA: memória não estará inicializada
Sumário
• OpenACC é forma promissora de programar
  aceleradores inserindo diretivas no programa original

• Como em OpenMP, é:
   – Incremental
   – Portátil

• Muito mais simples e fácil que CUDA, preservando o
  investimento na codificação original

Mais conteúdo relacionado

Destaque

Evitando el despilfarro en la gestión de las bodegas
Evitando el despilfarro en la gestión de las bodegasEvitando el despilfarro en la gestión de las bodegas
Evitando el despilfarro en la gestión de las bodegasManuel A. Velazquez
 
Um sexagenário no_ginásio
Um sexagenário no_ginásioUm sexagenário no_ginásio
Um sexagenário no_ginásioNuno Costa
 
Helena Farrall - Sustainable Construction Living Lab
Helena Farrall - Sustainable Construction Living LabHelena Farrall - Sustainable Construction Living Lab
Helena Farrall - Sustainable Construction Living LabConstrução Sustentável
 
La sostenibilidad como estrategia competitiva
La sostenibilidad como estrategia competitivaLa sostenibilidad como estrategia competitiva
La sostenibilidad como estrategia competitivaRicohES
 
Úlceras Diabéticas 2012 salvador - 21/09/2012
Úlceras Diabéticas 2012 salvador - 21/09/2012Úlceras Diabéticas 2012 salvador - 21/09/2012
Úlceras Diabéticas 2012 salvador - 21/09/2012Anais IV CBED
 
ERA México - Find Extra Profit
ERA México - Find Extra ProfitERA México - Find Extra Profit
ERA México - Find Extra ProfitCarlos Portilla
 
El ERPA - James A. Holtkamp 11.19.14
El ERPA - James A. Holtkamp 11.19.14El ERPA - James A. Holtkamp 11.19.14
El ERPA - James A. Holtkamp 11.19.14Holland & Hart LLP
 
Ahorro del 15% en la gestión de residuos en el Hospital de Barcelona
Ahorro del 15% en la gestión de residuos en el Hospital de BarcelonaAhorro del 15% en la gestión de residuos en el Hospital de Barcelona
Ahorro del 15% en la gestión de residuos en el Hospital de BarcelonaManuel A. Velazquez
 

Destaque (15)

HIGHLIGHT PHARMA BRAZIL BRA
HIGHLIGHT PHARMA BRAZIL BRAHIGHLIGHT PHARMA BRAZIL BRA
HIGHLIGHT PHARMA BRAZIL BRA
 
Evitando el despilfarro en la gestión de las bodegas
Evitando el despilfarro en la gestión de las bodegasEvitando el despilfarro en la gestión de las bodegas
Evitando el despilfarro en la gestión de las bodegas
 
Paula Aczel
Paula  AczelPaula  Aczel
Paula Aczel
 
Um sexagenário no_ginásio
Um sexagenário no_ginásioUm sexagenário no_ginásio
Um sexagenário no_ginásio
 
Helena Farrall - Sustainable Construction Living Lab
Helena Farrall - Sustainable Construction Living LabHelena Farrall - Sustainable Construction Living Lab
Helena Farrall - Sustainable Construction Living Lab
 
La sostenibilidad como estrategia competitiva
La sostenibilidad como estrategia competitivaLa sostenibilidad como estrategia competitiva
La sostenibilidad como estrategia competitiva
 
Úlceras Diabéticas 2012 salvador - 21/09/2012
Úlceras Diabéticas 2012 salvador - 21/09/2012Úlceras Diabéticas 2012 salvador - 21/09/2012
Úlceras Diabéticas 2012 salvador - 21/09/2012
 
Helena Farrall
Helena FarrallHelena Farrall
Helena Farrall
 
14
1414
14
 
ERA México - Find Extra Profit
ERA México - Find Extra ProfitERA México - Find Extra Profit
ERA México - Find Extra Profit
 
20140711 g salisbury_en_so
20140711 g salisbury_en_so20140711 g salisbury_en_so
20140711 g salisbury_en_so
 
El ERPA - James A. Holtkamp 11.19.14
El ERPA - James A. Holtkamp 11.19.14El ERPA - James A. Holtkamp 11.19.14
El ERPA - James A. Holtkamp 11.19.14
 
Ahorro del 15% en la gestión de residuos en el Hospital de Barcelona
Ahorro del 15% en la gestión de residuos en el Hospital de BarcelonaAhorro del 15% en la gestión de residuos en el Hospital de Barcelona
Ahorro del 15% en la gestión de residuos en el Hospital de Barcelona
 
Transporte sostenible en ciudades de México: Transición hacia una economía ba...
Transporte sostenible en ciudades de México: Transición hacia una economía ba...Transporte sostenible en ciudades de México: Transición hacia una economía ba...
Transporte sostenible en ciudades de México: Transición hacia una economía ba...
 
Helena Farrall - SCLL
Helena Farrall  - SCLLHelena Farrall  - SCLL
Helena Farrall - SCLL
 

Semelhante a OpenACC: aceleração de códigos com diretivas

[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais) [Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais) Loiane Groner
 
Arduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novoArduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novoFernando Passold
 
Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Intel Software Brasil
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoSamir Siqueira
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9Nando Vieira
 
Ruby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasRuby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasÉverton Ribeiro
 
A arquitetura básica de um computador
A arquitetura básica de um computadorA arquitetura básica de um computador
A arquitetura básica de um computadorredesinforma
 
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)Intel Software Brasil
 
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Fernando Passold
 
Introdução Programação Em Maple
Introdução Programação Em MapleIntrodução Programação Em Maple
Introdução Programação Em Maplejeandson correa
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!Intel Software Brasil
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!Luciano Palma
 
Estudo dirigido arquitetura didática unidade de controle
Estudo dirigido arquitetura didática unidade de controleEstudo dirigido arquitetura didática unidade de controle
Estudo dirigido arquitetura didática unidade de controleandrademanoel
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
38698469 slides-arduino
38698469 slides-arduino38698469 slides-arduino
38698469 slides-arduinoRui Alves
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerGlobalcode
 

Semelhante a OpenACC: aceleração de códigos com diretivas (20)

[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais) [Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
 
Arduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novoArduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novo
 
Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduino
 
Inpe
InpeInpe
Inpe
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9
 
Ruby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasRuby e Erlang de mãos dadas
Ruby e Erlang de mãos dadas
 
A arquitetura básica de um computador
A arquitetura básica de um computadorA arquitetura básica de um computador
A arquitetura básica de um computador
 
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
 
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
 
Introdução Programação Em Maple
Introdução Programação Em MapleIntrodução Programação Em Maple
Introdução Programação Em Maple
 
Cool 3 assembly para linux
Cool 3   assembly para linuxCool 3   assembly para linux
Cool 3 assembly para linux
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
 
Microprocessadores/Microcontroladores para OBC.
Microprocessadores/Microcontroladores para OBC. Microprocessadores/Microcontroladores para OBC.
Microprocessadores/Microcontroladores para OBC.
 
Estudo dirigido arquitetura didática unidade de controle
Estudo dirigido arquitetura didática unidade de controleEstudo dirigido arquitetura didática unidade de controle
Estudo dirigido arquitetura didática unidade de controle
 
Workshop de Arduino
Workshop de ArduinoWorkshop de Arduino
Workshop de Arduino
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
38698469 slides-arduino
38698469 slides-arduino38698469 slides-arduino
38698469 slides-arduino
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 

Mais de Grupo de Geofísica Computacional, UNICAMP

Fenômenos eletromagnéticos: conceitos e aplicações em Geofísica e Física
Fenômenos eletromagnéticos: conceitos e aplicações em Geofísica e FísicaFenômenos eletromagnéticos: conceitos e aplicações em Geofísica e Física
Fenômenos eletromagnéticos: conceitos e aplicações em Geofísica e FísicaGrupo de Geofísica Computacional, UNICAMP
 

Mais de Grupo de Geofísica Computacional, UNICAMP (20)

Aplicações Potenciais de Deep Learning à Indústria do Petróleo
Aplicações Potenciais de Deep Learning à Indústria do PetróleoAplicações Potenciais de Deep Learning à Indústria do Petróleo
Aplicações Potenciais de Deep Learning à Indústria do Petróleo
 
Full Waveform Inversion: Introdução e Aplicações [5/5]
Full Waveform Inversion: Introdução e Aplicações [5/5]Full Waveform Inversion: Introdução e Aplicações [5/5]
Full Waveform Inversion: Introdução e Aplicações [5/5]
 
Full Waveform Inversion: Introdução e Aplicações [4/5]
Full Waveform Inversion: Introdução e Aplicações [4/5]Full Waveform Inversion: Introdução e Aplicações [4/5]
Full Waveform Inversion: Introdução e Aplicações [4/5]
 
Full Waveform Inversion: Introdução e Aplicações [3/5]
Full Waveform Inversion: Introdução e Aplicações [3/5]Full Waveform Inversion: Introdução e Aplicações [3/5]
Full Waveform Inversion: Introdução e Aplicações [3/5]
 
Full Waveform Inversion: Introdução e Aplicações [2/5]
Full Waveform Inversion: Introdução e Aplicações [2/5]Full Waveform Inversion: Introdução e Aplicações [2/5]
Full Waveform Inversion: Introdução e Aplicações [2/5]
 
Full Waveform Inversion: Introdução e Aplicações [1/5]
Full Waveform Inversion: Introdução e Aplicações [1/5]Full Waveform Inversion: Introdução e Aplicações [1/5]
Full Waveform Inversion: Introdução e Aplicações [1/5]
 
Fenômenos eletromagnéticos: conceitos e aplicações em Geofísica e Física
Fenômenos eletromagnéticos: conceitos e aplicações em Geofísica e FísicaFenômenos eletromagnéticos: conceitos e aplicações em Geofísica e Física
Fenômenos eletromagnéticos: conceitos e aplicações em Geofísica e Física
 
Introduction to velocity model building
Introduction to velocity model buildingIntroduction to velocity model building
Introduction to velocity model building
 
Petrofísica de carbonatos do nordeste brasileiro
Petrofísica de carbonatos do nordeste brasileiroPetrofísica de carbonatos do nordeste brasileiro
Petrofísica de carbonatos do nordeste brasileiro
 
O Campo Geomagnético no Brasil
O Campo Geomagnético no BrasilO Campo Geomagnético no Brasil
O Campo Geomagnético no Brasil
 
Problemas Inversos
Problemas InversosProblemas Inversos
Problemas Inversos
 
Sismologia — Ciência dos Terremotos, onde, como e por quê? (4)
Sismologia — Ciência dos Terremotos, onde, como e por quê? (4)Sismologia — Ciência dos Terremotos, onde, como e por quê? (4)
Sismologia — Ciência dos Terremotos, onde, como e por quê? (4)
 
Sismologia — Ciência dos Terremotos, onde, como e por quê? (3)
Sismologia — Ciência dos Terremotos, onde, como e por quê? (3)Sismologia — Ciência dos Terremotos, onde, como e por quê? (3)
Sismologia — Ciência dos Terremotos, onde, como e por quê? (3)
 
Sismologia — Ciência dos Terremotos, onde, como e por quê? (2)
Sismologia — Ciência dos Terremotos, onde, como e por quê? (2)Sismologia — Ciência dos Terremotos, onde, como e por quê? (2)
Sismologia — Ciência dos Terremotos, onde, como e por quê? (2)
 
Sismologia — Ciência dos Terremotos, onde, como e por quê? (1)
Sismologia — Ciência dos Terremotos, onde, como e por quê? (1)Sismologia — Ciência dos Terremotos, onde, como e por quê? (1)
Sismologia — Ciência dos Terremotos, onde, como e por quê? (1)
 
Aspectos de modelagem e imageamento usando equação da onda
Aspectos de modelagem e imageamento usando equação da ondaAspectos de modelagem e imageamento usando equação da onda
Aspectos de modelagem e imageamento usando equação da onda
 
Introdução ao Processamento Paralelo (4.1)
Introdução ao Processamento Paralelo (4.1)Introdução ao Processamento Paralelo (4.1)
Introdução ao Processamento Paralelo (4.1)
 
Introdução ao Processamento Paralelo (3)
Introdução ao Processamento Paralelo (3)Introdução ao Processamento Paralelo (3)
Introdução ao Processamento Paralelo (3)
 
Introdução ao Processamento Paralelo (2)
Introdução ao Processamento Paralelo (2)Introdução ao Processamento Paralelo (2)
Introdução ao Processamento Paralelo (2)
 
Introdução ao Processamento Paralelo (1)
Introdução ao Processamento Paralelo (1)Introdução ao Processamento Paralelo (1)
Introdução ao Processamento Paralelo (1)
 

Último

QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASEdinardo Aguiar
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfIedaGoethe
 
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdfProfGleide
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxconcelhovdragons
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxIsabellaGomes58
 
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.HildegardeAngel
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfIedaGoethe
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileirosMary Alvarenga
 
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdf
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdforganizaao-do-clube-de-lideres-ctd-aamar_compress.pdf
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdfCarlosRodrigues832670
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISVitor Vieira Vasconcelos
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...Martin M Flynn
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 anoAdelmaTorres2
 
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxFree-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxkarinasantiago54
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira partecoletivoddois
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPanandatss1
 
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxSlides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxLuizHenriquedeAlmeid6
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Mapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdfMapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdfangelicass1
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 

Último (20)

QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
 
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
 
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdf
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros
 
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdf
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdforganizaao-do-clube-de-lideres-ctd-aamar_compress.pdf
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdf
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGIS
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
 
treinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppttreinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppt
 
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxFree-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parte
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SP
 
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxSlides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
Mapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdfMapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdf
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 

OpenACC: aceleração de códigos com diretivas

  • 1. OpenACC: um promissor standard para aceleração de códigos Pedro Pais Lopes NVIDIA GPU Computing Developer Forum Curitiba, 17/07/2012
  • 2. O que é OpenACC? • Diretivas de compilação, na forma de pragmas (C/C++) ou comentários (Fortran) de alto nível, que orientam o compilador a executar trechos de código em um acelerador • Esforço conjunto PGI + Cray + NVIDIA + CAPS, visando integrar padrão OpenMP • Vide padrão em www.openacc.org
  • 3. Sintaxe • C: #pragma acc nome_diretiva [cláusula [,cláusula]…] bloco estruturado de código • Fortran: !$acc nome_diretiva [cláusula [,cláusula]…] bloco estruturado de código !$acc end nome_diretiva
  • 4. Exemplo #1: Jacobi • Converge iterativamente para um valor a partir da média dos pontos vizinhos 0°C A(i+1,j) 0°C 0°C A(i-1,j) A(i,j) A(i+1,j) A(i,j-1) 100°C
  • 5. Código Fortran do while ( err > tol .and. iter < iter_max ) err=0.0 do j=1,m do i=1,n Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + & A(i , j-1) + A(i , j+1)) err = max(err, Anew(i,j) - A(i,j)) end do end do do j=1,m-2 do i=1,n-2 A(i,j) = Anew(i,j) end do end do iter = iter +1 end do
  • 6. Inserindo OpenMP do while ( err > tol .and. iter < iter_max ) err=0.0 !$omp parallel do private(i,j) reduction(max:err) do j=1,m do i=1,n Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + & A(i , j-1) + A(i , j+1)) err = max(err, Anew(i,j) - A(i,j)) end do end do !$omp end parallel do !$omp parallel do private(i,j) do j=1,m-2 do i=1,n-2 A(i,j) = Anew(i,j) end do end do !$omp end parallel do iter = iter +1 end do
  • 7. Código em Fortran e OpenACC Um kernel por ninho de laços do while ( err > tol .and. iter < iter_max ) err=0.0 !$acc kernels reduction(max:err) Trafego GPU-CPU gerado do j=1,m automaticamente pelo compilador do i=1,n Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + & A(i , j-1) + A(i , j+1)) err = max(err, Anew(i,j) - A(i,j)) end do end do !$acc end kernels barreira !$acc kernels do j=1,m-2 Outro kernel do i=1,n-2 A(i,j) = Anew(i,j) end do end do !$acc end kernels iter = iter +1 end do
  • 8. Vantagens • Código CUDA gerado automaticamente • Mantém portabilidade entre o código sequencial e o código paralelo – Chave de compilação define se compilador gera código para GPU ou não • Trafego de dados entre a CPU e a GPU determinado “automaticamente” pelo compilador
  • 9. CPU: Intel Xeon X5680 Desempenho GPU: NVIDIA Tesla M2070 6 Cores @ 3.33GHz (fonte: NVIDIA) Execução Tempo (s) Speedup CPU 1 OpenMP thread 69.80 -- CPU 2 OpenMP threads 44.76 1.56x CPU 4 OpenMP threads 39.59 1.76x CPU 6 OpenMP threads 39.71 1.76x OpenACC GPU 1 thread 162.16 0.43x OPA!
  • 10. Compilador fez o melhor que pode • Mas ele NÃO pode desrespeitar o código 1. Enquanto condicional do while for satisfeita… 2. copia A para a placa 3. Computa primeiro laço 4. Copia Anew para CPU 5. Copia Anew para placa 6. Computa segundo laço 7. Copia A para a CPU 8. Volta para 1.
  • 11. Código em Fortran e OpenACC do while ( err > tol .and. iter < iter_max ) err=0.0 !$acc kernels reduction(max:err) do j=1,m do i=1,n Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + & A(i , j-1) + A(i , j+1)) err = max(err, Anew(i,j) - A(i,j)) end do end do !$acc end kernels !$acc kernels do j=1,m-2 do i=1,n-2 A(i,j) = Anew(i,j) end do end do !$acc end kernels iter = iter +1 end do
  • 12. Melhoria #1 do while ( err > tol .and. iter < iter_max ) err=0.0 !$acc kernels reduction(max:err) do j=1,m do i=1,n Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + & A(i , j-1) + A(i , j+1)) err = max(err, Anew(i,j) - A(i,j)) end do end do Juntar os dois kernels em um elimina tráfego CPU/GPU de A e Anew entre os dois aninamentos do j=1,m-2 do i=1,n-2 A(i,j) = Anew(i,j) end do end do !$acc end kernels iter = iter +1 end do
  • 13. Podemos ir além (melhoria #2) Envie A da CPU para a GPU no início do laço e envie de volta ao final do laço !$acc data copy(A), create(Anew) Crie e mantenha Anew na GPU do while ( err > tol .and. iter < iter_max ) err=0.0 !$acc kernels reduction(max:err) do j=1,m do i=1,n Anew(i,j) = .25 * (A(i+1, j ) + A(i-1, j ) + & A(i , j-1) + A(i , j+1)) err = max(err, Anew(i,j) - A(i,j)) end do end do do j=1,m-2 do i=1,n-2 A(i,j) = Anew(i,j) end do end do !$acc end kernels iter = iter +1 end do !$acc end data
  • 14. CPU: Intel Xeon X5680 Desempenho GPU: NVIDIA Tesla M2070 6 Cores @ 3.33GHz (fonte: NVIDIA) Execução Tempo (s) Speedup CPU 1 OpenMP thread 69,80 -- CPU 2 OpenMP threads 44,76 1,56x CPU 4 OpenMP threads 39,59 1,76x CPU 6 OpenMP threads 39,71 1,76x 5,11x OpenACC GPU 13,65 BOM!
  • 15. Resumo • Foram 3 linhas a mais para 5,11x de speedup – Inclusão de comentários: outros compiladores ignorarão esta linha e código segue inalterado • Uso de diretivas deve ter “precisão cirúrgica” • Corretude da computação: não somente se preocupar com “race conditions” mas também com gerenciamento de dados – Lembrar-se SEMPRE que temos cópia LOCAL e cópia REMOTA: memória não estará inicializada
  • 16. Sumário • OpenACC é forma promissora de programar aceleradores inserindo diretivas no programa original • Como em OpenMP, é: – Incremental – Portátil • Muito mais simples e fácil que CUDA, preservando o investimento na codificação original