Currículo

Computação Gráfica de Alto Desempenho 04945

Contextos

Groupo: Aprendizagem Automática Aplicada > Pós-Graduação de 2º Ciclo > Unidades Curriculares Obrigatórias

ECTS

6.0 (para cálculo da média)

Objectivos

No final desta UC, cada estudante deverá ser capaz de: OA1: Explicar a arquitetura e os princípios fundamentais da computação paralela em GPU OA2: Diferenciar as várias abordagens de programação paralela e selecionar as técnicas mais adequadas para otimizar o desempenho das aplicações computacionais em GPU. OA3: Implementar kernels CUDA personalizados, utilizando a framework Numba OA4: Demonstrar capacidade de análise de desempenho, detetando e corrigindo estrangulamentos computacionais e problemas de ocupação, comunicação e latência de memória. OA5: Aplicar o cuDNN para acelerar operações de aprendizagem profunda, integrando as rotinas otimizadas da biblioteca em fluxos de trabalho de treino e inferência de redes neuronais convolucionais. OA6: Desenvolver soluções completas que combinam computação gráfica, processamento paralelo e algoritmos de aprendizagem profunda, consolidando competências técnicas e de raciocínio crítico na abordagem de problemas complexos.

Programa

CP1: Introdução à computação paralela e à arquitetura CUDA, conceitos de paralelização de tarefas, estrutura de blocos e threads, hierarquia de memória em GPU CP2: Desenvolvimento de kernels em CUDA, modelação de grids, otimização do acesso à memória global, partilhada e constante, técnicas de coalescência de memória. CP3: Compilação para GPU utilizando o Numba, paralelização de ambientes com recurso à GPU. CP4: Perfis de execução, identificação de estrangulamentos computacionais, ajuste de parâmetros de grid e bloco, estratégias de redução do uso de memória global. CP5: Introdução ao cuDNN: Principais rotinas e funcionalidades, integração com estruturas de dados e frameworks de aprendizagem profunda CP6: Casos de estudo e aplicações práticas, simulação e treino de redes neuronais convolucionais

Método de Avaliação

Esta UC, por ter uma natureza bastante prática e de aplicação, segue o modelo de de Avaliação ao Longo do Semestre (prevista em RGACC), não contemplando exame final. A avaliação desta UC tem a seguinte composição: - 2 Quizzes (20%): Ao longo do semestre serão disponibilizados dois quizzes de curta duração, realizados individualmente na plataforma de e-learning. - Projeto Final (80%): O projeto final consiste no desenvolvimento de um trabalho prático que agrega os conhecimentos e competências adquiridos ao longo do semestre, onde poderá haver participação de organizações externas / empresas no desafio proposto. Este projeto será desenvolvido ao longo do semestre e será acompanhado por tutorias individuais ou em grupo, de modo a garantir o seguimento contínuo e o feedback formativo. A avaliação do Projeto Final (80%) será faseada da seguinte forma: -- 1ª Tutoria (20%): Nesta fase, o estudante apresenta o planeamento inicial do projeto, incluindo a definição do problema e os objetivos a atingir com o projeto. -- 2ª Tutoria (20%): Nesta segunda fase, o foco centra-se no progresso técnico do projeto. O estudante deverá demonstrar o código parcial já desenvolvido, apresentar testes parciais de desempenho e discutir as primeiras estratégias de otimização. Espera-se uma melhoria contínua do trabalho, beneficiando do feedback do docente. -- Tutoria Final (40%): Na última fase, o estudante apresenta a versão final do projeto, incluindo todo o código funcional, a análise detalhada de desempenho, a discussão sobre resultados obtidos, as dificuldades enfrentadas e as soluções adotadas. É também avaliada a capacidade de análise crítica, a clareza da comunicação e a relevância dos resultados. O conjunto das três tutorias (1ª, 2ª e Final) totaliza 80% da avaliação, e cada tutoria possui uma nota mínima de 8,5 valores. Para obter aprovação na UC, o estudante deverá alcançar uma nota final mínima de 10 valores, resultante da soma ponderada dos quizzes (20%) e do projeto final (80%). Os quizzes, realizados individualmente, visam aferir a compreensão dos conteúdos teóricos e práticos à medida que são introduzidos, permitindo um feedback rápido e contínuo. Não será exigida nota mínima nos quizzes, mas a sua realização contribui para a consolidação das aprendizagens e tem um peso de 20% na nota final. Um estudante é considerado como Reprovado caso não atinja aprovação com a Avaliação ao Longo do Semestre desta UC. A melhoria de nota poderá ser obtida no ano letivo seguinte, repetindo as componentes de avaliação, em conformidade com o regulamento em vigor. A 1ª Época e 2ª Época poderão ser utilizadas para realização de momentos de avaliação. A presença nas sessões síncronas não é obrigatória. Para além do RGACC, recomenda-se a leitura de outros documentos de referência para o processo de avaliação, tais como o Regulamento de Estudantes com Estatuto Especial (REEE) e o Código de Conduta Académica (CCA).

Carga Horária

Carga Horária de Contacto -

Trabalho Autónomo - 0.0

Carga Total -

Bibliografia

Principal

  • "1. Tuomanen, B. (2018). Hands-On GPU Programming with Python and CUDA: Explore high-performance parallel computing with CUDA. Packt Publishing. 2. 1. Kirk, D. B., & Hwu, W.-M. W. (2016). Programming Massively Parallel Processors: A Hands-on Approach 3. Storti, D., & Yurtoglu, M. (2016). CUDA for engineers: An introduction to high-performance parallel computing (1st ed.). Addison-Wesley Professional. : . .

Secundária

  • 4. Wilt, N. (2013). The CUDA Handbook: A comprehensive guide to GPU programming (1st ed.). Pearson Education. 5. Cook, S. (2013). CUDA Programming: A Developer’s Guide to Parallel Computing with GPUs. Morgan Kaufmann. 6. Sanders, J., & Kandrot, E. (2011). CUDA by Example: An Introduction to General-Purpose GPU Programming. Addison-Wesley." : . .

Disciplinas de Execução