2024
Fundamentos de Computação de Alto Desempenho
Nome: Fundamentos de Computação de Alto Desempenho
Cód.: INF14383L
6 ECTS
Duração: 15 semanas/156 horas
Área Científica:
Informática
Língua(s) de lecionação: Português
Língua(s) de apoio tutorial: Português, Inglês
Regime de Frequência: Presencial
Objetivos de Desenvolvimento Sustentável
Objetivos de Aprendizagem
O objetivo desta unidade curricular (UC) é a introdução e estudo do conceito dos ambientes computação de alto desempenho (HPC), da sua arquitetura, organização e utilização por forma a permitir a resolução de problemas complexos em tempo útil. No final desta UC os alunos devem ser capazes de:
- Conhecer os ambientes de clusters HPC
- Perceber a arquitetura de clusters HPC
- Perceber e usar sistemas de armazenamento de dados em clusters HPC
- Aceder e usar sistemas de HPC
- Preparar as suas aplicações para serem executadas em sistemas HPC
- Avaliar o desempenho em sistemas HPC
- Conhecer os ambientes de clusters HPC
- Perceber a arquitetura de clusters HPC
- Perceber e usar sistemas de armazenamento de dados em clusters HPC
- Aceder e usar sistemas de HPC
- Preparar as suas aplicações para serem executadas em sistemas HPC
- Avaliar o desempenho em sistemas HPC
Conteúdos Programáticos
Introdução à consola de Linux
- Abrir um terminal
- Executar aplicações
- Navegar no sistema de ficheiros
-Redirecionar dados
-Encadear comandos (piping)
- Caracteres variáveis no nome dos ficheiros (wildcards)
- Variáveis de ambiente
- Configuração do terminal
- Acesso remoto a sistemas Linux
- Shell scripts básicos
Introdução ao Shell Scripting
Sistemas HPC
- Computação em série, paralela e de alto desempenho
- Visão geral da arquitetura de computadores
- Arquiteturas HPC
- Interligação de nós
- Co-processadores (GPUs, etc)
- Armazenamento em clusters
- Escalonamento de processos
Serviços HPC
- Exemplos de serviços HPC
- Níveis de serviços
- Acesso a serviços HPC
- Login SSH
- Transferência de ficheiros
- Desktop remoto
- Túneis
Segurança em HPC
Ambiente do utilizador
- Compiladores
- Módulos de ambiente
- Sistemas de ficheiros
Sistemas de gestão de jobs
- Batch schedulers
- Trabalhar com jobs
- Array jobs
- GPU jobs
- Abrir um terminal
- Executar aplicações
- Navegar no sistema de ficheiros
-Redirecionar dados
-Encadear comandos (piping)
- Caracteres variáveis no nome dos ficheiros (wildcards)
- Variáveis de ambiente
- Configuração do terminal
- Acesso remoto a sistemas Linux
- Shell scripts básicos
Introdução ao Shell Scripting
Sistemas HPC
- Computação em série, paralela e de alto desempenho
- Visão geral da arquitetura de computadores
- Arquiteturas HPC
- Interligação de nós
- Co-processadores (GPUs, etc)
- Armazenamento em clusters
- Escalonamento de processos
Serviços HPC
- Exemplos de serviços HPC
- Níveis de serviços
- Acesso a serviços HPC
- Login SSH
- Transferência de ficheiros
- Desktop remoto
- Túneis
Segurança em HPC
Ambiente do utilizador
- Compiladores
- Módulos de ambiente
- Sistemas de ficheiros
Sistemas de gestão de jobs
- Batch schedulers
- Trabalhar com jobs
- Array jobs
- GPU jobs
Métodos de Ensino
A metodologia de ensino compreende dois tipos de aula:
- aulas teóricas
- aulas práticas laboratoriais
Nas aulas teóricas são apresentados os conceitos basilares de Computação de Alto Desempenho (HPC), gradualmente, com exemplos de sistemas HPC existentes e casos de estudo.
As aulas práticas laboratoriais são dedicadas à exploração e utilização de sistemas HPC, recorrendo a problemas reais.
- aulas teóricas
- aulas práticas laboratoriais
Nas aulas teóricas são apresentados os conceitos basilares de Computação de Alto Desempenho (HPC), gradualmente, com exemplos de sistemas HPC existentes e casos de estudo.
As aulas práticas laboratoriais são dedicadas à exploração e utilização de sistemas HPC, recorrendo a problemas reais.
Avaliação
A avaliação da Unidade Curricular pode ser contínua e é composta por 2 componentes: 1) componente teórica com um peso de 60% sobre a nota final; e 2) por uma componente prática, com um peso de 40% sobre a nota final.
Avaliação contínua:
Componente teórica (60%)
- 2 provas escritas (50% cada)
Componente prática (40%)
- 1 trabalho prático em grupo (100%)
Avaliação por exame:
Componente teórica (60%)
- 1 exame (100%)
Componente prática (40%)
- 1 trabalho prático em grupo (100%)
Avaliação contínua:
Componente teórica (60%)
- 2 provas escritas (50% cada)
Componente prática (40%)
- 1 trabalho prático em grupo (100%)
Avaliação por exame:
Componente teórica (60%)
- 1 exame (100%)
Componente prática (40%)
- 1 trabalho prático em grupo (100%)
Bibliografia
Negus, Christopher. Linux bible, 10th Edition, John Wiley & Sons, 2020.
Blum, Richard. Linux command line and shell scripting bible, 4th Edition. John Wiley & Sons, 2020.
Yoo, Andy B., Morris A. Jette, and Mark Grondona. "Slurm: Simple linux utility for resource management." Workshop on job scheduling strategies for parallel processing. Springer, Berlin, Heidelberg, 2003.
Supun Kamburugamuve, Saliya Ekanayake. Foundations of Data Intensive Applications: Large Scale Data Analytics under the Hood, 1st Edition. Wiley. 2021
Recursos fornecidos pelo docente.
Blum, Richard. Linux command line and shell scripting bible, 4th Edition. John Wiley & Sons, 2020.
Yoo, Andy B., Morris A. Jette, and Mark Grondona. "Slurm: Simple linux utility for resource management." Workshop on job scheduling strategies for parallel processing. Springer, Berlin, Heidelberg, 2003.
Supun Kamburugamuve, Saliya Ekanayake. Foundations of Data Intensive Applications: Large Scale Data Analytics under the Hood, 1st Edition. Wiley. 2021
Recursos fornecidos pelo docente.
Equipa Docente
- Rui André Correia de Oliveira [responsável]