Arquitecturas
Paralelas I
Licenciatura
em Engenharia de Sistemas e Informática - 4ºAno (Opção T I., I - LESI)
Licenciatura
em Matemática e Ciências da Computação - 5ºAno (Opção III, IV, V - LMCC)
2006/07
João Luís Sobral (Prof. Auxiliar) - Docente
responsável pela leccionação teórico e teórico-prática
Telefone: extensão 4459 (Laboratório de Investigação de Arquitectura de
Computadores)
Horário de atendimento: segunda-feira 14:00-17:00; quarta-feira 14:00-17:00
Com esta disciplina pretende-se que os alunos sejam capazes de desenvolver
aplicações informáticas que tirem partido de máquinas constituídas por vários
processadores (incluindo multi-core) e de Clusters
máquinas.
Os alunos deverão ser capazes de conceber e implementar aplicações com
vários fios de execução (i.e., concorrentes) e distribuídas por várias
máquinas.
Introdução
As
recentes evoluções nos sistemas de computação possibilitaram, por um lado, uma
crescente difusão de sistemas com vários processadores (e.g., cores), por outro lado, a interligação de
um elevado número de recursos computacionais amplamente disponíveis, que quando
utilizados em conjunto, podem ser vistos como um sistema de computação de
elevado desempenho e baixo custo.
A
capacidade de compreensão das características destes sistemas de computação bem
como o domínio dos conceitos necessários ao desenvolvimento de aplicações para
este tipo de sistemas de computação é hoje uma aptidão indispensável. Um sinal
evidente desta importância é o facto das linguagens mais recentes (e.g., Java, C#)
incluírem suporte embutido para aplicações concorrentes e distribuídas, sem
necessidade de recurso a bibliotecas externas.
Os conceitos básicos do paralelismo na organização
e estrutura dos computadores foram já adquiridos em disciplinas anteriores,
sendo a componente de computação de alto nível, nessas plataformas, o objecto
base desta disciplina. Com esta disciplina pretende-se que os alunos adquiram
competências no domínio da computação paralela em larga escala, relacionadas
com o desenvolvimento de aplicações cuja execução se pretende eficiente e
eficaz num número elevado de recursos computacionais. Será dada especial
ênfase às questões da gestão e distribuição de carga computacional /
comunicações e modelação / avaliação / optimização do desempenho das
aplicações.
No final da disciplina os alunos deverão ser capazes de projectar e
implementar aplicações paralelas que utilizem de forma eficiente o conjunto de
máquinas.
I.
Arquitectura
dos sistemas de computação: sistemas de memória partilhada (incluindo
multi-core) e sistemas de memória distribuída. Introdução à GRID (rede mundial
de sistema de computação).
II.
Modelos de
programação paralela e linguagens: processos comunicantes e objectos activos.
Distribuição de componentes pelos recursos computacionais. Análise de
mecanismos de especificação de concorrência e análise do middleware
necessário à execução de aplicações distribuídas por várias máquinas.
III.
Projecto de aplicações
paralelas. Gestão eficiente da distribuição de componentes através da medição,
modelação, análise e optimização do desempenho: relação custo/benefício de
concorrência/paralelismo e sua quantificação (métricas); adaptação da
granularidade da computação/comunicação; estratégias de distribuição da carga
de dados/computação/ comunicação.
Componente prática
Análise do
suporte para multiprocessamento fornecido pelos processadores mas recentes (AMD
Opteron e Intel Core). Clusters de máquinas e redes de comunicação de
elevado desempenho.
Análise de
ambientes de programação com suporte a paralelismo: MPI (Message Passing
Interface), multithreading (Java/C#), invocação remota de métodos
(Java RMI e .Net remoting) e OpenMP. Desenvolvimento de pequenas aplicações.
Projecto:
desenvolvimento de uma aplicação paralela de média complexidade (em C/MPI,
C#/.Net ou Java RMI), análise de seu desempenho e optimização
Aulas teóricas: serão leccionadas à base de acetatos, os quais contêm
essencialmente os tópicos de cada assunto a ser analisado. No final do ano
lectivo será disponibilizada uma versão completa dos acetatos.
Sessões teórico-práticas: serão acompanhadas de aulas de
exposição dos conceitos práticos relevantes ao desenvolvimento dos trabalhos e
respectivo guião de execução dos mesmos.
Cópias dos acetatos e dos guiões das aulas práticas serão disponibilizados
em Guiões.
Bibliografia recomendada para leitura:
A disciplina de Arquitecturas Paralelas I está
organizada em aulas teóricas (2h/sem) e em sessões teórico-práticas (2h/sem).
A frequência às aulas teóricas e
teórico-práticas não é obrigatória, mas é recomendada. As aulas teóricas
são utilizadas para se transmitirem os conceitos necessários à compreensão da
matéria. O material leccionado nestas aulas é encadeado, pelo que se torna
indispensável o seu regular acompanhamento.
As sessões teórico-práticas têm por objectivo
aplicar os conceitos adquiridos nas teóricas.
A avaliação da disciplina efectua-se
exclusivamente através de um trabalho prático.