considera˘c~oes de desempenho em cudadmc/pgpgpu/5.pdf · revis~ao cuda avalia˘c~ao de desempenho...

165
Revis˜ ao CUDA Avalia¸c˜ ao de Desempenho Execu¸c˜ ao Concorrente Ass´ ıncrona Conclus˜ ao Referˆ encias Considera¸c˜ oes de Desempenho em CUDA (Parte 1/3) Th´ arsis T. P. Souza [email protected] Instituto de Matem´ atica e Estat´ ıstica Universidade de S˜ ao Paulo 29 de abril de 2011 Th´ arsis T. P. Souza (USP) Considera¸c˜oes de Desempenho em CUDA

Upload: others

Post on 23-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Consideracoes de Desempenho em CUDA(Parte 1/3)

Tharsis T. P. [email protected]

Instituto de Matematica e EstatısticaUniversidade de Sao Paulo

29 de abril de 2011

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 2: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Configuracao de Ambiente

Enquanto nao for dito o contrario ou citada respectiva referencia,neste trabalho, considera-se a seguinte configuracao:

Sistema Operacional Ubuntu Linux 10.04

CUDA Toolkit versao 3.2

Arquitetura NVIDIA Fermi

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 3: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Agenda

1 Revisao CUDA

2 Avaliacao de DesempenhoMetricas de DesempenhoTempo em CUDALargura de Banda em GPU

3 Execucao Concorrente AssıncronaTransferencia de Dados Host-DeviceKernels Paralelos

4 Conclusao

5 Referencias

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 4: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Agenda

1 Revisao CUDA

2 Avaliacao de DesempenhoMetricas de DesempenhoTempo em CUDALargura de Banda em GPU

3 Execucao Concorrente AssıncronaTransferencia de Dados Host-DeviceKernels Paralelos

4 Conclusao

5 Referencias

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 5: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Arquitetura Fermi

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 6: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Tipos de Memoria

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 7: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Hierarquia de Threads

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 8: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

CUDA C

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 9: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Modelo Heterogeneo de Computacao

Figura: Fluxo de execucao CUDA

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 10: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Agenda

1 Revisao CUDA

2 Avaliacao de DesempenhoMetricas de DesempenhoTempo em CUDALargura de Banda em GPU

3 Execucao Concorrente AssıncronaTransferencia de Dados Host-DeviceKernels Paralelos

4 Conclusao

5 Referencias

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 11: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Desempenho Sequencial x Paralelo

Tempo de execucao sequencial e funcao de

tamanho da entrada

espaco (memoria)

Tempo de execucao paralela e funcao de

tamanho da entrada

espaco (memoria)

numero de processadores

parametros de comunicacao da arquitetura alvo

Implicacoes

necessario analisar algoritmos paralelos para uma arquiteturaalvo particular

sistema paralelo = algoritmo paralelo + arquitetura

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 12: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Desempenho Sequencial x Paralelo

Tempo de execucao sequencial e funcao de

tamanho da entrada

espaco (memoria)

Tempo de execucao paralela e funcao de

tamanho da entrada

espaco (memoria)

numero de processadores

parametros de comunicacao da arquitetura alvo

Implicacoes

necessario analisar algoritmos paralelos para uma arquiteturaalvo particular

sistema paralelo = algoritmo paralelo + arquitetura

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 13: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Desempenho Sequencial x Paralelo

Tempo de execucao sequencial e funcao de

tamanho da entrada

espaco (memoria)

Tempo de execucao paralela e funcao de

tamanho da entrada

espaco (memoria)

numero de processadores

parametros de comunicacao da arquitetura alvo

Implicacoes

necessario analisar algoritmos paralelos para uma arquiteturaalvo particular

sistema paralelo = algoritmo paralelo + arquitetura

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 14: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Desempenho Sequencial x Paralelo

Tempo de execucao sequencial e funcao de

tamanho da entrada

espaco (memoria)

Tempo de execucao paralela e funcao de

tamanho da entrada

espaco (memoria)

numero de processadores

parametros de comunicacao da arquitetura alvo

Implicacoes

necessario analisar algoritmos paralelos para uma arquiteturaalvo particular

sistema paralelo = algoritmo paralelo + arquitetura

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 15: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Desempenho Sequencial x Paralelo

Tempo de execucao sequencial e funcao de

tamanho da entrada

espaco (memoria)

Tempo de execucao paralela e funcao de

tamanho da entrada

espaco (memoria)

numero de processadores

parametros de comunicacao da arquitetura alvo

Implicacoes

necessario analisar algoritmos paralelos para uma arquiteturaalvo particular

sistema paralelo = algoritmo paralelo + arquitetura

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 16: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Desempenho Sequencial x Paralelo

Tempo de execucao sequencial e funcao de

tamanho da entrada

espaco (memoria)

Tempo de execucao paralela e funcao de

tamanho da entrada

espaco (memoria)

numero de processadores

parametros de comunicacao da arquitetura alvo

Implicacoes

necessario analisar algoritmos paralelos para uma arquiteturaalvo particular

sistema paralelo = algoritmo paralelo + arquitetura

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 17: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Desempenho Sequencial x Paralelo

Tempo de execucao sequencial e funcao de

tamanho da entrada

espaco (memoria)

Tempo de execucao paralela e funcao de

tamanho da entrada

espaco (memoria)

numero de processadores

parametros de comunicacao da arquitetura alvo

Implicacoes

necessario analisar algoritmos paralelos para uma arquiteturaalvo particular

sistema paralelo = algoritmo paralelo + arquitetura

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 18: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Desempenho Sequencial x Paralelo

Tempo de execucao sequencial e funcao de

tamanho da entrada

espaco (memoria)

Tempo de execucao paralela e funcao de

tamanho da entrada

espaco (memoria)

numero de processadores

parametros de comunicacao da arquitetura alvo

Implicacoes

necessario analisar algoritmos paralelos para uma arquiteturaalvo particular

sistema paralelo = algoritmo paralelo + arquitetura

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 19: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Desempenho Sequencial x Paralelo

Tempo de execucao sequencial e funcao de

tamanho da entrada

espaco (memoria)

Tempo de execucao paralela e funcao de

tamanho da entrada

espaco (memoria)

numero de processadores

parametros de comunicacao da arquitetura alvo

Implicacoes

necessario analisar algoritmos paralelos para uma arquiteturaalvo particular

sistema paralelo = algoritmo paralelo + arquitetura

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 20: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Desempenho Sequencial x Paralelo

Tempo de execucao sequencial e funcao de

tamanho da entrada

espaco (memoria)

Tempo de execucao paralela e funcao de

tamanho da entrada

espaco (memoria)

numero de processadores

parametros de comunicacao da arquitetura alvo

Implicacoes

necessario analisar algoritmos paralelos para uma arquiteturaalvo particular

sistema paralelo = algoritmo paralelo + arquitetura

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 21: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Agenda

