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 Introdução ao Processamento Paralelo (4.2)

[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 Introdução ao Processamento Paralelo (4.2) (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

E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfamarianegodoi
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptxMarlene Cunhada
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*Viviane Moreiras
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptjricardo76
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralAntonioVieira539017
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfAutonoma
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º anoRachel Facundo
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxAntonioVieira539017
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxJustinoTeixeira1
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Cabiamar
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptxJssicaCassiano2
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLidianePaulaValezi
 

Último (20)

E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geral
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 

Introdução ao Processamento Paralelo (4.2)

  • 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