Your SlideShare is downloading. ×
0
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Otimização de Desempenho em GPGPU e CUDA
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Otimização de Desempenho em GPGPU e CUDA

290

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
290
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
12
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

×