1 Revisao CUDA

2 Avaliacao de DesempenhoMetricas de DesempenhoTempo em CUDALargura de Banda em GPU

3 Execucao Concorrente AssıncronaTransferencia de Dados Host-DeviceKernels Paralelos

4 Conclusao

5 Referencias

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 22: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Metricas de Desempenho

Metricas de Desempenho mais comuns :

speedup

efficiency

scalability

sustained FLOPS rates

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 23: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Metricas de Desempenho

Metricas de Desempenho mais comuns :

speedup

efficiency

scalability

sustained FLOPS rates

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 24: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Metricas de Desempenho

Metricas de Desempenho mais comuns :

speedup

efficiency

scalability

sustained FLOPS rates

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 25: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Metricas de Desempenho

Metricas de Desempenho mais comuns :

speedup

efficiency

scalability

sustained FLOPS rates

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 26: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Metricas de Desempenho

Metricas de Desempenho mais comuns :

speedup

efficiency

scalability

sustained FLOPS rates

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 27: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Speedup

Razao entre o tempo da solucao do algoritmo executado em umunico processador e o tempo da solucao do mesmo algoritmo emmultiplos processadores:

Sp = T1/Tp

onde,

p corresponde ao numero de processadores

T1 e o tempo de execucao do algoritmo sequencial

Tp e o tempo do algoritmo paralelo em p processadores

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 28: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Speedup

Razao entre o tempo da solucao do algoritmo executado em umunico processador e o tempo da solucao do mesmo algoritmo emmultiplos processadores:

Sp = T1/Tp

onde,

p corresponde ao numero de processadores

T1 e o tempo de execucao do algoritmo sequencial

Tp e o tempo do algoritmo paralelo em p processadores

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 29: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Speedup

Razao entre o tempo da solucao do algoritmo executado em umunico processador e o tempo da solucao do mesmo algoritmo emmultiplos processadores:

Sp = T1/Tp

onde,

p corresponde ao numero de processadores

T1 e o tempo de execucao do algoritmo sequencial

Tp e o tempo do algoritmo paralelo em p processadores

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 30: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Speedup

Razao entre o tempo da solucao do algoritmo executado em umunico processador e o tempo da solucao do mesmo algoritmo emmultiplos processadores:

Sp = T1/Tp

onde,

p corresponde ao numero de processadores

T1 e o tempo de execucao do algoritmo sequencial

Tp e o tempo do algoritmo paralelo em p processadores

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 31: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Speedup

Razao entre o tempo da solucao do algoritmo executado em umunico processador e o tempo da solucao do mesmo algoritmo emmultiplos processadores:

Sp = T1/Tp

onde,

p corresponde ao numero de processadores

T1 e o tempo de execucao do algoritmo sequencial

Tp e o tempo do algoritmo paralelo em p processadores

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 32: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Speedup

Sp = p, Linear speedup

Sp < p, Sub-linear speedup

Sp > p, Super-linear speedup

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 33: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Speedup

Sp = p, Linear speedup

Sp < p, Sub-linear speedup

Sp > p, Super-linear speedup

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 34: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Speedup

Sp = p, Linear speedup

Sp < p, Sub-linear speedup

Sp > p, Super-linear speedup

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 35: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Lei de Amdahl

Maximo speedup (S) esperado ao paralelizar uma certa porcao deum programa sequencial:

S =1

(1 − P) + PN

onde, P e a fracao do tempo gasto pelo programa serial da partedo codigo que pode ser paralelizado e N e o numero deprocessadores sobre o qual o codigo paralelizavel roda.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 36: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Lei de Amdahl

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 37: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Lei de Amdahl

Boa pratica

Para maximizar desempenho, antes de mais nada, busque formasde paralelizar o codigo sequencial.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 38: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Efficiency

Razao entre o speedup e o numero de processadores:

Ep = Sp/p =T1

pTp

Estima quao bem os processadores estao sendo utilizados, tendoem vista o tempo gasto em overhead como: sincronizacao e trocade mensagens.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 39: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Efficiency

Razao entre o speedup e o numero de processadores:

Ep = Sp/p =T1

pTp

Estima quao bem os processadores estao sendo utilizados, tendoem vista o tempo gasto em overhead como: sincronizacao e trocade mensagens.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 40: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Efficiency

Razao entre o speedup e o numero de processadores:

Ep = Sp/p =T1

pTp

Estima quao bem os processadores estao sendo utilizados, tendoem vista o tempo gasto em overhead como: sincronizacao e trocade mensagens.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 41: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Scalability

Capacidade do algoritmo de resolver um problema n vezes maiorem n vezes mais processadores [Gray, 1992]:

Scaleup(p, n) =Tempo para resolver um problema de tamanho m em p processadores

Tempo para resolver um problema de tamanho nm em np processadores

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 42: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Scalability

Capacidade do algoritmo de resolver um problema n vezes maiorem n vezes mais processadores [Gray, 1992]:

Scaleup(p, n) =Tempo para resolver um problema de tamanho m em p processadores

Tempo para resolver um problema de tamanho nm em np processadores

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 43: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Sustained FLOPS rates

FLOPS: Floating-point Operations per Second

A taxa sustentada de FLOPS mede quao bem umaimplementacao especıfica explora a arquitetura alvo

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 44: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Sustained FLOPS rates

FLOPS: Floating-point Operations per Second

A taxa sustentada de FLOPS mede quao bem umaimplementacao especıfica explora a arquitetura alvo

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 45: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

FLOPS

Falacia: FLOPS e uma boa metrica de desempenho

Essa metrica nao indica necessariamente que um algoritmo eeficiente

Um algoritmo alternativo com menor FLOPS pode resolverum problema mais rapidamente

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 46: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

FLOPS

Falacia: FLOPS e uma boa metrica de desempenho

Essa metrica nao indica necessariamente que um algoritmo eeficiente

Um algoritmo alternativo com menor FLOPS pode resolverum problema mais rapidamente

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 47: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Conclusao Metricas de Desempenho

Cuidado ao estender erradamente metricas que valem para umcontexto especıficos. Ex.: microbenchmarks, FLOPS de pico

Tempo de execucao e a unica medida valida para desempenho[Hennessy, 2004]

Qualquer metrica deve estar vinculada ao tempo de execucao

Boa pratica

Utilize o tempo de execucao como medida de desempenho.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 48: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Conclusao Metricas de Desempenho

Cuidado ao estender erradamente metricas que valem para umcontexto especıficos. Ex.: microbenchmarks, FLOPS de pico

Tempo de execucao e a unica medida valida para desempenho[Hennessy, 2004]

Qualquer metrica deve estar vinculada ao tempo de execucao

Boa pratica

Utilize o tempo de execucao como medida de desempenho.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 49: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Conclusao Metricas de Desempenho

