considera˘c~oes de desempenho em cudadmc/pgpgpu/5.pdf · revis~ao cuda avalia˘c~ao de desempenho...
TRANSCRIPT
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
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
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
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
Revisao CUDAAvaliacao de Desempenho
Execucao Concorrente AssıncronaConclusao
Referencias
Arquitetura Fermi
Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA
Revisao CUDAAvaliacao de Desempenho
Execucao Concorrente AssıncronaConclusao
Referencias
Tipos de Memoria
Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA
Revisao CUDAAvaliacao de Desempenho
Execucao Concorrente AssıncronaConclusao
Referencias
Hierarquia de Threads
Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA
Revisao CUDAAvaliacao de Desempenho
Execucao Concorrente AssıncronaConclusao
Referencias
CUDA C
Tharsis T. P. Souza (USP) Consideracoes de Desempenho em CUDA
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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