Computação de Alto Desempenho
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Informática |
Ocorrência: 2018/2019 - 2S
Ciclos de Estudo/Cursos
Sigla |
Nº de Estudantes |
Plano de Estudos |
Anos Curriculares |
Créditos UCN |
Créditos ECTS |
Horas de Contacto |
Horas Totais |
BINF |
19 |
Plano Estudos 2016 |
2 |
- |
5 |
52,5 |
135 |
Docência - Responsabilidades
Língua de trabalho
Português - Suitable for English-speaking students
Objetivos
O objetivo desta UC é dar a conhecer aos alunos os benefícios da otimização das aplicações e da sua paralelização através de ferramentas open-source, práticas e hardware adequados para a computação científica, bem como dar-lhes oportunidade de desenvolver e otimizar código de execução paralela, seja utilizando os núcleos do processador de uma máquina, seja utilizando várias máquinas em simultâneo, e ao mesmo tempo tirando partido dos recursos de processamento das placas gráficas atuais.
Resultados de aprendizagem e competências
No final desta unidade curricular o estudante deverá estar apto para:
- Compreender o funcionamento do sistema operativo.
- Compreender como se processa a comunicação entre computadores.
- Compreender o conceito de processamento paralelo e distribuído como forma de aumentar o desempenho na gestão e análise de dados.
- Desenvolver algoritmos e modelos que permitam resolver problemas que explorem a gestão da concorrência, da distribuição e do paralelismo.
- Reconhecer as diferentes arquiteturas de hardware de suporte ao funcionamento destes algoritmos.
Modo de trabalho
Presencial
Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)
É desejável que os alunos disponham de um conhecimento de comandos UNIX básicos e navegação do sistema de ficheiros UNIX. Também podem adquirir estes conhecimentos durante as primeiras semanas da UC. Pressupõe competências básicas adquiridas em programação.
Programa
- Noções Básicas de Sistemas Operativos (4 semanas)
Semanas 1 e 2: Introdução aos Sistemas Operativos (SO) e Gestão de Processos e threads
- Evolução histórica
- Estrutura e objetivos dum SO
- Panorâmica atual
- Gestão de processos e threads: Concorrência e pseudoparalelismo
- Comunicação entre processos e threads
- Escalonamento de processos
Semanas 3 e 4: Gestão de Memória e Gestão de entradas/saídas
- Tipos de memória
- Memória virtual, paginação e segmentação
- E/S: Implementação interna
- Dispositivos de E/S, controladores e DMA
- Tratamento de interrupções
- Noções Básicas de Redes de Computadores (4 semanas)
Semanas 1 e 2: Introdução às Redes de computadores e Equipamentos e topologias de redes
- Conceitos de Redes de Computadores
- Modelos OSI e TCP/IP
- Redes TCP/IP e Redes Ethernet
- Equipamentos de Redes
- Redes Locais Sem Fios
- Redes Locais Virtuais
Semanas 3 e 4: Comunicação sobre Redes de computadores
- Modelos de comunicação e distribuição de processamento
- Interfaces de programação distribuída em C e em Java
- Introdução ao conceito de processamento paralelo e à computação distribuída. Principais aplicações e motivação (6 semanas)
- Modelo Cliente/Servidor versus Modelo Peer-to-Peer
- Comunicação por passagem de mensagens
- Desafios da computação paralela (shared state, correctness)
- Mecanismos de execução paralela
- Serialização e sincronização
- Locks e Semáforos
- Variáveis condicionais
- Modelos e paradigmas da computação paralela
- Aplicações da computação paralela
- Introdução à computação de alto desempenho (3 semanas)
- Introdução a CUDA/OpenCL e Processadores Gráficos (GPUs)
- Interfaces e modelos de desenvolvimento para GPUs
- Fatores de desempenho
Bibliografia Obrigatória
Tanenbaum Andrew; Modern operating systems, Prentice Hall Press, 2015. ISBN: 978-0133591620
Pacheco Peter; An introduction to parallel programming, Morgan Kaufmann, 2011. ISBN: 978-0123742605
Bibliografia Complementar
Andrews Greg; Foundations of parallel and distributed programming, Addison-Wesley Longman Publishing Co., 1999. ISBN: 978-0201357523
van Steen, Maarten and Tanenbaum, Andrew ; Distributed Systems: Principles and Paradigms, Prentice Hall Press, 2006. ISBN: 978-1543057386
Métodos de ensino e atividades de aprendizagem
As aulas presenciais com apresentação de slides e discussão de tópicos teóricos ocuparão 50% do tempo da disciplina. Os outros 50% serão divididos entre atividades práticas semanais e desenvolvimento e teste do trabalho prático em grupo.
Software
Oracle VirtualBox
Palavras Chave
Ciências Físicas > Ciência de computadores > Informática > Informática aplicada
Ciências Tecnológicas > Tecnologia > Tecnologia de computadores > Tecnologia de software
Ciências Tecnológicas > Engenharia > Engenharia biomédica
Tipo de avaliação
Avaliação distribuída sem exame final
Componentes de Avaliação
Designação |
Peso (%) |
Teste |
60,00 |
Trabalho laboratorial |
40,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Frequência das aulas |
28,00 |
Trabalho laboratorial |
28,00 |
Total: |
56,00 |
Fórmula de cálculo da classificação final
NF(>= 10.0) =[CT]*0.6+[CP]*0.4
[CT]= Componente Teórica (>= 7.0) obtida por média ponderada dos dois testes em avaliação contínua OU por exame.
[CP]= Componente Prática (>= 7.0) = = TP1 * 0.5 + TP2 * 0.5
TP1 e TP2 correspondem às duas entregas do trabalho prático da UC.