Cuidado ao estender erradamente metricas que valem para umcontexto especıficos. Ex.: microbenchmarks, FLOPS de pico

Tempo de execucao e a unica medida valida para desempenho[Hennessy, 2004]

Qualquer metrica deve estar vinculada ao tempo de execucao

Boa pratica

Utilize o tempo de execucao como medida de desempenho.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 50: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Conclusao Metricas de Desempenho

Cuidado ao estender erradamente metricas que valem para umcontexto especıficos. Ex.: microbenchmarks, FLOPS de pico

Tempo de execucao e a unica medida valida para desempenho[Hennessy, 2004]

Qualquer metrica deve estar vinculada ao tempo de execucao

Boa pratica

Utilize o tempo de execucao como medida de desempenho.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 51: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Agenda

1 Revisao CUDA

2 Avaliacao de DesempenhoMetricas de DesempenhoTempo em CUDALargura de Banda em GPU

3 Execucao Concorrente AssıncronaTransferencia de Dados Host-DeviceKernels Paralelos

4 Conclusao

5 Referencias

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 52: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Medindo Tempo

Podemos medir tempos de execucao em CUDA utilizando tantometodos tradicionais de CPU quanto GPU timers. Entretanto, haalguns aspectos a serem levados em consideracao:

Chamadas a CUDA API podem ser assıncronas. Ex.:lancamento de kernels. Neste caso e necessario garantir asincronia de threads ao utilizar temporizadores em CPU.

Deve-se tomar cuidado ao criar pontos de sincronizacao emCPU. Isso pode causar stall em GPU.

Temporizacao em GPU e tipicamente realizada utilizandoGPU Events.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 53: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Medindo Tempo

Podemos medir tempos de execucao em CUDA utilizando tantometodos tradicionais de CPU quanto GPU timers. Entretanto, haalguns aspectos a serem levados em consideracao:

Chamadas a CUDA API podem ser assıncronas. Ex.:lancamento de kernels. Neste caso e necessario garantir asincronia de threads ao utilizar temporizadores em CPU.

Deve-se tomar cuidado ao criar pontos de sincronizacao emCPU. Isso pode causar stall em GPU.

Temporizacao em GPU e tipicamente realizada utilizandoGPU Events.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 54: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Medindo Tempo

Podemos medir tempos de execucao em CUDA utilizando tantometodos tradicionais de CPU quanto GPU timers. Entretanto, haalguns aspectos a serem levados em consideracao:

Chamadas a CUDA API podem ser assıncronas. Ex.:lancamento de kernels. Neste caso e necessario garantir asincronia de threads ao utilizar temporizadores em CPU.

Deve-se tomar cuidado ao criar pontos de sincronizacao emCPU. Isso pode causar stall em GPU.

Temporizacao em GPU e tipicamente realizada utilizandoGPU Events.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 55: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Medindo Tempo

Podemos medir tempos de execucao em CUDA utilizando tantometodos tradicionais de CPU quanto GPU timers. Entretanto, haalguns aspectos a serem levados em consideracao:

Chamadas a CUDA API podem ser assıncronas. Ex.:lancamento de kernels. Neste caso e necessario garantir asincronia de threads ao utilizar temporizadores em CPU.

Deve-se tomar cuidado ao criar pontos de sincronizacao emCPU. Isso pode causar stall em GPU.

Temporizacao em GPU e tipicamente realizada utilizandoGPU Events.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 56: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

CPU Timer

Ao utilizar temporizadores de CPU, para medir corretamente otempo transcorrido em uma chamada ou sequencia de chamadasem CUDA, e necessario sincronizar a thread da CPU com a GPUchamando cudaThreadSynchronize() imediatamente antes edepois de iniciar o temporizador na CPU.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 57: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

CPU Timer

Ao utilizar temporizadores de CPU, para medir corretamente otempo transcorrido em uma chamada ou sequencia de chamadasem CUDA, e necessario sincronizar a thread da CPU com a GPUchamando cudaThreadSynchronize() imediatamente antes edepois de iniciar o temporizador na CPU.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 58: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

CUDA Events

Exemplo utilizando CUDA Events:

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 59: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Agenda

1 Revisao CUDA

2 Avaliacao de DesempenhoMetricas de DesempenhoTempo em CUDALargura de Banda em GPU

3 Execucao Concorrente AssıncronaTransferencia de Dados Host-DeviceKernels Paralelos

4 Conclusao

5 Referencias

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 60: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Consideracoes de Throughput

Transferencia de dados entre host e device e custosa.

A complexidade das operacoes deve justificar o custo datransferencia via PCIe.

Dados devem ser mantidos em device o maximo possıvel paraevitar retransmissao.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 61: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Consideracoes de Throughput

Transferencia de dados entre host e device e custosa.

A complexidade das operacoes deve justificar o custo datransferencia via PCIe.

Dados devem ser mantidos em device o maximo possıvel paraevitar retransmissao.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 62: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Consideracoes de Throughput

Transferencia de dados entre host e device e custosa.

A complexidade das operacoes deve justificar o custo datransferencia via PCIe.

Dados devem ser mantidos em device o maximo possıvel paraevitar retransmissao.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 63: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Metrica de Throughput

De modo geral, para aumento de desempenho, deseja-se maximara relacao: numero de operacoes de ponto flutuante em GPU porelemento de dado transferido via PCIe.

Ex.: Para soma de duas matrizes N × N, ha 3N2 transferencias dedados e N2 operacoes. Portanto, a relacao e de apenas 1:3 ouO(1). Para uma multiplicacao das mesmas matrizes, terıamos umarelacao O(N).

Boa pratica

Minimizar transferencia de dados entre Host e Device.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 64: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Metrica de Throughput

De modo geral, para aumento de desempenho, deseja-se maximara relacao: numero de operacoes de ponto flutuante em GPU porelemento de dado transferido via PCIe.

Ex.: Para soma de duas matrizes N × N, ha 3N2 transferencias dedados e N2 operacoes.

Portanto, a relacao e de apenas 1:3 ouO(1). Para uma multiplicacao das mesmas matrizes, terıamos umarelacao O(N).

Boa pratica

Minimizar transferencia de dados entre Host e Device.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 65: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Metrica de Throughput

De modo geral, para aumento de desempenho, deseja-se maximara relacao: numero de operacoes de ponto flutuante em GPU porelemento de dado transferido via PCIe.

Ex.: Para soma de duas matrizes N × N, ha 3N2 transferencias dedados e N2 operacoes. Portanto, a relacao e de apenas 1:3 ouO(1).

Para uma multiplicacao das mesmas matrizes, terıamos umarelacao O(N).

Boa pratica

Minimizar transferencia de dados entre Host e Device.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 66: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Metrica de Throughput

De modo geral, para aumento de desempenho, deseja-se maximara relacao: numero de operacoes de ponto flutuante em GPU porelemento de dado transferido via PCIe.

