• Like
Otimização de Desempenho em GPGPU e CUDA
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Otimização de Desempenho em GPGPU e CUDA

  • 261 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
261
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
11
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eConsidera¸oes de Desempenho em CUDA c˜ (Parte 1/3) Th´rsis T. P. Souza a t.souza@usp.br Instituto de Matem´tica e Estat´ a ıstica Universidade de S˜o Paulo a 29 de abril de 2011 Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 2. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eConfigura¸˜o de Ambiente ca Enquanto n˜o for dito o contr´rio ou citada respectiva referˆncia, a a e neste trabalho, considera-se a seguinte configura¸˜o: ca Sistema Operacional Ubuntu Linux 10.04 CUDA Toolkit vers˜o 3.2 a Arquitetura NVIDIA Fermi Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 3. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eAgenda 1 Revis˜o CUDA a 2 Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Tempo em CUDA Largura de Banda em GPU 3 Execu¸˜o Concorrente Ass´ ca ıncrona Transferˆncia de Dados Host-Device e Kernels Paralelos 4 Conclus˜o a 5 Referˆncias e Th´rsis T. P. Souza (USP) a Considera¸oes de Desempenho em CUDA c˜
  • 4. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eAgenda 1 Revis˜o CUDA a 2 Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Tempo em CUDA Largura de Banda em GPU 3 Execu¸˜o Concorrente Ass´ ca ıncrona Transferˆncia de Dados Host-Device e Kernels Paralelos 4 Conclus˜o a 5 Referˆncias e Th´rsis T. P. Souza (USP) a Considera¸oes de Desempenho em CUDA c˜
  • 5. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eArquitetura Fermi Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 6. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eTipos de Mem´ria o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 7. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eHierarquia de Threads Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 8. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eCUDA C Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 9. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eModelo Heterogˆneo de Computa¸˜o e ca Figura: Fluxo de execu¸˜o CUDA ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 10. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eAgenda 1 Revis˜o CUDA a 2 Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Tempo em CUDA Largura de Banda em GPU 3 Execu¸˜o Concorrente Ass´ ca ıncrona Transferˆncia de Dados Host-Device e Kernels Paralelos 4 Conclus˜o a 5 Referˆncias e Th´rsis T. P. Souza (USP) a Considera¸oes de Desempenho em CUDA c˜
  • 11. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eDesempenho Sequencial x Paralelo Tempo de execu¸˜o sequencial ´ fun¸˜o de ca e ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 12. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eDesempenho Sequencial x Paralelo Tempo de execu¸˜o sequencial ´ fun¸˜o de ca e ca tamanho da entrada Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 13. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eDesempenho Sequencial x Paralelo Tempo de execu¸˜o sequencial ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 14. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eDesempenho Sequencial x Paralelo Tempo de execu¸˜o sequencial ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o Tempo de execu¸˜o paralela ´ fun¸˜o de ca e ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 15. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eDesempenho Sequencial x Paralelo Tempo de execu¸˜o sequencial ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o Tempo de execu¸˜o paralela ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 16. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eDesempenho Sequencial x Paralelo Tempo de execu¸˜o sequencial ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o Tempo de execu¸˜o paralela ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o n´mero de processadores u Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 17. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eDesempenho Sequencial x Paralelo Tempo de execu¸˜o sequencial ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o Tempo de execu¸˜o paralela ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o n´mero de processadores u parˆmetros de comunica¸˜o da arquitetura alvo a ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 18. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eDesempenho Sequencial x Paralelo Tempo de execu¸˜o sequencial ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o Tempo de execu¸˜o paralela ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o n´mero de processadores u parˆmetros de comunica¸˜o da arquitetura alvo a ca Implica¸˜es co Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 19. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eDesempenho Sequencial x Paralelo Tempo de execu¸˜o sequencial ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o Tempo de execu¸˜o paralela ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o n´mero de processadores u parˆmetros de comunica¸˜o da arquitetura alvo a ca Implica¸˜es co necess´rio analisar algoritmos paralelos para uma arquitetura a alvo particular Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 20. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eDesempenho Sequencial x Paralelo Tempo de execu¸˜o sequencial ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o Tempo de execu¸˜o paralela ´ fun¸˜o de ca e ca tamanho da entrada espa¸o (mem´ria) c o n´mero de processadores u parˆmetros de comunica¸˜o da arquitetura alvo a ca Implica¸˜es co necess´rio analisar algoritmos paralelos para uma arquitetura a alvo particular sistema paralelo = algoritmo paralelo + arquitetura Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 21. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eAgenda 1 Revis˜o CUDA a 2 Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Tempo em CUDA Largura de Banda em GPU 3 Execu¸˜o Concorrente Ass´ ca ıncrona Transferˆncia de Dados Host-Device e Kernels Paralelos 4 Conclus˜o a 5 Referˆncias e Th´rsis T. P. Souza (USP) a Considera¸oes de Desempenho em CUDA c˜
  • 22. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eM´tricas de Desempenho e M´tricas de Desempenho mais comuns : e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 23. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eM´tricas de Desempenho e M´tricas de Desempenho mais comuns : e speedup Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 24. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eM´tricas de Desempenho e M´tricas de Desempenho mais comuns : e speedup efficiency Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 25. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eM´tricas de Desempenho e M´tricas de Desempenho mais comuns : e speedup efficiency scalability Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 26. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eM´tricas de Desempenho e M´tricas de Desempenho mais comuns : e speedup efficiency scalability sustained FLOPS rates Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 27. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eSpeedup Raz˜o entre o tempo da solu¸˜o do algoritmo executado em um a ca unico processador e o tempo da solu¸˜o do mesmo algoritmo em ´ ca m´ltiplos processadores: u Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 28. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eSpeedup Raz˜o entre o tempo da solu¸˜o do algoritmo executado em um a ca unico processador e o tempo da solu¸˜o do mesmo algoritmo em ´ ca m´ltiplos processadores: u Sp = T1 /Tp Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 29. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eSpeedup Raz˜o entre o tempo da solu¸˜o do algoritmo executado em um a ca unico processador e o tempo da solu¸˜o do mesmo algoritmo em ´ ca m´ltiplos processadores: u Sp = T1 /Tp onde, p corresponde ao n´mero de processadores u Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 30. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eSpeedup Raz˜o entre o tempo da solu¸˜o do algoritmo executado em um a ca unico processador e o tempo da solu¸˜o do mesmo algoritmo em ´ ca m´ltiplos processadores: u Sp = T1 /Tp onde, p corresponde ao n´mero de processadores u T1 ´ o tempo de execu¸˜o do algoritmo sequencial e ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 31. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eSpeedup Raz˜o entre o tempo da solu¸˜o do algoritmo executado em um a ca unico processador e o tempo da solu¸˜o do mesmo algoritmo em ´ ca m´ltiplos processadores: u Sp = T1 /Tp onde, p corresponde ao n´mero de processadores u T1 ´ o tempo de execu¸˜o do algoritmo sequencial e ca Tp ´ o tempo do algoritmo paralelo em p processadores e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 32. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eSpeedup Sp = p, Linear speedup Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 33. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eSpeedup Sp = p, Linear speedup Sp < p, Sub-linear speedup Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 34. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eSpeedup Sp = p, Linear speedup Sp < p, Sub-linear speedup Sp > p, Super-linear speedup Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 35. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eLei de Amdahl M´ximo speedup (S) esperado ao paralelizar uma certa por¸˜o de a ca um programa sequencial: 1 S= P (1 − P) + N onde, P ´ a fra¸˜o do tempo gasto pelo programa serial da parte e ca do c´digo que pode ser paralelizado e N ´ o n´mero de o e u processadores sobre o qual o c´digo paraleliz´vel roda. o a Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 36. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eLei de Amdahl Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 37. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eLei de Amdahl Boa pr´tica a Para maximizar desempenho, antes de mais nada, busque formas de paralelizar o c´digo sequencial. o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 38. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eEfficiency Raz˜o entre o speedup e o n´mero de processadores: a u Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 39. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eEfficiency Raz˜o entre o speedup e o n´mero de processadores: a u T1 Ep = Sp /p = pTp Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 40. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eEfficiency Raz˜o entre o speedup e o n´mero de processadores: a u T1 Ep = Sp /p = pTp Estima qu˜o bem os processadores est˜o sendo utilizados, tendo a a em vista o tempo gasto em overhead como: sincroniza¸˜o e troca ca de mensagens. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 41. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eScalability Capacidade do algoritmo de resolver um problema n vezes maior em n vezes mais processadores [Gray, 1992]: Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 42. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eScalability Capacidade do algoritmo de resolver um problema n vezes maior em n vezes mais processadores [Gray, 1992]: Tempo para resolver um problema de tamanho m em p processadores Scaleup(p, n) = Tempo para resolver um problema de tamanho nm em np processadores Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 43. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eSustained FLOPS rates FLOPS: Floating-point Operations per Second Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 44. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eSustained FLOPS rates FLOPS: Floating-point Operations per Second A taxa sustentada de FLOPS mede qu˜o bem uma a implementa¸˜o espec´ ca ıfica explora a arquitetura alvo Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 45. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eFLOPS Fal´cia: FLOPS ´ uma boa m´trica de desempenho a e e Essa m´trica n˜o indica necessariamente que um algoritmo ´ e a e eficiente Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 46. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eFLOPS Fal´cia: FLOPS ´ uma boa m´trica de desempenho a e e Essa m´trica n˜o indica necessariamente que um algoritmo ´ e a e eficiente Um algoritmo alternativo com menor FLOPS pode resolver um problema mais rapidamente Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 47. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eConclus˜o M´tricas de Desempenho a e Cuidado ao estender erradamente m´tricas que valem para um e contexto espec´ ıficos. Ex.: microbenchmarks, FLOPS de pico Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 48. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eConclus˜o M´tricas de Desempenho a e Cuidado ao estender erradamente m´tricas que valem para um e contexto espec´ ıficos. Ex.: microbenchmarks, FLOPS de pico Tempo de execu¸˜o ´ a unica medida v´lida para desempenho ca e ´ a [Hennessy, 2004] Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 49. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eConclus˜o M´tricas de Desempenho a e Cuidado ao estender erradamente m´tricas que valem para um e contexto espec´ ıficos. Ex.: microbenchmarks, FLOPS de pico Tempo de execu¸˜o ´ a unica medida v´lida para desempenho ca e ´ a [Hennessy, 2004] Qualquer m´trica deve estar vinculada ao tempo de execu¸˜o e ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 50. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eConclus˜o M´tricas de Desempenho a e Cuidado ao estender erradamente m´tricas que valem para um e contexto espec´ ıficos. Ex.: microbenchmarks, FLOPS de pico Tempo de execu¸˜o ´ a unica medida v´lida para desempenho ca e ´ a [Hennessy, 2004] Qualquer m´trica deve estar vinculada ao tempo de execu¸˜o e ca Boa pr´tica a Utilize o tempo de execu¸˜o como medida de desempenho. ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 51. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eAgenda 1 Revis˜o CUDA a 2 Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Tempo em CUDA Largura de Banda em GPU 3 Execu¸˜o Concorrente Ass´ ca ıncrona Transferˆncia de Dados Host-Device e Kernels Paralelos 4 Conclus˜o a 5 Referˆncias e Th´rsis T. P. Souza (USP) a Considera¸oes de Desempenho em CUDA c˜
  • 52. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eMedindo Tempo Podemos medir tempos de execu¸˜o em CUDA utilizando tanto ca m´todos tradicionais de CPU quanto GPU timers. Entretanto, h´ e a alguns aspectos a serem levados em considera¸˜o: ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 53. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eMedindo Tempo Podemos medir tempos de execu¸˜o em CUDA utilizando tanto ca m´todos tradicionais de CPU quanto GPU timers. Entretanto, h´ e a alguns aspectos a serem levados em considera¸˜o: ca Chamadas a CUDA API podem ser ass´ ıncronas. Ex.: lan¸amento de kernels. Neste caso ´ necess´rio garantir a c e a sincronia de threads ao utilizar temporizadores em CPU. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 54. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eMedindo Tempo Podemos medir tempos de execu¸˜o em CUDA utilizando tanto ca m´todos tradicionais de CPU quanto GPU timers. Entretanto, h´ e a alguns aspectos a serem levados em considera¸˜o: ca Chamadas a CUDA API podem ser ass´ ıncronas. Ex.: lan¸amento de kernels. Neste caso ´ necess´rio garantir a c e a sincronia de threads ao utilizar temporizadores em CPU. Deve-se tomar cuidado ao criar pontos de sincroniza¸˜o em ca CPU. Isso pode causar stall em GPU. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 55. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eMedindo Tempo Podemos medir tempos de execu¸˜o em CUDA utilizando tanto ca m´todos tradicionais de CPU quanto GPU timers. Entretanto, h´ e a alguns aspectos a serem levados em considera¸˜o: ca Chamadas a CUDA API podem ser ass´ ıncronas. Ex.: lan¸amento de kernels. Neste caso ´ necess´rio garantir a c e a sincronia de threads ao utilizar temporizadores em CPU. Deve-se tomar cuidado ao criar pontos de sincroniza¸˜o em ca CPU. Isso pode causar stall em GPU. Temporiza¸˜o em GPU ´ tipicamente realizada utilizando ca e GPU Events. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 56. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eCPU Timer Ao utilizar temporizadores de CPU, para medir corretamente o tempo transcorrido em uma chamada ou sequˆncia de chamadas e em CUDA, ´ necess´rio sincronizar a thread da CPU com a GPU e a chamando cudaThreadSynchronize() imediatamente antes e depois de iniciar o temporizador na CPU. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 57. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eCPU Timer Ao utilizar temporizadores de CPU, para medir corretamente o tempo transcorrido em uma chamada ou sequˆncia de chamadas e em CUDA, ´ necess´rio sincronizar a thread da CPU com a GPU e a chamando cudaThreadSynchronize() imediatamente antes e depois de iniciar o temporizador na CPU. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 58. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eCUDA Events Exemplo utilizando CUDA Events: Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 59. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eAgenda 1 Revis˜o CUDA a 2 Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Tempo em CUDA Largura de Banda em GPU 3 Execu¸˜o Concorrente Ass´ ca ıncrona Transferˆncia de Dados Host-Device e Kernels Paralelos 4 Conclus˜o a 5 Referˆncias e Th´rsis T. P. Souza (USP) a Considera¸oes de Desempenho em CUDA c˜
  • 60. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eConsidera¸oes de Throughput c˜ Transferˆncia de dados entre host e device ´ custosa. e e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 61. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eConsidera¸oes de Throughput c˜ Transferˆncia de dados entre host e device ´ custosa. e e A complexidade das opera¸˜es deve justificar o custo da co transferˆncia via PCIe. e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 62. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eConsidera¸oes de Throughput c˜ Transferˆncia de dados entre host e device ´ custosa. e e A complexidade das opera¸˜es deve justificar o custo da co transferˆncia via PCIe. e Dados devem ser mantidos em device o m´ximo poss´ para a ıvel evitar retransmiss˜o. a Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 63. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eM´trica de Throughput e De modo geral, para aumento de desempenho, deseja-se maximar a rela¸˜o: n´mero de opera¸˜es de ponto flutuante em GPU por ca u co elemento de dado transferido via PCIe. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 64. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eM´trica de Throughput e De modo geral, para aumento de desempenho, deseja-se maximar a rela¸˜o: n´mero de opera¸˜es de ponto flutuante em GPU por ca u co elemento de dado transferido via PCIe. Ex.: Para soma de duas matrizes N × N, h´ 3N 2 transferˆncias de a e dados e N 2 opera¸˜es. co Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 65. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eM´trica de Throughput e De modo geral, para aumento de desempenho, deseja-se maximar a rela¸˜o: n´mero de opera¸˜es de ponto flutuante em GPU por ca u co elemento de dado transferido via PCIe. Ex.: Para soma de duas matrizes N × N, h´ 3N 2 transferˆncias de a e dados e N 2 opera¸˜es. Portanto, a rela¸˜o ´ de apenas 1:3 ou co ca e O(1). Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 66. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eM´trica de Throughput e De modo geral, para aumento de desempenho, deseja-se maximar a rela¸˜o: n´mero de opera¸˜es de ponto flutuante em GPU por ca u co elemento de dado transferido via PCIe. Ex.: Para soma de duas matrizes N × N, h´ 3N 2 transferˆncias de a e dados e N 2 opera¸˜es. Portanto, a rela¸˜o ´ de apenas 1:3 ou co ca e O(1). Para uma multiplica¸˜o das mesmas matrizes, ter´ ca ıamos uma rela¸˜o O(N). ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 67. Revis˜o CUDA a Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Execu¸˜o Concorrente Ass´ ca ıncrona Tempo em CUDA Conclus˜o a Largura de Banda em GPU Referˆncias eM´trica de Throughput e De modo geral, para aumento de desempenho, deseja-se maximar a rela¸˜o: n´mero de opera¸˜es de ponto flutuante em GPU por ca u co elemento de dado transferido via PCIe. Ex.: Para soma de duas matrizes N × N, h´ 3N 2 transferˆncias de a e dados e N 2 opera¸˜es. Portanto, a rela¸˜o ´ de apenas 1:3 ou co ca e O(1). Para uma multiplica¸˜o das mesmas matrizes, ter´ ca ıamos uma rela¸˜o O(N). ca Boa pr´tica a Minimizar transferˆncia de dados entre Host e Device. e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 68. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eAgenda 1 Revis˜o CUDA a 2 Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Tempo em CUDA Largura de Banda em GPU 3 Execu¸˜o Concorrente Ass´ ca ıncrona Transferˆncia de Dados Host-Device e Kernels Paralelos 4 Conclus˜o a 5 Referˆncias e Th´rsis T. P. Souza (USP) a Considera¸oes de Desempenho em CUDA c˜
  • 69. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Concorrente Host-Device ca Para facilitar execu¸˜o concorrente entre host e device, algumas ca chamadas de fun¸˜o s˜o ass´ ca a ıncronas: controle ´ retornado para e thread do host antes que o device complete as tarefas requisitadas. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 70. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Concorrente Host-Device ca Para facilitar execu¸˜o concorrente entre host e device, algumas ca chamadas de fun¸˜o s˜o ass´ ca a ıncronas: controle ´ retornado para e thread do host antes que o device complete as tarefas requisitadas. Dois tipos de execu¸˜o concorrente s˜o particurlamente ca a importantes de serem analisadas: Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 71. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Concorrente Host-Device ca Para facilitar execu¸˜o concorrente entre host e device, algumas ca chamadas de fun¸˜o s˜o ass´ ca a ıncronas: controle ´ retornado para e thread do host antes que o device complete as tarefas requisitadas. Dois tipos de execu¸˜o concorrente s˜o particurlamente ca a importantes de serem analisadas: Overlap em transferˆncia de dados e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 72. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Concorrente Host-Device ca Para facilitar execu¸˜o concorrente entre host e device, algumas ca chamadas de fun¸˜o s˜o ass´ ca a ıncronas: controle ´ retornado para e thread do host antes que o device complete as tarefas requisitadas. Dois tipos de execu¸˜o concorrente s˜o particurlamente ca a importantes de serem analisadas: Overlap em transferˆncia de dados e Execu¸˜o de Kernels paralelos ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 73. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Concorrente Host-Device ca Para facilitar execu¸˜o concorrente entre host e device, algumas ca chamadas de fun¸˜o s˜o ass´ ca a ıncronas: controle ´ retornado para e thread do host antes que o device complete as tarefas requisitadas. Dois tipos de execu¸˜o concorrente s˜o particurlamente ca a importantes de serem analisadas: Overlap em transferˆncia de dados e Execu¸˜o de Kernels paralelos ca Para verificar se o device permite tais tipos de concorrˆncia, e deve-se executar a chamada cudaGetDeviceProperties() e checar os atributos deviceOverlap e concurrentKernels. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 74. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eAgenda 1 Revis˜o CUDA a 2 Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Tempo em CUDA Largura de Banda em GPU 3 Execu¸˜o Concorrente Ass´ ca ıncrona Transferˆncia de Dados Host-Device e Kernels Paralelos 4 Conclus˜o a 5 Referˆncias e Th´rsis T. P. Souza (USP) a Considera¸oes de Desempenho em CUDA c˜
  • 75. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eTransferˆncia de Dados Host-Device e O maior gargalo em processamento em GPU ´ a transferˆncia via e e PCIe. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 76. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eTransferˆncia de Dados Host-Device e O maior gargalo em processamento em GPU ´ a transferˆncia via e e PCIe. Ao alocar mem´ria em CPU que vai ser utilizado para transferir o dados para GPU, h´ dois tipos de mem´ria poss´ a o ıveis: Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 77. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eTransferˆncia de Dados Host-Device e O maior gargalo em processamento em GPU ´ a transferˆncia via e e PCIe. Ao alocar mem´ria em CPU que vai ser utilizado para transferir o dados para GPU, h´ dois tipos de mem´ria poss´ a o ıveis: pinned memory (page-locked memory ) Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 78. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eTransferˆncia de Dados Host-Device e O maior gargalo em processamento em GPU ´ a transferˆncia via e e PCIe. Ao alocar mem´ria em CPU que vai ser utilizado para transferir o dados para GPU, h´ dois tipos de mem´ria poss´ a o ıveis: pinned memory (page-locked memory ) non-pinned memory (pageable memory ) Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 79. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias enon-Pinned Memory Figura: C´pia tradicional host-device via PCIe. o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 80. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias enon-Pinned Memory Figura: C´pia tradicional host-device via PCIe. o malloc / free s˜o fun¸˜es que utilizam non-pinned memory a co Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 81. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias enon-Pinned Memory Figura: C´pia tradicional host-device via PCIe. o malloc / free s˜o fun¸˜es que utilizam non-pinned memory a co transferˆncia host-device ´ relativamente lenta e e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 82. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory Figura: C´pia host-device utlizando via PCIe em buffer pinned-memory o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 83. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory Figura: C´pia host-device utlizando via PCIe em buffer pinned-memory o Pinned Memory possibilita Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 84. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory Figura: C´pia host-device utlizando via PCIe em buffer pinned-memory o Pinned Memory possibilita c´pia via PCIe mais r´pidas ( 2x) o a Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 85. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory Figura: C´pia host-device utlizando via PCIe em buffer pinned-memory o Pinned Memory possibilita c´pia via PCIe mais r´pidas ( 2x) o a c´pias ass´ o ıncronas de mem´ria o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 86. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory Figura: C´pia host-device utlizando via PCIe em buffer pinned-memory o Pinned Memory possibilita c´pia via PCIe mais r´pidas ( 2x) o a c´pias ass´ o ıncronas de mem´ria o Uso via RunTime API Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 87. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory Figura: C´pia host-device utlizando via PCIe em buffer pinned-memory o Pinned Memory possibilita c´pia via PCIe mais r´pidas ( 2x) o a c´pias ass´ o ıncronas de mem´ria o Uso via RunTime API cudaHostAlloc (ou cudaMallocHost) / cudaFreeHost Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 88. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory Figura: C´pia host-device utlizando via PCIe em buffer pinned-memory o Pinned Memory possibilita c´pia via PCIe mais r´pidas ( 2x) o a c´pias ass´ o ıncronas de mem´ria o Uso via RunTime API cudaHostAlloc (ou cudaMallocHost) / cudaFreeHost em vez de malloc / free Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 89. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory x Non-Pinned Memory Figura: Tempo de transferˆncia de mem´ria em fun¸˜o de MegaBytes transferidos e o ca [2]. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 90. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory x Non-Pinned Memory Fal´cia: Pinned Memory = Maior Desempenho a Uso de Pinned Memory acelera c´pia via PCIe, logo sempre devo o utilizar esse tipo de mem´ria visando a um aumento de o desempenho. Errado! Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 91. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory x Non-Pinned Memory Fal´cia: Pinned Memory = Maior Desempenho a Uso de Pinned Memory acelera c´pia via PCIe, logo sempre devo o utilizar esse tipo de mem´ria visando a um aumento de o desempenho. Errado! Pinned Memory n˜o deve ser super utilizada a Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 92. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory x Non-Pinned Memory Fal´cia: Pinned Memory = Maior Desempenho a Uso de Pinned Memory acelera c´pia via PCIe, logo sempre devo o utilizar esse tipo de mem´ria visando a um aumento de o desempenho. Errado! Pinned Memory n˜o deve ser super utilizada a H´ consider´vel overhead em sua utiliza¸˜o a a ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 93. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory x Non-Pinned Memory Fal´cia: Pinned Memory = Maior Desempenho a Uso de Pinned Memory acelera c´pia via PCIe, logo sempre devo o utilizar esse tipo de mem´ria visando a um aumento de o desempenho. Errado! Pinned Memory n˜o deve ser super utilizada a H´ consider´vel overhead em sua utiliza¸˜o a a ca Uso n˜o planejado pode causar perda de desempenho a Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 94. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory x Non-Pinned Memory Fal´cia: Pinned Memory = Maior Desempenho a Uso de Pinned Memory acelera c´pia via PCIe, logo sempre devo o utilizar esse tipo de mem´ria visando a um aumento de o desempenho. Errado! Pinned Memory n˜o deve ser super utilizada a H´ consider´vel overhead em sua utiliza¸˜o a a ca Uso n˜o planejado pode causar perda de desempenho a Quantidade ´tima a ser utilizada depende da aplica¸˜o o ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 95. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory x Non-Pinned Memory: Overhead Figura: Tempo de aloca¸˜o de mem´ria em fun¸˜o do n´mero de bytes ca o ca u alocados/liberados por chamada [2]. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 96. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory x Non-Pinned Memory: Qual utilizar? Figura: Tempo requerido para alocar, transferir para GPU, transferir de volta para CPU e desalocar mem´ria [2]. o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 97. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias ePinned Memory Boa pr´tica a Considere o uso de Pinned Memory ao transferir dados da CPU para GPU. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 98. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia Host-Device e Transferˆncia de dados host-device utilizando cudaMemcpy() e ´ bloqueante e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 99. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia Host-Device e Transferˆncia de dados host-device utilizando cudaMemcpy() e ´ bloqueante e cudaMemcpyAsync() ´ uma variante ass´ e ıncrona do cudaMemcpy() Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 100. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia Host-Device e Transferˆncia de dados host-device utilizando cudaMemcpy() e ´ bloqueante e cudaMemcpyAsync() ´ uma variante ass´ e ıncrona do cudaMemcpy() cudaMemcpyAsync() requer pinned memory e identifica¸˜o de ca stream Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 101. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia Host-Device e Transferˆncia de dados host-device utilizando cudaMemcpy() e ´ bloqueante e cudaMemcpyAsync() ´ uma variante ass´ e ıncrona do cudaMemcpy() cudaMemcpyAsync() requer pinned memory e identifica¸˜o de ca stream Pode-se obter overlap de duas formas: Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 102. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia Host-Device e Transferˆncia de dados host-device utilizando cudaMemcpy() e ´ bloqueante e cudaMemcpyAsync() ´ uma variante ass´ e ıncrona do cudaMemcpy() cudaMemcpyAsync() requer pinned memory e identifica¸˜o de ca stream Pode-se obter overlap de duas formas: Enquanto mem´ria ´ transferida para GPU e kernel ´ o e e executado, pode-se sobrepor computa¸˜o em CPU ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 103. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia Host-Device e Transferˆncia de dados host-device utilizando cudaMemcpy() e ´ bloqueante e cudaMemcpyAsync() ´ uma variante ass´ e ıncrona do cudaMemcpy() cudaMemcpyAsync() requer pinned memory e identifica¸˜o de ca stream Pode-se obter overlap de duas formas: Enquanto mem´ria ´ transferida para GPU e kernel ´ o e e executado, pode-se sobrepor computa¸˜o em CPU ca Pode-se intervalar transferˆncia de dados host-device com e execu¸˜o de kernels ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 104. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eStreams Um stream ´ uma sequˆncia de comandos que ´ executada em e e e ordem Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 105. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eStreams Um stream ´ uma sequˆncia de comandos que ´ executada em e e e ordem N˜o h´ ordena¸˜o entre comandos de diferentes streams a a ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 106. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eStreams Um stream ´ uma sequˆncia de comandos que ´ executada em e e e ordem N˜o h´ ordena¸˜o entre comandos de diferentes streams a a ca Concorrˆncia em CUDA ´ gerenciada por meio de streams e e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 107. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eStreams Um stream ´ uma sequˆncia de comandos que ´ executada em e e e ordem N˜o h´ ordena¸˜o entre comandos de diferentes streams a a ca Concorrˆncia em CUDA ´ gerenciada por meio de streams e e Associar diferentes streams a diferentes opera¸˜es significa co explicitar independˆncia dessas e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 108. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eStreams Um stream ´ uma sequˆncia de comandos que ´ executada em e e e ordem N˜o h´ ordena¸˜o entre comandos de diferentes streams a a ca Concorrˆncia em CUDA ´ gerenciada por meio de streams e e Associar diferentes streams a diferentes opera¸˜es significa co explicitar independˆncia dessas e Possibilidade de intervalar opera¸˜es co Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 109. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eStreams Um stream ´ uma sequˆncia de comandos que ´ executada em e e e ordem N˜o h´ ordena¸˜o entre comandos de diferentes streams a a ca Concorrˆncia em CUDA ´ gerenciada por meio de streams e e Associar diferentes streams a diferentes opera¸˜es significa co explicitar independˆncia dessas e Possibilidade de intervalar opera¸˜es co Um lan¸amento de kernel e uma c´pia de mem´ria podem ter c o o overlap Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 110. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Computa¸˜o em CPU e ca O ultimo argumento do cudaMemcpyAsync() ´ o stream ID ´ e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 111. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Computa¸˜o em CPU e ca O ultimo argumento do cudaMemcpyAsync() ´ o stream ID ´ e Lan¸amento default de kernel utiliza stream ID igual a zero c Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 112. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Computa¸˜o em CPU e ca O ultimo argumento do cudaMemcpyAsync() ´ o stream ID ´ e Lan¸amento default de kernel utiliza stream ID igual a zero c Como transferˆncia de dados e execu¸˜o de kernel utilizam e ca mesmo stream, suas execu¸˜es s˜o sequenciais co a Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 113. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Computa¸˜o em CPU e ca O ultimo argumento do cudaMemcpyAsync() ´ o stream ID ´ e Lan¸amento default de kernel utiliza stream ID igual a zero c Como transferˆncia de dados e execu¸˜o de kernel utilizam e ca mesmo stream, suas execu¸˜es s˜o sequenciais co a Comando cudaMemcpyAsync possibilita transferˆncia de e dados host-device em modo ass´ ıncrono Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 114. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Computa¸˜o em CPU e ca O ultimo argumento do cudaMemcpyAsync() ´ o stream ID ´ e Lan¸amento default de kernel utiliza stream ID igual a zero c Como transferˆncia de dados e execu¸˜o de kernel utilizam e ca mesmo stream, suas execu¸˜es s˜o sequenciais co a Comando cudaMemcpyAsync possibilita transferˆncia de e dados host-device em modo ass´ ıncrono Execu¸˜o de cpuFunction() potencialmente em overlap com ca cudaMemcpyAsync e execu¸˜o de kernel ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 115. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Computa¸˜o em GPU e ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 116. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Computa¸˜o em GPU e ca Dois streams s˜o criados para explicitar independˆncia de a e execu¸˜o ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 117. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Computa¸˜o em GPU e ca Dois streams s˜o criados para explicitar independˆncia de a e execu¸˜o ca C´pia de mem´ria e execu¸˜o de kernel potencialmente o o ca executados em paralelo Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 118. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados Host-Device e Boa pr´tica a Considere utiliza¸˜o de streams para possibilitar execu¸˜o paralela ca ca de elementos. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 119. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados Host-Device e Boa pr´tica a Considere utiliza¸˜o de streams para possibilitar execu¸˜o paralela ca ca de elementos. Boa pr´tica a Considere transferˆncia ass´ e ıncrona de dados da CPU para GPU para esconder latˆncia. e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 120. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eAgenda 1 Revis˜o CUDA a 2 Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Tempo em CUDA Largura de Banda em GPU 3 Execu¸˜o Concorrente Ass´ ca ıncrona Transferˆncia de Dados Host-Device e Kernels Paralelos 4 Conclus˜o a 5 Referˆncias e Th´rsis T. P. Souza (USP) a Considera¸oes de Desempenho em CUDA c˜
  • 121. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eUtiliza¸˜o do Device ca Em compute capability 1.x, o unico modo de utilizar todos os ´ multiprocessadores ´ lan¸ando um unico kernel com pelo e c ´ menos o n´mero de blocos igual ao de multiprocessadores u Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 122. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eUtiliza¸˜o do Device ca Em compute capability 1.x, o unico modo de utilizar todos os ´ multiprocessadores ´ lan¸ando um unico kernel com pelo e c ´ menos o n´mero de blocos igual ao de multiprocessadores u Compute capability 2.x permite a execu¸˜o de m´ltiplos ca u kernels Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 123. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eUtiliza¸˜o do Device ca Em compute capability 1.x, o unico modo de utilizar todos os ´ multiprocessadores ´ lan¸ando um unico kernel com pelo e c ´ menos o n´mero de blocos igual ao de multiprocessadores u Compute capability 2.x permite a execu¸˜o de m´ltiplos ca u kernels Tal execu¸˜o ´ feita utilizando CUDA Streams ca e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 124. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eUtiliza¸˜o do Device ca Em compute capability 1.x, o unico modo de utilizar todos os ´ multiprocessadores ´ lan¸ando um unico kernel com pelo e c ´ menos o n´mero de blocos igual ao de multiprocessadores u Compute capability 2.x permite a execu¸˜o de m´ltiplos ca u kernels Tal execu¸˜o ´ feita utilizando CUDA Streams ca e Arquitetura Fermi permite at´ 16 kernels paralelos e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 125. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de Kernels ca Exemplo: Execu¸˜o de dois kernels em paralelo. ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 126. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de Kernels ca Exemplo: Execu¸˜o de dois kernels em paralelo. ca Precisamos Criar dois streams para explicitar inter-independˆncia e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 127. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de Kernels ca Exemplo: Execu¸˜o de dois kernels em paralelo. ca Precisamos Criar dois streams para explicitar inter-independˆncia e Alocar espa¸o de mem´ria em pinned-memory c o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 128. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de Kernels ca Exemplo: Execu¸˜o de dois kernels em paralelo. ca Precisamos Criar dois streams para explicitar inter-independˆncia e Alocar espa¸o de mem´ria em pinned-memory c o Associar c´pia de dados e execu¸˜o de kernels com seus o ca respectivos streams Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 129. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de Kernels ca Exemplo: Execu¸˜o de dois kernels em paralelo. ca Precisamos Criar dois streams para explicitar inter-independˆncia e Alocar espa¸o de mem´ria em pinned-memory c o Associar c´pia de dados e execu¸˜o de kernels com seus o ca respectivos streams Desalocar mem´ria utilizada o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 130. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de kernels ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 131. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de kernels ca Um Stream ´ definido ao criar um objeto do tipo e cudaStream Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 132. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de kernels ca Um Stream ´ definido ao criar um objeto do tipo e cudaStream Cada stream ´ passado como parˆmetro no lan¸amento de e a c kernel e respectiva c´pia de mem´ria o o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 133. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de kernels ca Um Stream ´ definido ao criar um objeto do tipo e cudaStream Cada stream ´ passado como parˆmetro no lan¸amento de e a c kernel e respectiva c´pia de mem´ria o o Um vetor de float hostPtr ´ alocado em pinned memory. e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 134. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de kernels ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 135. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de kernels ca Cada stream copia sua por¸˜o do vetor de input hostPtr para o vetor ca inputDevPtr em mem´ria de device o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 136. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de kernels ca Cada stream copia sua por¸˜o do vetor de input hostPtr para o vetor ca inputDevPtr em mem´ria de device o processa de modo concorrente inputDevPtr no device ao chamar MyKernel() Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 137. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de kernels ca Cada stream copia sua por¸˜o do vetor de input hostPtr para o vetor ca inputDevPtr em mem´ria de device o processa de modo concorrente inputDevPtr no device ao chamar MyKernel() copia o resultado outputDevPtr de volta para a mesma por¸˜o de hostPtr ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 138. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eExecu¸˜o Paralela de kernels ca Cada stream copia sua por¸˜o do vetor de input hostPtr para o vetor ca inputDevPtr em mem´ria de device o processa de modo concorrente inputDevPtr no device ao chamar MyKernel() copia o resultado outputDevPtr de volta para a mesma por¸˜o de hostPtr ca Ao final, cada stream ´ liberado com a chamada de e cudaStreamDestroy. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 139. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Lan¸amento de Kernel e c Exemplo: Divis˜o de c´pia e execu¸˜o de kernel em n passos para a o ca esconder latˆncia. e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 140. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Lan¸amento de Kernel e c C´pia e execu¸˜o sequenciais o ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 141. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Lan¸amento de Kernel e c C´pia e execu¸˜o sequenciais o ca C´pia e execu¸˜o paralelas o ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 142. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Transferˆncia de Dados Host-Device e Execu¸˜o Concorrente Ass´ ca ıncrona Kernels Paralelos Conclus˜o a Referˆncias eOverlap Transferˆncia de Dados e Lan¸amento de Kernel e c Figura: (I) Execu¸˜o e c´pia sequenciais; (II) Execu¸˜o e c´pia paralelos em ca o ca o Compute Capability 1.x; (III) Execu¸˜o e c´pia paralelos em Compute Capability 2.x; ca o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 143. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eAgenda 1 Revis˜o CUDA a 2 Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Tempo em CUDA Largura de Banda em GPU 3 Execu¸˜o Concorrente Ass´ ca ıncrona Transferˆncia de Dados Host-Device e Kernels Paralelos 4 Conclus˜o a 5 Referˆncias e Th´rsis T. P. Souza (USP) a Considera¸oes de Desempenho em CUDA c˜
  • 144. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eM´tricas de Desempenho e speedup Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 145. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eM´tricas de Desempenho e speedup efficiency Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 146. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eM´tricas de Desempenho e speedup efficiency scalability Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 147. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eM´tricas de Desempenho e speedup efficiency scalability sustained FLOPS rates Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 148. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eM´tricas de Desempenho e speedup efficiency scalability sustained FLOPS rates Cuidado com fal´cias ao contruir m´tricas mirabulantes de a e desempenho. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 149. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eM´tricas de Desempenho e speedup efficiency scalability sustained FLOPS rates Cuidado com fal´cias ao contruir m´tricas mirabulantes de a e desempenho. Boas pr´ticas a Para maximizar desempenho, antes de mais nada, busque formas de paralelizar o c´digo sequencial. o Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 150. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eM´tricas de Desempenho e speedup efficiency scalability sustained FLOPS rates Cuidado com fal´cias ao contruir m´tricas mirabulantes de a e desempenho. Boas pr´ticas a Para maximizar desempenho, antes de mais nada, busque formas de paralelizar o c´digo sequencial. o Utilize o tempo de execu¸˜o como medida de desempenho. ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 151. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eAvalia¸˜o de Desempenho ca Para medir tempo em CUDA Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 152. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eAvalia¸˜o de Desempenho ca Para medir tempo em CUDA utiliza¸˜o de GPU Events ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 153. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eAvalia¸˜o de Desempenho ca Para medir tempo em CUDA utiliza¸˜o de GPU Events ca pode-se utilizar CPU timer. Por´m, com cuidado em e sincroniza¸˜o de threads. ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 154. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eAvalia¸˜o de Desempenho ca Para medir tempo em CUDA utiliza¸˜o de GPU Events ca pode-se utilizar CPU timer. Por´m, com cuidado em e sincroniza¸˜o de threads. ca Transferˆncia host-device ´ gargalo em GPU. e e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 155. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eAvalia¸˜o de Desempenho ca Para medir tempo em CUDA utiliza¸˜o de GPU Events ca pode-se utilizar CPU timer. Por´m, com cuidado em e sincroniza¸˜o de threads. ca Transferˆncia host-device ´ gargalo em GPU. e e Boa pr´tica a Minimizar transferˆncia de dados entre Host e Device. e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 156. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eExecu¸˜o concorrente ass´ ca ıncrona Streams Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 157. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eExecu¸˜o concorrente ass´ ca ıncrona Streams Pinned-memory Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 158. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eExecu¸˜o concorrente ass´ ca ıncrona Streams Pinned-memory Overlap entre transferˆncia de dados e computa¸˜o e ca Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 159. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eExecu¸˜o concorrente ass´ ca ıncrona Streams Pinned-memory Overlap entre transferˆncia de dados e computa¸˜o e ca Kernels paralelos Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 160. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eExecu¸˜o concorrente ass´ ca ıncrona Streams Pinned-memory Overlap entre transferˆncia de dados e computa¸˜o e ca Kernels paralelos Boas pr´ticas a Considere o uso de Pinned Memory ao transferir dados da CPU para GPU. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 161. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eExecu¸˜o concorrente ass´ ca ıncrona Streams Pinned-memory Overlap entre transferˆncia de dados e computa¸˜o e ca Kernels paralelos Boas pr´ticas a Considere o uso de Pinned Memory ao transferir dados da CPU para GPU. Considere utiliza¸˜o de streams para possibilitar execu¸˜o ca ca paralela de elementos. Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 162. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eExecu¸˜o concorrente ass´ ca ıncrona Streams Pinned-memory Overlap entre transferˆncia de dados e computa¸˜o e ca Kernels paralelos Boas pr´ticas a Considere o uso de Pinned Memory ao transferir dados da CPU para GPU. Considere utiliza¸˜o de streams para possibilitar execu¸˜o ca ca paralela de elementos. Considere transferˆncia ass´ e ıncrona de dados da CPU para GPU para esconder latˆncia. e Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 163. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eAgenda 1 Revis˜o CUDA a 2 Avalia¸˜o de Desempenho ca M´tricas de Desempenho e Tempo em CUDA Largura de Banda em GPU 3 Execu¸˜o Concorrente Ass´ ca ıncrona Transferˆncia de Dados Host-Device e Kernels Paralelos 4 Conclus˜o a 5 Referˆncias e Th´rsis T. P. Souza (USP) a Considera¸oes de Desempenho em CUDA c˜
  • 164. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eReferˆncias e D. DeWitt, J. Gray (1992) Parallel Database Systems: the future of high performance database systems. Commun. Assoc. Comput. Mach. 35(6), 85-98. Fernando Pereira (2011) Otimiza¸oes de C´digo em CUDA. Mini-curso LNCC. c˜ o John L. Hennessy, David A. Patterson, James R. Larus (2004) Computer Organization and Design, 2th. Michael Boyer (2011) LAVA Lab CUDA Support. http://www.cs.virginia.edu/~mwb7w/cuda_support/ em 23/04/2011. NVIDIA (2010) NVIDIA CUDA C Programming Guide. NVIDIA, Version 3.2, 11/9/2010. NVIDIA (2010) NVIDIA CUDA C Best Practices Guide. Version 3.2, 20/8/2010. Shane Ryoo, Christopher I. Rodrigues, Sara S. Baghsorkhi, Sam S. Stone, David B. Kirk, and Wen mei W. Hwu (2008) Optimization principles and application performance evaluation of a multithreaded GPU using CUDA. In PPoPP, pages 73-82. ACM, 2008 Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co
  • 165. Revis˜o CUDA a Avalia¸˜o de Desempenho ca Execu¸˜o Concorrente Ass´ ca ıncrona Conclus˜o a Referˆncias eDownload Apresenta¸˜o ca Apresenta¸˜o dispon´ em: ca ıvel gpubrasil.com/seminarios Th´rsis T. P. Souza (USP) a Considera¸˜es de Desempenho em CUDA co