Proposta TCC
Nome do Aluno
Thiago de Gouveia Nunes
Nome do Supervisor
Prof. Doutor Marcel P. Jackowski
Tema da Monografia
Comparação de Eficiência entas plataformas OpenCL e CUDA em GPUs NVIDIA
Resumo
No contexto General-Purpose computing on Graphics Processing Units (GPGPU), é natural se preocupar com o máximo desempenho dos programas. Programas que rodam no contexto GPGPU são altamente paralelizáveis. Esse trabalho consiste na comparação de desempenho e abstração de uma GPU entre duas plataformas para programação paralela , Open Computing Language (OpenCL) e Compute Unified Device Architecture (CUDA).
Objetivos
- Desenvolver 2 tipos de kernels, um memory-bound (muito acesso à memória) , outro compute-bound (muito processamento), que serão usados para comparar a performance entre o OpenCL e o CUDA. Um kernel é uma função que roda nos processadores de uma GPU.
- Mostrar as diferenças e semelhanças da abstração da GPU das duas plataformas. A abstração de cada plataforma define como ela representa os dados e o processamento de um kernel na GPU.
- Comparação entre o arquivos compilados gerados por cada plataforma ( arquivos .ptx ). O arquivo .ptx contém um kernel compilado para uma linguagem Assembly, específica para GPUs da NVIDIA.
Atividades já realizadas
- A abstração da GPU do OpenCL já foi estudada.[1]
- Os dois tipos de kernels foram estudados, e alguns exemplos simples foram implementados.
- A arquitetura do hardware (GPU) em que as aplicações estão rodando, uma Geforce GTX 460SE, já foi estudado.[2]
- Os kernels já foram terminados.
- O poster e a monografia já foram temrinados.
Cronograma de atividades
- Janeiro
- Estudo da abstração do OpenCL.
- Fevereiro
- Estudo dos tipos de kernels.
- Estudo da arquitetura da GPU.
- Março
- Estudo da abstração do CUDA.
- Estudo da arquitetura da GPU.
- Abril
- Estudo dos tipos de kernels.
- Estudo sobre profiling em OpenCL.
- Maio
- Estudo dos tipos de kernels.
- Estudo sobre profiling em OpenCL.
- Gerar o .ptx para os kernels em OpenCL.
- Junho
- Estudo de profiling em CUDA.
- Implementação dos kernels em OpenCL.
- Gerar o .ptx para os kernels em OpenCL.
- Julho
- Implementação de profiling nos kernels em OpenCL.
- Implementação dos kernels em CUDA.
- Gerar o .ptx para os kernels em CUDA.
- Agosto
- Bateria de testes dos kernels.
- Estudar a interferência de preempções nos resultados dos testes.
- Continuar escrita da monografia.
- Setembro
- Entregar a prévia da monografia.
- Continuar escrita da monografia.
- Outubro
- Finalizar a escrita da monografia.
- Elaborar a apresentação e o pôster.
- Novembro
- Confecção do pôster.
- Apresentar o trabalho.
- Dezembro
- Entregar a monografia.
Estrutura esperada da monografia
- Introdução
- Motivação.
- Objetivos.
- Problemas.
- Conceitos e tecnologias estudadas
- GPGPU.
- Arquitetura da GPU.
- Conceitos comuns entre as Plataformas.
- Abstração do OpenCL.
- Abstração do CUDA.
- Atividades realizadas
- Kernels.
- Testes.
- Comparação da estrutura do .ptx gerado pelos kernels do OpenCL e do CUDA.
- Resultados e produtos obtidos
- Resultado dos testes.
- Comparação das abstrações.
- Comparação da performance.
- Conclusão
- Bibliografia
- Parte subjetiva
- Desafios e frustrações.
- Disciplinas do curso.
- Continuação do estudo.
Referências
[1] Munshi, A. The OpenCL Specification. v.15. Khronos OpenCL Working Group. 2011[2] Arquitetura da placa GeForce GTX 460SE, http://www.geforce.co.uk/hardware/desktop-gpus/geforce-gtx-460/architecture.