Ex.: Para soma de duas matrizes N × N, ha 3N2 transferencias dedados e N2 operacoes. Portanto, a relacao e de apenas 1:3 ouO(1). Para uma multiplicacao das mesmas matrizes, terıamos umarelacao O(N).

Boa pratica

Minimizar transferencia de dados entre Host e Device.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 67: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de DesempenhoTempo em CUDALargura de Banda em GPU

Metrica de Throughput

De modo geral, para aumento de desempenho, deseja-se maximara relacao: numero de operacoes de ponto flutuante em GPU porelemento de dado transferido via PCIe.

Ex.: Para soma de duas matrizes N × N, ha 3N2 transferencias dedados e N2 operacoes. Portanto, a relacao e de apenas 1:3 ouO(1). Para uma multiplicacao das mesmas matrizes, terıamos umarelacao O(N).

Boa pratica

Minimizar transferencia de dados entre Host e Device.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 68: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Agenda

1 Revisao CUDA

2 Avaliacao de DesempenhoMetricas de DesempenhoTempo em CUDALargura de Banda em GPU

3 Execucao Concorrente AssıncronaTransferencia de Dados Host-DeviceKernels Paralelos

4 Conclusao

5 Referencias

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 69: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Concorrente Host-Device

Para facilitar execucao concorrente entre host e device, algumaschamadas de funcao sao assıncronas: controle e retornado parathread do host antes que o device complete as tarefas requisitadas.

Dois tipos de execucao concorrente sao particurlamenteimportantes de serem analisadas:

Overlap em transferencia de dados

Execucao de Kernels paralelos

Para verificar se o device permite tais tipos de concorrencia,deve-se executar a chamada cudaGetDeviceProperties() e checaros atributos deviceOverlap e concurrentKernels.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 70: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Concorrente Host-Device

Para facilitar execucao concorrente entre host e device, algumaschamadas de funcao sao assıncronas: controle e retornado parathread do host antes que o device complete as tarefas requisitadas.Dois tipos de execucao concorrente sao particurlamenteimportantes de serem analisadas:

Overlap em transferencia de dados

Execucao de Kernels paralelos

Para verificar se o device permite tais tipos de concorrencia,deve-se executar a chamada cudaGetDeviceProperties() e checaros atributos deviceOverlap e concurrentKernels.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 71: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Concorrente Host-Device

Para facilitar execucao concorrente entre host e device, algumaschamadas de funcao sao assıncronas: controle e retornado parathread do host antes que o device complete as tarefas requisitadas.Dois tipos de execucao concorrente sao particurlamenteimportantes de serem analisadas:

Overlap em transferencia de dados

Execucao de Kernels paralelos

Para verificar se o device permite tais tipos de concorrencia,deve-se executar a chamada cudaGetDeviceProperties() e checaros atributos deviceOverlap e concurrentKernels.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 72: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Concorrente Host-Device

Para facilitar execucao concorrente entre host e device, algumaschamadas de funcao sao assıncronas: controle e retornado parathread do host antes que o device complete as tarefas requisitadas.Dois tipos de execucao concorrente sao particurlamenteimportantes de serem analisadas:

Overlap em transferencia de dados

Execucao de Kernels paralelos

Para verificar se o device permite tais tipos de concorrencia,deve-se executar a chamada cudaGetDeviceProperties() e checaros atributos deviceOverlap e concurrentKernels.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 73: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Concorrente Host-Device

Para facilitar execucao concorrente entre host e device, algumaschamadas de funcao sao assıncronas: controle e retornado parathread do host antes que o device complete as tarefas requisitadas.Dois tipos de execucao concorrente sao particurlamenteimportantes de serem analisadas:

Overlap em transferencia de dados

Execucao de Kernels paralelos

Para verificar se o device permite tais tipos de concorrencia,deve-se executar a chamada cudaGetDeviceProperties() e checaros atributos deviceOverlap e concurrentKernels.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 74: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Agenda

1 Revisao CUDA

2 Avaliacao de DesempenhoMetricas de DesempenhoTempo em CUDALargura de Banda em GPU

3 Execucao Concorrente AssıncronaTransferencia de Dados Host-DeviceKernels Paralelos

4 Conclusao

5 Referencias

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 75: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Transferencia de Dados Host-Device

O maior gargalo em processamento em GPU e a transferencia viaPCIe.

Ao alocar memoria em CPU que vai ser utilizado para transferirdados para GPU, ha dois tipos de memoria possıveis:

pinned memory (page-locked memory)

non-pinned memory (pageable memory)

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 76: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Transferencia de Dados Host-Device

O maior gargalo em processamento em GPU e a transferencia viaPCIe.

Ao alocar memoria em CPU que vai ser utilizado para transferirdados para GPU, ha dois tipos de memoria possıveis:

pinned memory (page-locked memory)

non-pinned memory (pageable memory)

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 77: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Transferencia de Dados Host-Device

O maior gargalo em processamento em GPU e a transferencia viaPCIe.

Ao alocar memoria em CPU que vai ser utilizado para transferirdados para GPU, ha dois tipos de memoria possıveis:

pinned memory (page-locked memory)

non-pinned memory (pageable memory)

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 78: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Transferencia de Dados Host-Device

O maior gargalo em processamento em GPU e a transferencia viaPCIe.

Ao alocar memoria em CPU que vai ser utilizado para transferirdados para GPU, ha dois tipos de memoria possıveis:

pinned memory (page-locked memory)

non-pinned memory (pageable memory)

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 79: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

non-Pinned Memory

Figura: Copia tradicional host-device via PCIe.

malloc / free sao funcoes que utilizam non-pinned memory

transferencia host-device e relativamente lenta

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 80: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

non-Pinned Memory

Figura: Copia tradicional host-device via PCIe.

malloc / free sao funcoes que utilizam non-pinned memory

transferencia host-device e relativamente lenta

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 81: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

non-Pinned Memory

Figura: Copia tradicional host-device via PCIe.

malloc / free sao funcoes que utilizam non-pinned memory

transferencia host-device e relativamente lenta

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 82: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory

Figura: Copia host-device utlizando via PCIe em buffer pinned-memory

Pinned Memory possibilita

copia via PCIe mais rapidas ( 2x)copias assıncronas de memoria

Uso via RunTime API

cudaHostAlloc (ou cudaMallocHost) / cudaFreeHostem vez de malloc / free

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 83: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory

Figura: Copia host-device utlizando via PCIe em buffer pinned-memory

Pinned Memory possibilita

copia via PCIe mais rapidas ( 2x)copias assıncronas de memoria

Uso via RunTime API

cudaHostAlloc (ou cudaMallocHost) / cudaFreeHostem vez de malloc / free

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 84: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory

Figura: Copia host-device utlizando via PCIe em buffer pinned-memory

Pinned Memory possibilita

copia via PCIe mais rapidas ( 2x)

