Computação Paralela (2003/2004)
|
| Apresentação | Introdução | Programa | Avaliação |Apoio |Bibliografia | |
| Sumários | |
departamento de informática |
Bem vindos à página principal da disciplina de Computação Paralela do Mestrado/Especialização em Informática. Este documento foi pensado para ser um documento vivo, continuamente actualizado, para acompanhar a evolução da disciplina e promover a discussão nas aulas.
Os interessados poderão apresentar as suas sugestões ou críticas, sobre quaisquer aspectos que considerem relevantes no âmbito do curso, através do endereço electrónico: pina@di.uminho.pt.
António Manuel Silva Pina
Correio electrónico: pina@di.uminho.pt
Página pessoal: http://www.di.uminho.pt/~amp
Com a computação paralela ao “alcance de todos” vulgarizaram-se os seus instrumentos e surgem novas oportunidades para a sua utilização, nos mais variados domínios da actividade humana.
É neste quadro que o programa da disciplina Computação Paralela foi pensado, como uma nova abordagem que acompanha a emergência dos clusters, como um novo ponto de referência, em termos da relação preço/rendimento, para a construção de sistema de computação de elevado desempenho.
A disciplina aborda a temática da computação paralela pondo a ênfase nos aspectos mais relevantes para o engenheiro. O objectivo é ajudá-lo a tomar decisões fundamentadas no planeamento de sistemas de computação paralela e a desenvolver aplicações paralelas para esses sistemas.
Abordagem
O programa de estudos promove uma visão da computação paralela como uma disciplina que cobre vários aspectos dos sistemas paralelos e distribuídos, em que o desenho de programas é apresentado de uma forma sistemática, entrando em consideração, desde o início, com os aspectos do desempenho, da escalabilidade e do custo.
A ênfase vai para o estudo das tecnologias de computação e de comunicação, na origem das arquitecturas e plataformas escaláveis, os paradigmas da programação por passagem de mensagens e da memória partilhada baseada em múltiplos de execução e para a apresentação de exemplos de sistemas reais baseados em tecnologias de clustering. Numa visão a dois níveis, o programa da disciplina, estrutura-se, da seguinte forma:
O primeiro nível, “Fundamentos”, compreende uma discussão alargada dos conceitos de escalabilidade, o projecto de algoritmos paralelos, a análise de rendimento e a construção de programas, para explorar o paralelismo e a distribuição.
O segundo nível “Instrumentos”, aborda com alguma profundidade, o modelo de computação por processos comunicantes, através da exposição das suas características e o estudo da sua realização concreta em bibliotecas de código para passagem de mensagens.
Fundamentos
Paralelismo e Computação
Computação Paralela: introdução aos conceitos básicos de concorrência, escalabilidade, localidade e modularidade; apresentam-se também os modelos de computação e de programação usados para o desenvolvimento de aplicações paralelas.
Processos Tarefas e Fios de Execução: definição abstracta de processo; modelos de execução e espaço de endereçamento; introdução à norma Posix Threads.
Desenho de Algoritmos: apresentação de uma metodologia para o desenho de algoritmos a partir do reconhecimentos da divisão em: partição, comunicação, aglomeração e arranjo.
Análise Quantitativa: apresentação dos modelos usados para medir o rendimento dos algoritmos; desenvolvimento de um modelo simples de rendimento para assistir à avaliação das alternativas de desenho e à realização de programas paralelos.
Clustering
Infra-estruturas de Interconexão: apresentação das tecnologias e redes de interconexão actuais. A ênfase é colocada nos produtos normalizados, protocolos e métricas de rendimento, das redes de elevado desempenho mais recentes.
Custering: tendências da computação em redes de computadores em sistemas de baixa e alta-gama e a apresentação de exemplos de sistemas reais representativos.
Instrumentos
Processos Comunicantes
Passagem de Mensagens: apresentação dos princípios da programação por passagem de mensagens; contextos e grupos; comunicação ponto-a-ponto e alargada; comunicação bloqueante e comunicação não bloqueante.
Plataformas: introdução ao PVM (Máquina Paralela Virtual); passagem de mensagens em PVM ; configuração; programação e execução de programas paralelos.
Ferramentas: visualização e depuração de programas paralelos; introdução ao xpvm, uma consola gráfica para o PVM.
Controvérsia: PVM versus MPI (Interface para a Passagem de Mensagens).
No que diz respeito à avaliação da disciplina, o presente documento fornece apenas princípios gerais, sem prejuízo das eventuais adaptações aos regimes de funcionamento efectivo. Na verdade, o desenvolvimento da disciplina irá depender da participação e envolvimento pessoal dos estudantes, ao longo do período escolar, o que se poderá traduzir na necessidade de orientar a disciplina para a satisfação de objectivos não previstos inicialmente.
O princípio geral definido para a avaliação desta disciplina baseia-se na realização de uma Prova Escrita Final, a realizar de acordo com o calendário geral, da qual resultará uma classificação final numa escala de zero a vinte valores.
Curiosamente, não existe nenhum texto capaz, só por si, de cobrir adequadamente todo o material que seria necessário para esta disciplina. Os textos de suporte são retirados de artigos de literatura técnica, capítulos de livros e notas específicas preparadas pelo docente, de entre artigos e transparentes. Há no entanto que ter em consideração que num mundo tecnológico em acelerada renovação, livros e artigos rapidamente se tornam obsoletos.
Assim, numa tentativa de proporcionar uma rápida adaptação à mudança, tendo em vista um permanente enriquecimento e aprofundamento dos tópicos relacionados com a computação paralela e, ao mesmo tempo, o melhoramento dos mecanismos de comunicação com os estudantes a página WEB prevê-se a manutenção de uma página da disciplina, cujo morada é: http://www.di.uminho.pt/~amp/micei/compParalela.htm.
Bibliografia básica
“Projecto e Construção de Programas Paralelos”, António Pina, Departamento de Informática, 2000, http://www.di.uminho.pt/~pina/textos/pcpp.htm;
“Máquina Paralela Virtual (PVM)”, António Pina, Departamento de Informática, 2000, http://www.di.uminho.pt/~pina/textos/pvm.htm;
“Modelo de Programação por Processos Comunicantes”, António Pina, Departamento de Informática, 2000, http://www.di.uminho.pt/~pina/textos/mppc.htm;
“Introdução ao Paralelismo”, António Pina, Departamento de Informática, 2000, http://www.di.uminho.pt/~pina/textos/ip.htm;
“Análise de Desempenho”, António Pina, Departamento de Informática, 2000, http://shiva.di.uminho.pt/~pina/textos/mppc.htm;
"Designing and Building Parallel Programs", Ian Foster, Addison Wesley, 1994, http://www.mcs.anl.gov/dbpp;
Cluster Computing, the Journal of Networks, http://www.coe.uncc.edu/~abw/parallel/links.html;
"How to build a Beowulf", Thomas L. Sterling, John Salmon, Donald J. Becker e Daniel F..Savarrese, The MIT Press, ISBN 0-262-69218-X, 1999;
“Parallel Computer Architecture - A Hardware Software Approach", David Cueller e Jaswinder Pal Sing, Morgan Kaufmann, 1999;
“High Performance - Cluster Computing", Rajkumar Buyya, Prentice Hall, 1999;
“Scalable Parallel Computing" – Kai Hwang e Xu Zhiwei, Mc Graw Hill, ISBN 0-07-031798-4,1998;
“Threads Extension for Portable Operating Systems”, ANSI/IEEE Std 1003.1c, 1996;
“In search of Clusters”, Gregory F. Pfister, Prentice Hall PTR, Upper Saddle River, ISBN 0-13-899709-8, 1998;
“Parallel Programming: Techniques and Applications Using Networked Workstations“, Barry, Wilkinson e Michael, Prentice Hall, 1997;
“PVM: Parallel Virtual Machine“, http://www.epm.ornl.gov/pvm/home.html;
“Using MPI: Portable Parallel Programming with the Mess6age-Passing Interface“, Gropp, Lusk, and Skjellum, Mit Press, 1994;
“MPI: A Message-Passing Interface Standard“, ftp://info.mcs.anl.gov/pub/mpi/mpi-report.ps.
A distribuição, total ou parcial, desta publicação e dos conteúdos relacionados produzidos pelo autor, para outros fins que não os do ensino e da aprendizagem, carecem da autorização escrita do autor.