GPU vs CPU Para Conversão de Imagens

Neste artigo iremos realizar testes para comparar performance de GPU vs CPU na tarefa de conversão de imagens, para os testes iremos converter imagens em diferentes dimensões que estão inicialmente em espaço de cor RGB para o formato de cores YUV utlizando CUDA


Sabemos que GPU graphic processing units podem otimizar e aumentar a performance diversos sistemas inicialmente desenvolvido para o mercado de jogos estes dispositivos podem alavancar sistemas em diversas áreas como na área de Big data, processamento de imagens, processamento de vídeos uma das suas principais características é o fato de poder executar operações em matrizes paralelamente que significa que a GPU é capaz de fazer grande quantidade de cálculos em paralelo o quê resulta em uma resposta muito mais rápida que o processamento de CPU é um dispositivo de propósito geral 

Este artigo é uma tentativa de mensurar o quão mais rápido uma GPU pode performar quando se comparado com o CPU para este experimento iremos comparar o tempo de execução de um sistema usando GPU contra um sistema usando CPU na conversão de imagens especificamente estaremos convertendo imagens que inicialmente estarão nos espaço de cor RGB para o espaço de cor yuv

 

Experimentos

Realizamos experimentos com duas imagens. A primeira imagem foi uma imagem em ppm das dimensões 1000x700 e tamanho do arquivo 2,1 MB. A segunda imagem tem 10000x7000 de dimensão e um tamanho de 201 MB. 

 

Hardware Utilzado

Todos os experimentos são executados em CPU Intel com 16 núcleos de 2400 MHz e com GPU PASCAL da arquitetura NVIDIA TITAN X. Para medir o tempo gasto, estamos usando o timer criado pela função “sdkCreateTimer ()” presente na biblioteca CUDA. também estamos considerando o tempo total gasto na conversão, incluindo o tempo para transferir a imagem para a memória do dispositivo e para transferir os resultados do dispositivo para o host.
Após cada transformação, estamos verificando se a imagem de saída está correta e com pequenas perdas de conversão.

 

Resultados

* Tempo em milisegundos

 

Conclusão

  • Os tempos de conversão da GPU são mais rápidos que os tempos de processamento da CPU, especialmente para imagens grandes.

  • O "overhead"de comunicação quando transferindo as imagens para memória da GPU é considerável, para algumas imagens pequenas, pode até causer que o desempenho de processamento em GPU seja pior que processar em CPU

 

Outros experimentos foram executados como por exemplo como o número de threads pode afetar o desempenho de processamento da imagem na GPU o o artigo na íntegra está disponivel no link abaixo o código utilizado nos experimentos também foi disponibilizado

Espero que este conteúdo tenha te ajudado um forte abraço!

 

Artigo Na Íntegra

Código Dos Experimentos

 

Se Inscreva Na Nossa Newsletter Tenha Acesso Aos Melhores Artigos