Computação de Alto Desempenho
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Informática |
Ocorrência: 2021/2022 - 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 |
30 |
Plano Estudos 2016 |
2 |
- |
5 |
52,5 |
135 |
Docência - Responsabilidades
Língua de trabalho
Português
Objetivos
Adquirir competências básicas no domínio dos Sistemas Operativos e multiprogramação.
Entender o conceito de programação paralela e de alto desempenho.
Saber quando aplicar este conhecimento a problemas da Bioinformática.
Entender o conceito de programação paralela e de alto desempenho e saber quando aplicar este conhecimento a problemas da Bioinformática.
Resultados de aprendizagem e competências
Descreve a estrutura e o funcionamento de um SO, identificando as suas partes constituintes e relacionando-o com os vários componentes físicos (hardware) do computador.
Enuncia e compara diferentes algoritmos de escalonamento, ou seleção, analisando os seus aspetos positivos e negativos.
Enuncia e compara diversas topologias de redes de computadores e descreve corretamente o funcionamento das redes locais (cabeadas ou não) e da Internet e dos paradigmas cliente/servidor e
peer-to-peer.
Enuncia os diversos modelos da computação de alto desempenho.
Define um dado problema ao nível da Bioinformática, identificando as suas condicionantes.
Elabora e descreve o funcionamento dum SO baseando-se em diagramas de estado dos processos.
Programa e descreve o funcionamento dum programa que utiliza técnicas de multiprogramação como semáforos.
Programa aplicações para computadores que façam uso dos recursos do computador de forma eficiente usando e dominando técnicas de multiprogramação e sincronização de threads/processos e programação paralela a partir dum problema.
Resolve problemas da sua área recorrendo a diferentes abordagens da computação de alto desempenho.
Modo de trabalho
Presencial
Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)
Pressupõe competências básicas adquiridas em programação e conhecimento das utilizações mais frequentes da informática na Bioinformática.
Programa
Noções Básicas de Sistemas Operativos
- 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
- 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
- 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
- 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.
- 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
- Modelos e paradigmas da computação paralela
- Aplicações da computação paralela
Introdução à computação de alto desempenho
- 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
Andrews Greg; Foundations of multithreading, parallel and distributed programming, Addison-Wesley Longman Publishing Co., 1999. ISBN: 978-0201357523
Bibliografia Complementar
Tanenbaum Andrew; Distributed Systems: Principles and Paradigms, Prentice Hall Press, 2006. ISBN: 978-1543057386
Pacheco Peter; An introduction to parallel programming, Morgan Kaufmann, 2011. ISBN: 9780123742605
Métodos de ensino e atividades de aprendizagem
Aulas teóricas com apresentação de slides e debates; apresentações de trabalhos de pesquisas em grupo; questionários Moodle para reforço de aprendizagem e avaliação.
Aulas práticas com software licenciado ou livre e simulação nos computadores do laboratório.
Proposta de trabalho de pesquisa sobre o estado da arte e projeto de programação paralela com apresentações em sala pelos estudantes.
Software
MinGW
VSCode
Python3
PyCharm
Palavras Chave
Ciências Tecnológicas > Tecnologia > Tecnologia de computadores > Tecnologia de software
Ciências Tecnológicas > Tecnologia > Tecnologia de computadores > Tecnologia de sistemas
Tipo de avaliação
Avaliação distribuída sem exame final
Componentes de Avaliação
Designação |
Peso (%) |
Apresentação/discussão de um trabalho científico |
30,00 |
Teste |
35,00 |
Participação presencial |
35,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Apresentação/discussão de um trabalho científico |
4,00 |
Estudo autónomo |
37,00 |
Frequência das aulas |
28,00 |
Trabalho de investigação |
38,00 |
Trabalho laboratorial |
28,00 |
Total: |
135,00 |
Obtenção de frequência
Excecionalmente neste semestre não será computada a assiduidade dos alunos.
Fórmula de cálculo da classificação final
Nota final = 0,35xquestionários + 0,35xteste + 0,30xprojeto