UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE GEOCIÊNCIAS E CIÊNCIAS EXATAS Departamento de Estatística, Matemática Aplicada e Computação INTRODUÇÃO À COMPUTAÇÃO PARALELA CONTEÚDO • INTRODUÇÃO • CONCEITOS BÁSICOS • ARQUITETURAS PARALELAS • PROGRAMAÇÃO PARALELA • MULTICOMPUTADORES • CONSIDERAÇÕES FINAIS INTRODUÇÃO - MOTIVAÇÕES • Busca por maior desempenho; • Aplicações intrinsecamente paralelas. • Alto custo dos supercomputadores tradicionais. • Desenvolvimento de redes de computadores de alta velocidade; • Desenvolvimento tecnológico na construção de microprocessadores; CONTEÚDO • INTRODUÇÃO • CONCEITOS BÁSICOS • ARQUITETURAS PARALELAS • PROGRAMAÇÃO PARALELA • MULTICOMPUTADORES • CONSIDERAÇÕES FINAIS CONCEITOS BÁSICOS • Concorrência: quando dois ou mais processos começaram sua execução mas não terminaram. • Sistema Distribuído: Processos concorrentes executados em vários elementos de processamento. • Paralelismo: Sistema distribuído visando à solução de um único problema. CONTEÚDO • INTRODUÇÃO • CONCEITOS BÁSICOS • ARQUITETURAS PARALELAS • PROGRAMAÇÃO PARALELA • MULTICOMPUTADORES • CONSIDERAÇÕES FINAIS ARQUITETURAS PARALELAS Classificação de Flynn é a mais utilizada embora não seja muito abrangente. • SISD (Single Instruction Single Data): Arquitetura de von Neumann; • SIMD (Single Instruction Multiple Data): Supercomputadores clássicos (Computadores vetoriais); • MISD (Multiple Instruction Single Data): O Mesmo fluxo de dados percorre um array linear de processadores (pipeline); • MIMD (Multiple Instruction Multiple Data): Arquiteturas formada por processadores executam instruções independentemente. ARQUITETURAS PARALELAS Modelo simplificado dos conjuntos de aplicações relacionados aos tipos de arquiteturas ARQUITETURAS PARALELAS CATEGORIAS MIMD: • Memória compartilhada: – Caracteriza-se pela existência de uma memória global. • Memória distribuída: – Cada processador possui sua própria memória local. – Os processos devem utilizar troca de mensagem para se comunicar. – Redes de computadores utilizando um sistema de passagem de mensagem encontram-se nesta categoria. CONTEÚDO • INTRODUÇÃO • CONCEITOS BÁSICOS • ARQUITETURAS PARALELAS • PROGRAMAÇÃO PARALELA • MULTICOMPUTADORES • CONSIDERAÇÕES FINAIS PROGRAMAÇÃO PARALELA Para a execução de programas paralelos, deve haver meios de: • Definir um conjunto de tarefas a serem executadas paralelamente; • Ativar e encerrar a execução destas tarefas; • Coordenar e especificar a interação entre estas tarefas. PROGRAMAÇÃO PARALELA Há pelo menos três maneiras de se construir um algoritmo paralelo: • Detectar e explorar um paralelismo inerente a um algoritmo seqüencial existente • Criar um algoritmo paralelo novo. • Adaptar outro algoritmo paralelo que possa resolver um problema similar. PROGRAMAÇÃO PARALELA Há três estilos básicos de paralelismo, dependentes da plataforma de execução. • Paralelismo Geométrico: o conjunto de dados é dividido e cada processador executa uma cópia do programa em seu conjunto de dados. • Paralelismo “Processor Farm”: Caracteriza-se por um processador mestre que supervisiona um grupo de processadores escravos. • Paralelismo Pipeline: A aplicação é dividida em tarefas específicas que são distribuídas aos processadores de forma pipeline. CONTEÚDO • INTRODUÇÃO • CONCEITOS BÁSICOS • ARQUITETURAS PARALELAS • PROGRAMAÇÃO PARALELA • MULTICOMPUTADORES • CONSIDERAÇÕES FINAIS MULTICOMPUTADORES • Ambientes de memória compartilhada utilizam um paralelismo explícito, já que podem-se valer desta memória para ativar os processos paralelos. • Ambientes de memória distribuídas devem utilizar um modelo chamado troca de mensagens para comunicação e sincronização das tarefas. MULTICOMPUTADORES Há dois principais padrões de troca de mensagens: • PVM – Parallel Virtual Machine: é o conjunto integrado de bibliotecas e de ferramentas de software, cuja finalidade é emular um sistema computacional concorrente, heterogêneo, flexível e de propósito geral. • MPI – Massage Passing Interface: Padrão de interface de troca de mensagens para aplicações que utilizam computadores MIMD com memória distribuída. MULTICOMPUTADORES • Speedup: Relação entre o tempo de execução de um processo em um único processador e a execução em p processadores. Sp = Tseq Tp • Eficiência: Relação entre o speedup e número de processadores. E= Sp p CONTEÚDO • INTRODUÇÃO • CONCEITOS BÁSICOS • ARQUITETURAS PARALELAS • PROGRAMAÇÃO PARALELA • MULTICOMPUTADORES • CONSIDERAÇÕES FINAIS