copias assıncronas de memoria

Uso via RunTime API

cudaHostAlloc (ou cudaMallocHost) / cudaFreeHostem vez de malloc / free

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 85: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory

Figura: Copia host-device utlizando via PCIe em buffer pinned-memory

Pinned Memory possibilita

copia via PCIe mais rapidas ( 2x)copias assıncronas de memoria

Uso via RunTime API

cudaHostAlloc (ou cudaMallocHost) / cudaFreeHostem vez de malloc / free

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 86: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory

Figura: Copia host-device utlizando via PCIe em buffer pinned-memory

Pinned Memory possibilita

copia via PCIe mais rapidas ( 2x)copias assıncronas de memoria

Uso via RunTime API

cudaHostAlloc (ou cudaMallocHost) / cudaFreeHostem vez de malloc / free

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 87: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory

Figura: Copia host-device utlizando via PCIe em buffer pinned-memory

Pinned Memory possibilita

copia via PCIe mais rapidas ( 2x)copias assıncronas de memoria

Uso via RunTime API

cudaHostAlloc (ou cudaMallocHost) / cudaFreeHost

em vez de malloc / free

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 88: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory

Figura: Copia host-device utlizando via PCIe em buffer pinned-memory

Pinned Memory possibilita

copia via PCIe mais rapidas ( 2x)copias assıncronas de memoria

Uso via RunTime API

cudaHostAlloc (ou cudaMallocHost) / cudaFreeHostem vez de malloc / free

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 89: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory x Non-Pinned Memory

Figura: Tempo de transferencia de memoria em funcao de MegaBytes transferidos[2].

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 90: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory x Non-Pinned Memory

Falacia: Pinned Memory = Maior Desempenho

Uso de Pinned Memory acelera copia via PCIe, logo sempre devoutilizar esse tipo de memoria visando a um aumento dedesempenho. Errado!

Pinned Memory nao deve ser super utilizada

Ha consideravel overhead em sua utilizacao

Uso nao planejado pode causar perda de desempenho

Quantidade otima a ser utilizada depende da aplicacao

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 91: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory x Non-Pinned Memory

Falacia: Pinned Memory = Maior Desempenho

Uso de Pinned Memory acelera copia via PCIe, logo sempre devoutilizar esse tipo de memoria visando a um aumento dedesempenho. Errado!

Pinned Memory nao deve ser super utilizada

Ha consideravel overhead em sua utilizacao

Uso nao planejado pode causar perda de desempenho

Quantidade otima a ser utilizada depende da aplicacao

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 92: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory x Non-Pinned Memory

Falacia: Pinned Memory = Maior Desempenho

Uso de Pinned Memory acelera copia via PCIe, logo sempre devoutilizar esse tipo de memoria visando a um aumento dedesempenho. Errado!

Pinned Memory nao deve ser super utilizada

Ha consideravel overhead em sua utilizacao

Uso nao planejado pode causar perda de desempenho

Quantidade otima a ser utilizada depende da aplicacao

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 93: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory x Non-Pinned Memory

Falacia: Pinned Memory = Maior Desempenho

Uso de Pinned Memory acelera copia via PCIe, logo sempre devoutilizar esse tipo de memoria visando a um aumento dedesempenho. Errado!

Pinned Memory nao deve ser super utilizada

Ha consideravel overhead em sua utilizacao

Uso nao planejado pode causar perda de desempenho

Quantidade otima a ser utilizada depende da aplicacao

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 94: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory x Non-Pinned Memory

Falacia: Pinned Memory = Maior Desempenho

Uso de Pinned Memory acelera copia via PCIe, logo sempre devoutilizar esse tipo de memoria visando a um aumento dedesempenho. Errado!

Pinned Memory nao deve ser super utilizada

Ha consideravel overhead em sua utilizacao

Uso nao planejado pode causar perda de desempenho

Quantidade otima a ser utilizada depende da aplicacao

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 95: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory x Non-Pinned Memory: Overhead

Figura: Tempo de alocacao de memoria em funcao do numero de bytesalocados/liberados por chamada [2].

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 96: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory x Non-Pinned Memory: Qual utilizar?

Figura: Tempo requerido para alocar, transferir para GPU, transferir de volta paraCPU e desalocar memoria [2].

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 97: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Pinned Memory

Boa pratica

Considere o uso de Pinned Memory ao transferir dados da CPUpara GPU.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 98: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia Host-Device

Transferencia de dados host-device utilizando cudaMemcpy()e bloqueante

cudaMemcpyAsync() e uma variante assıncrona docudaMemcpy()

cudaMemcpyAsync() requer pinned memory e identificacao destream

Pode-se obter overlap de duas formas:

Enquanto memoria e transferida para GPU e kernel eexecutado, pode-se sobrepor computacao em CPU

Pode-se intervalar transferencia de dados host-device comexecucao de kernels

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 99: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia Host-Device

Transferencia de dados host-device utilizando cudaMemcpy()e bloqueante

cudaMemcpyAsync() e uma variante assıncrona docudaMemcpy()

cudaMemcpyAsync() requer pinned memory e identificacao destream

Pode-se obter overlap de duas formas:

Enquanto memoria e transferida para GPU e kernel eexecutado, pode-se sobrepor computacao em CPU

Pode-se intervalar transferencia de dados host-device comexecucao de kernels

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 100: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia Host-Device

Transferencia de dados host-device utilizando cudaMemcpy()e bloqueante

cudaMemcpyAsync() e uma variante assıncrona docudaMemcpy()

cudaMemcpyAsync() requer pinned memory e identificacao destream

Pode-se obter overlap de duas formas:

Enquanto memoria e transferida para GPU e kernel eexecutado, pode-se sobrepor computacao em CPU

Pode-se intervalar transferencia de dados host-device comexecucao de kernels

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 101: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia Host-Device

Transferencia de dados host-device utilizando cudaMemcpy()e bloqueante

cudaMemcpyAsync() e uma variante assıncrona docudaMemcpy()

cudaMemcpyAsync() requer pinned memory e identificacao destream

Pode-se obter overlap de duas formas:

Enquanto memoria e transferida para GPU e kernel eexecutado, pode-se sobrepor computacao em CPU

Pode-se intervalar transferencia de dados host-device comexecucao de kernels

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 102: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia Host-Device

Transferencia de dados host-device utilizando cudaMemcpy()e bloqueante

cudaMemcpyAsync() e uma variante assıncrona docudaMemcpy()

cudaMemcpyAsync() requer pinned memory e identificacao destream

Pode-se obter overlap de duas formas:

Enquanto memoria e transferida para GPU e kernel eexecutado, pode-se sobrepor computacao em CPU

Pode-se intervalar transferencia de dados host-device comexecucao de kernels

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 103: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia Host-Device

Transferencia de dados host-device utilizando cudaMemcpy()e bloqueante

