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 os princípios fundamentais da computação paralela e o funcionamento das arquiteturas GPU modernas. OA2: Selecionar e aplicar ferramentas de computação acelerada, como CuPy, Numba e CUDA, para resolver problemas computacionalmente intensivos. OA3: Desenvolver e otimizar aplicações paralelas em GPU, implementando kernels e gerindo eficientemente os recursos computacionais. OA4: Avaliar o desempenho de aplicações paralelas, recorrendo a técnicas de profiling, identificação de estrangulamentos e otimização da utilização de memória e processamento. OA5: Integrar tecnologias de computação acelerada em frameworks modernas de aprendizagem profunda, utilizando ferramentas como RAPIDS, Dask e PyTorch. OA6: Desenvolver soluções completas de computação de alto desempenho aplicadas à aprendizagem profunda e à visão por computador, demonstrando capacidade de análise crítica e otimização de desempenho.

Programa

CP1: Fundamentos da computação paralela e arquiteturas GPU. Conceitos de paralelização, concorrência, escalabilidade, organização de threads, blocos, grids e hierarquia de memória. CP2: Programação paralela em GPU utilizando CuPy, Numba e CUDA. Desenvolvimento de kernels, gestão de memória, compilação e otimização de operações paralelas. CP3: Análise e otimização de desempenho em GPU. Profiling, identificação de estrangulamentos computacionais, otimização do acesso à memória e configuração eficiente de kernels. CP4: Frameworks para computação acelerada e distribuída. Utilização de RAPIDS, Dask e integração com PyTorch para treino de modelos de aprendizagem profunda. CP5: Técnicas avançadas de aceleração para aprendizagem profunda. Mixed Precision, Gradient Accumulation, Activation Checkpointing e otimização do treino em GPU. CP6: Casos de estudo e desenvolvimento de aplicações de computação de alto desempenho aplicadas à aprendizagem profunda e visão por computador.

Método de Avaliação

Esta UC, por ter uma natureza bastante prática e de aplicação, segue o modelo de Avaliação ao Longo do Semestre (ALS, prevista em RGACC) por projeto, não contemplando exame final. A avaliação desta UC possui os seguintes elementos de avaliação: - Projeto (100%): O projeto consiste no desenvolvimento de um trabalho prático que agrega os conhecimentos e competências adquiridos ao longo do semestre. A avaliação do Projeto (100%) 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 (30%): Nesta segunda fase, o foco centra-se no progresso técnico do projeto. -- Tutoria Final (50%): 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. Contempla também uma discussão oral individual como item de ponderação. O conjunto das três tutorias (1.ª, 2.ª e Final) totalizam 100% da avaliação, e cada tutoria possui uma nota mínima de 8,5 valores. Em qualquer elemento de avaliação, o docente ou coordenador da UC poderá solicitar, em qualquer momento durante o semestre, uma discussão oral individual destinada à confirmação da autoria dos trabalhos apresentados e/ou à aferição dos conhecimentos e competências demonstrados pelo estudante. A utilização de ferramentas de inteligência artificial generativa é permitida apenas como instrumento de apoio ao processo de aprendizagem, não podendo, em momento algum, substituir a autoria intelectual e a responsabilidade individual do estudante sobre qualquer elemento de avaliação entregue. O estudante é integralmente responsável pelo conteúdo submetido, devendo ser capaz de o justificar, explicar e defender perante o docente e/ou coordenador. Para esclarecimento adicional, é indispensável a leitura de outros documentos de referência para o processo de avaliação, tais como o Guia para uma Utilização Responsável da Inteligência Artificial em Trabalhos Académicos (Conselho Científico, 21/04/2026), o Código de Conduta Académica (CCA) e o Regulamento Disciplinar de Discentes (RDD). Para obter aprovação na UC, o estudante deverá alcançar uma nota final mínima de 10 valores, resultante da soma ponderada de todas as tutorias. Um estudante é considerado como reprovado caso não atinja aprovação na ALS. 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.

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. 4. Wilt, N. (2013). The CUDA Handbook: A comprehensive guide to GPU programming (1st ed.). Pearson Education.:

Secundária

  • 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

2026/2027 - 1º Semestre

2025/2026 - 1º Semestre