cudaMemcpyAsync() e uma variante assıncrona docudaMemcpy()

cudaMemcpyAsync() requer pinned memory e identificacao destream

Pode-se obter overlap de duas formas:

Enquanto memoria e transferida para GPU e kernel eexecutado, pode-se sobrepor computacao em CPU

Pode-se intervalar transferencia de dados host-device comexecucao de kernels

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 104: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Streams

Um stream e uma sequencia de comandos que e executada emordem

Nao ha ordenacao entre comandos de diferentes streams

Concorrencia em CUDA e gerenciada por meio de streams

Associar diferentes streams a diferentes operacoes significaexplicitar independencia dessasPossibilidade de intervalar operacoesUm lancamento de kernel e uma copia de memoria podem teroverlap

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 105: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Streams

Um stream e uma sequencia de comandos que e executada emordem

Nao ha ordenacao entre comandos de diferentes streams

Concorrencia em CUDA e gerenciada por meio de streams

Associar diferentes streams a diferentes operacoes significaexplicitar independencia dessasPossibilidade de intervalar operacoesUm lancamento de kernel e uma copia de memoria podem teroverlap

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 106: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Streams

Um stream e uma sequencia de comandos que e executada emordem

Nao ha ordenacao entre comandos de diferentes streams

Concorrencia em CUDA e gerenciada por meio de streams

Associar diferentes streams a diferentes operacoes significaexplicitar independencia dessasPossibilidade de intervalar operacoesUm lancamento de kernel e uma copia de memoria podem teroverlap

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 107: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Streams

Um stream e uma sequencia de comandos que e executada emordem

Nao ha ordenacao entre comandos de diferentes streams

Concorrencia em CUDA e gerenciada por meio de streams

Associar diferentes streams a diferentes operacoes significaexplicitar independencia dessas

Possibilidade de intervalar operacoesUm lancamento de kernel e uma copia de memoria podem teroverlap

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 108: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Streams

Um stream e uma sequencia de comandos que e executada emordem

Nao ha ordenacao entre comandos de diferentes streams

Concorrencia em CUDA e gerenciada por meio de streams

Associar diferentes streams a diferentes operacoes significaexplicitar independencia dessasPossibilidade de intervalar operacoes

Um lancamento de kernel e uma copia de memoria podem teroverlap

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 109: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Streams

Um stream e uma sequencia de comandos que e executada emordem

Nao ha ordenacao entre comandos de diferentes streams

Concorrencia em CUDA e gerenciada por meio de streams

Associar diferentes streams a diferentes operacoes significaexplicitar independencia dessasPossibilidade de intervalar operacoesUm lancamento de kernel e uma copia de memoria podem teroverlap

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 110: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Computacao em CPU

O ultimo argumento do cudaMemcpyAsync() e o stream ID

Lancamento default de kernel utiliza stream ID igual a zero

Como transferencia de dados e execucao de kernel utilizammesmo stream, suas execucoes sao sequenciais

Comando cudaMemcpyAsync possibilita transferencia dedados host-device em modo assıncrono

Execucao de cpuFunction() potencialmente em overlap comcudaMemcpyAsync e execucao de kernel

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 111: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Computacao em CPU

O ultimo argumento do cudaMemcpyAsync() e o stream ID

Lancamento default de kernel utiliza stream ID igual a zero

Como transferencia de dados e execucao de kernel utilizammesmo stream, suas execucoes sao sequenciais

Comando cudaMemcpyAsync possibilita transferencia dedados host-device em modo assıncrono

Execucao de cpuFunction() potencialmente em overlap comcudaMemcpyAsync e execucao de kernel

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 112: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Computacao em CPU

O ultimo argumento do cudaMemcpyAsync() e o stream ID

Lancamento default de kernel utiliza stream ID igual a zero

Como transferencia de dados e execucao de kernel utilizammesmo stream, suas execucoes sao sequenciais

Comando cudaMemcpyAsync possibilita transferencia dedados host-device em modo assıncrono

Execucao de cpuFunction() potencialmente em overlap comcudaMemcpyAsync e execucao de kernel

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 113: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Computacao em CPU

O ultimo argumento do cudaMemcpyAsync() e o stream ID

Lancamento default de kernel utiliza stream ID igual a zero

Como transferencia de dados e execucao de kernel utilizammesmo stream, suas execucoes sao sequenciais

Comando cudaMemcpyAsync possibilita transferencia dedados host-device em modo assıncrono

Execucao de cpuFunction() potencialmente em overlap comcudaMemcpyAsync e execucao de kernel

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 114: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Computacao em CPU

O ultimo argumento do cudaMemcpyAsync() e o stream ID

Lancamento default de kernel utiliza stream ID igual a zero

Como transferencia de dados e execucao de kernel utilizammesmo stream, suas execucoes sao sequenciais

Comando cudaMemcpyAsync possibilita transferencia dedados host-device em modo assıncrono

Execucao de cpuFunction() potencialmente em overlap comcudaMemcpyAsync e execucao de kernel

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 115: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Computacao em GPU

Dois streams sao criados para explicitar independencia deexecucao

Copia de memoria e execucao de kernel potencialmenteexecutados em paralelo

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 116: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Computacao em GPU

Dois streams sao criados para explicitar independencia deexecucao

Copia de memoria e execucao de kernel potencialmenteexecutados em paralelo

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 117: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Computacao em GPU

Dois streams sao criados para explicitar independencia deexecucao

Copia de memoria e execucao de kernel potencialmenteexecutados em paralelo

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 118: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados Host-Device

Boa pratica

Considere utilizacao de streams para possibilitar execucao paralelade elementos.

Boa pratica

Considere transferencia assıncrona de dados da CPU para GPUpara esconder latencia.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 119: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados Host-Device

Boa pratica

Considere utilizacao de streams para possibilitar execucao paralelade elementos.

Boa pratica

Considere transferencia assıncrona de dados da CPU para GPUpara esconder latencia.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 120: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Agenda

1 Revisao CUDA

2 Avaliacao de DesempenhoMetricas de DesempenhoTempo em CUDALargura de Banda em GPU

3 Execucao Concorrente AssıncronaTransferencia de Dados Host-DeviceKernels Paralelos

4 Conclusao

5 Referencias

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 121: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Utilizacao do Device

Em compute capability 1.x, o unico modo de utilizar todos osmultiprocessadores e lancando um unico kernel com pelomenos o numero de blocos igual ao de multiprocessadores

Compute capability 2.x permite a execucao de multiploskernels

Tal execucao e feita utilizando CUDA Streams

Arquitetura Fermi permite ate 16 kernels paralelos

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 122: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Utilizacao do Device

Em compute capability 1.x, o unico modo de utilizar todos osmultiprocessadores e lancando um unico kernel com pelomenos o numero de blocos igual ao de multiprocessadores

Compute capability 2.x permite a execucao de multiploskernels

Tal execucao e feita utilizando CUDA Streams

Arquitetura Fermi permite ate 16 kernels paralelos

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 123: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Utilizacao do Device

Em compute capability 1.x, o unico modo de utilizar todos osmultiprocessadores e lancando um unico kernel com pelomenos o numero de blocos igual ao de multiprocessadores

Compute capability 2.x permite a execucao de multiploskernels

Tal execucao e feita utilizando CUDA Streams

Arquitetura Fermi permite ate 16 kernels paralelos

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 124: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Utilizacao do Device

Em compute capability 1.x, o unico modo de utilizar todos osmultiprocessadores e lancando um unico kernel com pelomenos o numero de blocos igual ao de multiprocessadores

Compute capability 2.x permite a execucao de multiploskernels

Tal execucao e feita utilizando CUDA Streams

Arquitetura Fermi permite ate 16 kernels paralelos

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 125: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de Kernels

Exemplo: Execucao de dois kernels em paralelo.

Precisamos

Criar dois streams para explicitar inter-independencia

Alocar espaco de memoria em pinned-memory

Associar copia de dados e execucao de kernels com seusrespectivos streams

Desalocar memoria utilizada

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 126: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de Kernels

Exemplo: Execucao de dois kernels em paralelo.

Precisamos

Criar dois streams para explicitar inter-independencia

Alocar espaco de memoria em pinned-memory

Associar copia de dados e execucao de kernels com seusrespectivos streams

Desalocar memoria utilizada

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 127: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de Kernels

Exemplo: Execucao de dois kernels em paralelo.

Precisamos

Criar dois streams para explicitar inter-independencia

Alocar espaco de memoria em pinned-memory

Associar copia de dados e execucao de kernels com seusrespectivos streams

Desalocar memoria utilizada

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 128: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de Kernels

Exemplo: Execucao de dois kernels em paralelo.

Precisamos

Criar dois streams para explicitar inter-independencia

Alocar espaco de memoria em pinned-memory

Associar copia de dados e execucao de kernels com seusrespectivos streams

Desalocar memoria utilizada

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 129: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de Kernels

Exemplo: Execucao de dois kernels em paralelo.

Precisamos

Criar dois streams para explicitar inter-independencia

Alocar espaco de memoria em pinned-memory

Associar copia de dados e execucao de kernels com seusrespectivos streams

Desalocar memoria utilizada

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 130: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de kernels

Um Stream e definido ao criar um objeto do tipocudaStream

Cada stream e passado como parametro no lancamento dekernel e respectiva copia de memoria

Um vetor de float hostPtr e alocado em pinned memory.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 131: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de kernels

Um Stream e definido ao criar um objeto do tipocudaStream

Cada stream e passado como parametro no lancamento dekernel e respectiva copia de memoria

Um vetor de float hostPtr e alocado em pinned memory.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 132: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de kernels

Um Stream e definido ao criar um objeto do tipocudaStream

Cada stream e passado como parametro no lancamento dekernel e respectiva copia de memoria

Um vetor de float hostPtr e alocado em pinned memory.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 133: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de kernels

Um Stream e definido ao criar um objeto do tipocudaStream

Cada stream e passado como parametro no lancamento dekernel e respectiva copia de memoria

Um vetor de float hostPtr e alocado em pinned memory.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 134: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de kernels

Cada stream

copia sua porcao do vetor de input hostPtr para o vetorinputDevPtr em memoria de device

processa de modo concorrente inputDevPtr no device aochamar MyKernel()copia o resultado outputDevPtr de volta para a mesmaporcao de hostPtr

Ao final, cada stream e liberado com a chamada decudaStreamDestroy.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 135: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de kernels

Cada stream

copia sua porcao do vetor de input hostPtr para o vetorinputDevPtr em memoria de device

processa de modo concorrente inputDevPtr no device aochamar MyKernel()copia o resultado outputDevPtr de volta para a mesmaporcao de hostPtr

Ao final, cada stream e liberado com a chamada decudaStreamDestroy.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 136: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de kernels

Cada stream

copia sua porcao do vetor de input hostPtr para o vetorinputDevPtr em memoria de device

processa de modo concorrente inputDevPtr no device aochamar MyKernel()

copia o resultado outputDevPtr de volta para a mesmaporcao de hostPtr

Ao final, cada stream e liberado com a chamada decudaStreamDestroy.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 137: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de kernels

Cada stream

copia sua porcao do vetor de input hostPtr para o vetorinputDevPtr em memoria de device

processa de modo concorrente inputDevPtr no device aochamar MyKernel()copia o resultado outputDevPtr de volta para a mesmaporcao de hostPtr

Ao final, cada stream e liberado com a chamada decudaStreamDestroy.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 138: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Execucao Paralela de kernels

Cada stream

copia sua porcao do vetor de input hostPtr para o vetorinputDevPtr em memoria de device

processa de modo concorrente inputDevPtr no device aochamar MyKernel()copia o resultado outputDevPtr de volta para a mesmaporcao de hostPtr

Ao final, cada stream e liberado com a chamada decudaStreamDestroy.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 139: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Lancamento de Kernel

Exemplo: Divisao de copia e execucao de kernel em n passos paraesconder latencia.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 140: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Lancamento de Kernel

Copia e execucao sequenciais

Copia e execucao paralelas

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 141: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Lancamento de Kernel

Copia e execucao sequenciais

Copia e execucao paralelas

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 142: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Transferencia de Dados Host-DeviceKernels Paralelos

Overlap Transferencia de Dados e Lancamento de Kernel

Figura: (I) Execucao e copia sequenciais; (II) Execucao e copia paralelos emCompute Capability 1.x; (III) Execucao e copia paralelos em Compute Capability 2.x;

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 143: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Agenda

1 Revisao CUDA

2 Avaliacao de DesempenhoMetricas de DesempenhoTempo em CUDALargura de Banda em GPU

3 Execucao Concorrente AssıncronaTransferencia de Dados Host-DeviceKernels Paralelos

4 Conclusao

5 Referencias

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 144: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de Desempenho

speedup

efficiency

scalability

sustained FLOPS rates

Cuidado com falacias ao contruir metricas mirabulantes dedesempenho.

Boas praticas

Para maximizar desempenho, antes de mais nada, busqueformas de paralelizar o codigo sequencial.

Utilize o tempo de execucao como medida de desempenho.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 145: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de Desempenho

speedup

efficiency

scalability

sustained FLOPS rates

Cuidado com falacias ao contruir metricas mirabulantes dedesempenho.

Boas praticas

Para maximizar desempenho, antes de mais nada, busqueformas de paralelizar o codigo sequencial.

Utilize o tempo de execucao como medida de desempenho.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 146: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de Desempenho

speedup

efficiency

scalability

sustained FLOPS rates

Cuidado com falacias ao contruir metricas mirabulantes dedesempenho.

Boas praticas

Para maximizar desempenho, antes de mais nada, busqueformas de paralelizar o codigo sequencial.

Utilize o tempo de execucao como medida de desempenho.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 147: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de Desempenho

speedup

efficiency

scalability

sustained FLOPS rates

Cuidado com falacias ao contruir metricas mirabulantes dedesempenho.

Boas praticas

Para maximizar desempenho, antes de mais nada, busqueformas de paralelizar o codigo sequencial.

Utilize o tempo de execucao como medida de desempenho.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 148: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de Desempenho

speedup

efficiency

scalability

sustained FLOPS rates

Cuidado com falacias ao contruir metricas mirabulantes dedesempenho.

Boas praticas

Para maximizar desempenho, antes de mais nada, busqueformas de paralelizar o codigo sequencial.

Utilize o tempo de execucao como medida de desempenho.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 149: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de Desempenho

speedup

efficiency

scalability

sustained FLOPS rates

Cuidado com falacias ao contruir metricas mirabulantes dedesempenho.

Boas praticas

Para maximizar desempenho, antes de mais nada, busqueformas de paralelizar o codigo sequencial.

Utilize o tempo de execucao como medida de desempenho.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 150: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Metricas de Desempenho

speedup

efficiency

scalability

sustained FLOPS rates

Cuidado com falacias ao contruir metricas mirabulantes dedesempenho.

Boas praticas

Para maximizar desempenho, antes de mais nada, busqueformas de paralelizar o codigo sequencial.

Utilize o tempo de execucao como medida de desempenho.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 151: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Avaliacao de Desempenho

Para medir tempo em CUDA

utilizacao de GPU Events

pode-se utilizar CPU timer. Porem, com cuidado emsincronizacao de threads.

Transferencia host-device e gargalo em GPU.

Boa pratica

Minimizar transferencia de dados entre Host e Device.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 152: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Avaliacao de Desempenho

Para medir tempo em CUDA

utilizacao de GPU Events

pode-se utilizar CPU timer. Porem, com cuidado emsincronizacao de threads.

Transferencia host-device e gargalo em GPU.

Boa pratica

Minimizar transferencia de dados entre Host e Device.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 153: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Avaliacao de Desempenho

Para medir tempo em CUDA

utilizacao de GPU Events

pode-se utilizar CPU timer. Porem, com cuidado emsincronizacao de threads.

Transferencia host-device e gargalo em GPU.

Boa pratica

Minimizar transferencia de dados entre Host e Device.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 154: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Avaliacao de Desempenho

Para medir tempo em CUDA

utilizacao de GPU Events

pode-se utilizar CPU timer. Porem, com cuidado emsincronizacao de threads.

Transferencia host-device e gargalo em GPU.

Boa pratica

Minimizar transferencia de dados entre Host e Device.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 155: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Avaliacao de Desempenho

Para medir tempo em CUDA

utilizacao de GPU Events

pode-se utilizar CPU timer. Porem, com cuidado emsincronizacao de threads.

Transferencia host-device e gargalo em GPU.

Boa pratica

Minimizar transferencia de dados entre Host e Device.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 156: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Execucao concorrente assıncrona

Streams

Pinned-memory

Overlap entre transferencia de dados e computacao

Kernels paralelos

Boas praticas

Considere o uso de Pinned Memory ao transferir dados daCPU para GPU.

Considere utilizacao de streams para possibilitar execucaoparalela de elementos.

Considere transferencia assıncrona de dados da CPU paraGPU para esconder latencia.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 157: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Execucao concorrente assıncrona

Streams

Pinned-memory

Overlap entre transferencia de dados e computacao

Kernels paralelos

Boas praticas

Considere o uso de Pinned Memory ao transferir dados daCPU para GPU.

Considere utilizacao de streams para possibilitar execucaoparalela de elementos.

Considere transferencia assıncrona de dados da CPU paraGPU para esconder latencia.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 158: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Execucao concorrente assıncrona

Streams

Pinned-memory

Overlap entre transferencia de dados e computacao

Kernels paralelos

Boas praticas

Considere o uso de Pinned Memory ao transferir dados daCPU para GPU.

Considere utilizacao de streams para possibilitar execucaoparalela de elementos.

Considere transferencia assıncrona de dados da CPU paraGPU para esconder latencia.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 159: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Execucao concorrente assıncrona

Streams

Pinned-memory

Overlap entre transferencia de dados e computacao

Kernels paralelos

Boas praticas

Considere o uso de Pinned Memory ao transferir dados daCPU para GPU.

Considere utilizacao de streams para possibilitar execucaoparalela de elementos.

Considere transferencia assıncrona de dados da CPU paraGPU para esconder latencia.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 160: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Execucao concorrente assıncrona

Streams

Pinned-memory

Overlap entre transferencia de dados e computacao

Kernels paralelos

Boas praticas

Considere o uso de Pinned Memory ao transferir dados daCPU para GPU.

Considere utilizacao de streams para possibilitar execucaoparalela de elementos.

Considere transferencia assıncrona de dados da CPU paraGPU para esconder latencia.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 161: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Execucao concorrente assıncrona

Streams

Pinned-memory

Overlap entre transferencia de dados e computacao

Kernels paralelos

Boas praticas

Considere o uso de Pinned Memory ao transferir dados daCPU para GPU.

Considere utilizacao de streams para possibilitar execucaoparalela de elementos.

Considere transferencia assıncrona de dados da CPU paraGPU para esconder latencia.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 162: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Execucao concorrente assıncrona

Streams

Pinned-memory

Overlap entre transferencia de dados e computacao

Kernels paralelos

Boas praticas

Considere o uso de Pinned Memory ao transferir dados daCPU para GPU.

Considere utilizacao de streams para possibilitar execucaoparalela de elementos.

Considere transferencia assıncrona de dados da CPU paraGPU para esconder latencia.

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 163: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Agenda

1 Revisao CUDA

2 Avaliacao de DesempenhoMetricas de DesempenhoTempo em CUDALargura de Banda em GPU

3 Execucao Concorrente AssıncronaTransferencia de Dados Host-DeviceKernels Paralelos

4 Conclusao

5 Referencias

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 164: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Referencias

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)

Otimizacoes de Codigo em CUDA. Mini-curso LNCC.

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. InPPoPP, pages 73-82. ACM, 2008

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA

Page 165: Considera˘c~oes de Desempenho em CUDAdmc/pgpgpu/5.pdf · Revis~ao CUDA Avalia˘c~ao de Desempenho Execu˘c~ao Concorrente Ass ncrona Conclus~ao Refer^encias Considera˘c~oes de Desempenho

Revisao CUDAAvaliacao de Desempenho

Execucao Concorrente AssıncronaConclusao

Referencias

Download Apresentacao

Apresentacao disponıvel em:

gpubrasil.com/seminarios

Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA