COMPUTAÇÃO DE ALTO DESEMPENHO ENVOLVENDO CLUSTERS E MÉTODOS NUMÉRICOS

Tamanho: px
Começar a partir da página:

Download "COMPUTAÇÃO DE ALTO DESEMPENHO ENVOLVENDO CLUSTERS E MÉTODOS NUMÉRICOS"

Transcrição

1 CENTRO UNIVERSITÁRIO VILA VELHA CURSO DE CIÊNCIA DA COMPUTAÇÃO WESLEY DOS SANTOS MENENGUCI COMPUTAÇÃO DE ALTO DESEMPENHO ENVOLVENDO CLUSTERS E MÉTODOS NUMÉRICOS VILA VELHA 2008

2

3 WESLEY DOS SANTOS MENENGUCI COMPUTAÇÃO DE ALTO DESEMPENHO ENVOLVENDO CLUSTERS E MÉTODOS NUMÉRICOS Trabalho de Conclusão de Curso apresentado ao Centro Univertário Vila Velha como requisito parcial para a obtenção do grau de Bacharel em Ciência da Computação. Orientador: Leonardo Muniz de Lima VILA VELHA 2008

4 WESLEY DOS SANTOS MENENGUCI COMPUTAÇÃO DE ALTO DESEMPENHO ENVOLVENDO CLUSTERS E MÉTODOS NUMÉRICOS BANCA EXAMINADORA Prof. Msc. Leonardo Muniz de Lima Centro Universitário Vila Velha Orientador Prof. Msc. Cristiano Biancardi Centro Universitário Vila Velha Prof. Msc. Vinícius Rosalém Centro Universitário Vila Velha Trabalho de Conclusão de Curso aprovado em 26/11/2008.

5 Aos meus pais João e Deni

6 AGRADECIMENTOS Agradeço primeiramente a Deus por até aqui ter sempre me agraciado. Agradeço ao meu Orientador Leonardo Lima pela oportunidade e pela ajuda na realização deste trabalho. Agradeço à minha família por sempre terem me apoiado.

7 Eu não falhei, encontrei 10 mil soluções que não davam certo Thomas A. Edison

8 LISTA DE FIGURAS 1 Pipeline: (a) estágios do pipeline e (b) execução dos estágios em um pipeline Taxonomia de Flynn para computadores paralelos Arquitetura SISD, onde: MM é o Módulo de Memória e o EP é o Elemento de Processamento Arquitetura MISD, onde: MM são os módulos de Memória e EP os Elementos de Processamento Arquitetura SIMD, onde: MM são os Módulos de Memória e EP os Elementos de Processamento : Arquitetura MIMD, onde EP são os Elementos de Processamento Multiprocessador Multicomputador Visão geral da classificação de máquinas paralelas quanto ao compartilhamento de memória Estrutura de um sistema DSM Estrutura de um NOW Estrutura de um COW Estrutura de um PVP Estrutura de um SMP Estrutura de um MPP Principais diferenças entre agregados e MPP Visão geral do CLuster Enterprise Malha exemplo

9 19 Espalhamento da temperatura em uma placa com lados à mesma temperatura Espalhamento da temperatura em uma placa com lados a temperaturas distintas Estratégia de paralelização Estratégia de paralelização Resultado utilizando algoritmo seqüêncial Resultado utilizando algoritmo paralelo em 3 processadores Coeficientes de relaxação Speedup para a malha 1024x Eficiência para a malha 1024x Tempo de execução para a malha 1024x Speedup para a malha 5120x Eficiência para a malha 5120x Tempo de Execução para a malha 5120x

10 SUMÁRIO RESUMO 1 INTRODUÇÃO 9 2 FUNDAMENTOS DA COMPUTAÇÃO PARALELA CLASSIFICAÇÃO DAS ARQUITETURAS PARALELAS CLASSIFICAÇÃO SEGUNDO NÍVEIS DE PARALELISMO CLASSIFICAÇÃO DE FLYNN CLASSIFICAÇÃO SEGUNDO COMPARTILHAMENTO DE ME- MÓRIA REDES DE ESTAÇÕES DE TRABALHO (NOW) MÁQUINAS AGREGADAS (COW) CLASSIFICAÇÃO DAS REDES DE INTERCONEXÃO TENDÊNCIAS PARA A CONSTRUÇÃO DAS PRÓXIMAS MÁQUINAS PARADIGMAS DE PROGRAMAÇÃO MESSAGE PASSING INTERFACE - MPI CLUSTER ENTERPRISE MÉTODOS NUMÉRICOS Método das Diferenças Finitas Malha e Métodos Iterativos Exemplo Prático SOLUÇÃO APRESENTADA 37

11 4.1 ESTRATÉGIA DE PARALELIZAÇÃO RESULTADOS CONCLUSÃO 47 REFERÊNCIAS 48 CÓDIGO FONTE PARALELO PROPOSTO 51

12 RESUMO No presente trabalho é realizado um estudo sobre os conceitos fundamentais da computação paralela, onde são apresentadas arquiteturas e paradigmas de programação.para demonstrar o alto desempenho de clusters de estações de trabalho é apresentada uma solução paralela de uma equação diferencial de segunda ordem discretizada pelo método das diferenças finitas. As trocas de mensagem são realizadas por meio da biblioteca MPI (Message Passing Interface). Por fim são apresentados testes de desempenho medindo speedup e eficiência do problema proposto. Palavras-chave: Computação Paralela, Clusters, Métodos Numéricos, MPI.

13 11 1 INTRODUÇÃO A capacidade do homem em fazer cálculos foi um dos fatores que ajudaram no desenvolvimento da computação. No decorrer da história da humanidade vários métodos foram sendo utilizados para se conseguir fazer tais cálculos. Desde ferramentas de construção simples e de operação manual como o ábaco; as máquinas com engrenagens como a calculadora de Blaise pascal; o "calculador analítico"de Charles Babbage - projeto que introduzia uma memória em sua máquina mecânica; as publicações do matemático George Boole sobre a "lógica booleana"; a máquina de perfurar cartões do Dr. Herman Hollerit que revolucionou a forma de processarem dados dos censos da época; o projeto lógico do computador de Von Neumann; os primeiros computadores eletromecânicos [1, 2]. Enfim, toda essa evolução relata a necessidade do homem em aumentar o poder de fazer cálculos, ou seja, o poder de computar dados. Essa necessidade existe ainda hoje. A saída para esse gargalo computacional, que é o poder de processamento, ainda se encontra distante. Mesmo os milhões de operações por segundo proporcionadas pelas máquinas atuais ainda não são o bastante para se resolverem problemas cada vez mais complexos. Astrônomos tentam entender o sentido do universo, biólogos tentam entender as implicações do genoma humano. Não importa o poder computacional, ele nunca será suficiente. Limitações físicas e financeiras têm impedido o aumento da velocidade dos computadores seqüenciais - computadores que tratam instruções em série, uma após a outra, por meio de uma CPU. Dentre essas limitações pode-se analisar que apenas aumentar o clock das máquinas, nos levaria a um gargalo baseado na teoria da relatividade de Einstein, o que implica em dizer que um sinal elétrico não pode ser mais rápido que a luz, ou ainda, analisando a miniaturização dos componentes, a qual diminui as distâncias das trocas de dados proporcionando assim um aumento computacional, trás o problema quanto à dissipação do calor gerado.

14 12 Entretanto sabe-se que os problemas computacionais podem ser divididos em pedaços e serem solucionados ao mesmo tempo, ou seja, solucionados de forma paralela. Pode-se então utilizar do uso de simultâneos recursos computacionais, como processadores, para tentar suprir a demanda computacional. Essa abordagem é denominada computação paralela. O conhecimento sobre a arquitetura paralela auxilia em todo o ciclo de desenvolvimento de aplicações paralelas, uma vez que o conhecimento de características específicas da máquina implica na obtenção de desempenho. As opções de arquiteturas paralelas são variadas, envolvendo desde supercomputadores a máquinas como os clusters. As primeiras são equipamentos desenvolvidos especificamente para a obtenção de alto desempenho, porém seu problema esbarra no alto custo desta solução. A outra opção mencionada é composta por aglomerados de computadores comerciais interligadas por uma rede de comunicação e possui uma eficiência menor, mesmo assim apresenta um bom poder computacional e um custo bem menor. O cluster é formado por diversas máquinas, conforme mencionado anteriormente, cada uma com seu próprio processador e sua própria memória. Para que um processador conheça dados não pertencentes a sua memória são realizadas operações de envio e recebimento de mensagens. Existem diferentes aplicativos que criam uma interface entre esses diversos computadores, assim realizando de maneira simples a comunicação entre os mesmos. Um dos modelos de programação paralela que utiliza troca de mensagens para essa comunicação é o MPI (Message Passing Interface) [3]. Em tal padrão as operações de envio e recebimento de mensagens são representadas por primitivas send e receive. Neste trabalho é utilizada a biblioteca lam-mpi7.1.2, sendo esta uma distribuição livre do modelo MPI. Um cluster pode ser construído para atender certa finalidade, esta finalidade varia de acordo com o foco a ser atendido, seja em um cluster de alta disponibilidade ou em cluster de alto desempenho. O primeiro se propõe a manter um sistema ou recurso sempre ativo, como um servidor. O outro mencionado foi criado para suprir a necessidade de um equipamento com grande poder computacional, não necesariamente atendendo imediatamente uma requisição como o primeiro. Problemas como a discretização de uma equação diferencial podem demandar grande tempo de processamento. Atualmente a computação paralela tem se mostrado bastante eficaz na busca de um melhor desempenho para realizar essa tarefa. Para solucionar inúmeros problemas de diversas áreas do conhecimento humano, como a

15 13 discretização mencionada anteriormente, existem ferramentas fortemente embasadas na matemática como os métodos numéricos computacionais. Tais métodos retornam uma solução aproximada que pode ser muito bem aceita em um contexto real. Diversos trabalhos encontrados na literatura apresentam a obtenção de alto desempenho utilizando-se clusters de estações de trabalho onde vários problemas complexos foram solucionados por meio de métodos numéricos computacionais. Dentre eles pode ser destacado o estudo de Angeli [4], em Neste trabalho é apresentado um algoritmo paralelo eficiente para o método dos elementos finitos utilizando o padrão MPI, cujos resultados apontam que tal código pode melhorar significativamente a capacidade de previsão e a eficiência para simulações em larga escala. Outro trabalho relacionado é o desenvolvido por Abboud [5], em 2003, que apresenta um modelo paralelo para o método dos volumes finitos de um problema com grande esforço computacional. Os resultados obtidos deste mostram um considerável ganho de desempenho com a utilização do processamento paralelo. Ainda pode ser mencionado o estudo realizado por Lima [6], em 2004, que apresenta o desempenho da paralelização do método dos elementos finitos, utilizando clusters de estações de trabalho e a biblioteca MPI para a troca de mensagens. Baseado nos trabalhos mencionados acima este trabalho se propõe a mostrar um alto desempenho utilizando-se a computação paralela. Para prover o paralelismo será utilizado um cluster. O problema proposto é dado por uma equação diferencial parcial que será discretizada por pelo método das diferenças finitas, necessitando para isso um alto poder computacional. Tal equação pode ser empregada para modelar comportamentos em diversos campos da ciência como astronomia, eletromagnetismo, mecânica dos fluidos, entre outras. Sendo então empregada em problemas como a condução de calor em uma placa plana, a determinação deo potencial elétrico para uma região dentro de uma calha de seção retangular, entre outros. Este trabalho conta de mais 4 seções além desta introdução. Na próxima seção são apresentados os fundamentos da computação paralela, tais como as arquiteturas paralelas e suas classificações e os paradigmas de programação paralela. Na seção 3 é relatado o Método das Diferenças Finitas bem como a discretização de uma equação diferencial de segunda ordem utilizando tal método. Na seção 4 é relatada a solução paralela apresentada e seus respectivos testes de desempenho. Na ultima seção são apresentadas as principais conclusões obtidas.

16 14 2 FUNDAMENTOS DA COMPUTAÇÃO PARALELA Este capítulo procura abranger os fundamentos da computação paralela de forma prática e objetiva, fornecendo o embasamento teórico básico para a realização deste trabalho. Descreve, os principais e mais representativos modelos arquitetônicos dos computadores paralelos e apresenta as características principais das linguagens de programação paralela disponíveis, por fim foca na arquitetura e no paradigma de programação utilizado no desenvolvimento deste trabalho. 2.1 CLASSIFICAÇÃO DAS ARQUITETURAS PARALELAS A classificação ou taxonomia de arquiteturas paralelas para a computação paralela tem sido objeto de esforço de inúmeros pesquisadores [7, 8, 9], mas nenhuma delas chega a ser tratada como a derradeira taxonomia, a classificação sem contestação, mesmo porque existem diferentes âmbitos para serem classificados. Serão apresentadas algumas classificações para uma melhor compreensão da arquitetura paralela CLASSIFICAÇÃO SEGUNDO NÍVEIS DE PARALELISMO A classificação segundo níveis de paralelismo, também chamada de granulosidade, diz respeito ao tamanho das sub-tarefas que podem ser executadas pelos processadores ou ainda a quantidade de trabalho realizado entre as iterações dos processadores. Dentro dessa classificação há uma separação consagrada na literatura que a divide em: fina, média e grossa [10, 8]. A granulosidade fina compreende o nível de instrução, nível este caracterizado pelo paralelismo de baixo nível, onde existem inúmeros processos pequenos e simples cuja unidade de paralelismo está relacionada às instruções e operações. Esse para-

17 15 lelismo em nível de instrução pode então ser atingido utilizando técnicas tais como: o pipeline [11, 12] - instruções divididas em conjuntos de estágios que equivalem à tarefa total e que são executadas com concorrência de tempo, como demonstra a Figura 1. - as técnicas superescalares [13] - extensão da técnica pipeline para instrução de instruções com paralelismo simultâneo, ou seja, emprego de mais de um pipeline - ou ainda por meio da arquitetura VLIW (Very Long Instruction Word) [14] - tenta alcançar paralelismo de instrução reunindo várias operações em uma única instrução muito longa. Figura 1: Pipeline: (a) estágios do pipeline e (b) execução dos estágios em um pipeline A granulosidade média, ou nível de thread, se constitui de vários processos médios onde as unidades de paralelismo são blocos e sub-rotinas. Essa granulosidade pode se basear em técnicas como threads [15] - execução simultânea de diversos fluxos de execução sobre os recursos de uma mesma arquitetura - ou SMT (Simultaneous Multithreaded) [16]. Por último a granulosidade grossa, ou em nível de processo, se constitui por um paralelismo de alto nível, ou seja, por poucos, grandes e complexos processos. Sua unidade de paralelismo se encontra justamente nos processos e programas. Este nível de paralelismo é encontrado em Multiprocessadores e em Multicomputadores (ver subseção 2.1.3) CLASSIFICAÇÃO DE FLYNN A classificação de Flynn é muito utilizada e mesmo tendo se originado em meados da década de 1970 ainda é válida e muito difundida. Dois conceitos são a base para a

18 16 classificação de Flynn [7], sendo eles o fluxo de instrução e o fluxo de dados. Segundo A. S. Tanenbaum [17]: Um Fluxo de instruções corresponde a um contador de programa. Um sistema com n CPUs possui n contadores de programa, e então n fluxo de instruções... Um fluxo de dados corresponde a um conjunto de operandos. Um programa que calcula a média de uma lista de temperaturas possui 1 fluxo de dados; um programa que calcula a média das temperaturas de 100 termômetros espalhados por todo o mundo possui 100 fluxos de dados. Um computador executa seqüências de instruções sobre uma seqüência de dados. De acordo com a classificação de Flynn podemos diferenciar o fluxo de instruções (instruction stream) do fluxo de dados (data stream) e ainda se estes fluxos são múltiplos ou simples. Baseando-se na independência dos fluxos Flynn propôs a criação de 4 classes, mostradas na Figura 2. Figura 2: Taxonomia de Flynn para computadores paralelos O conceito das máquinas SISD (Single Instruction Single Data) é o mesmo do computador clássico de Von Neuman. Um único fluxo de instruções atua sobre um único fluxo de dados, sendo executada uma operação de cada vez, como demonstrado na Figura 3. Máquinas MISD (Multiple Instruction Single Data) se enquandram em uma classe um tanto quanto intrigante. Nesse caso tería-se multiplas instruções sendo executadas sobre uma única porção de dados, Figura 4. Não se sabe ao certo se tal classe realmente existe. Algum autores encaram máquinas Pipeline como MISD [18], outros consideram esta classe como sendo vazia, pois vários fluxos de instrução agindo sobre um mesmo fluxo de dados implica na utilização da mesma posição de memória

19 17 Figura 3: Arquitetura SISD, onde: MM é o Módulo de Memória e o EP é o Elemento de Processamento por diferentes instruções, o que não tem sentido algum e é tecnicamente impraticável. Figura 4: Arquitetura MISD, onde: MM são os módulos de Memória e EP os Elementos de Processamento Na classe SIMD (Single Instruction Multiple Data) temos uma única instrução sendo executada sobre multiplos dados, como demonstra a Figura 5. Exemplificando um problema para esta classe tem-se, de uma forma síncrona, um único programa sendo executado sobre diferentes massas de dados, assemelhando-se bastante ao paradigma de processamento seqüêncial. Para ocorrer o paralelismo no processamento de diferentes posições de memória nesta classe não pode-se ter um único modulo de memória, pois isso permitiria apenas uma operação por vez, logo é necessária a utilização e multiplos módulos de memória. Nesta classe se enquadram os Supercomputadores Vetoriais também chamadas de máquinas Array. Por fim tem-se a classe MIMD (Multiple Instructions Multiple Data), onde se enquadram a maior parte dos processadores paralelos. Esta classe consiste na existência de vários processadores independentes, cada um realizando operações sobre um fluxo de dados, ou ainda, cada um operando como parte de um sistema maior, esta

20 18 Figura 5: Arquitetura SIMD, onde: MM são os Módulos de Memória e EP os Elementos de Processamento classe pode ser exemplificada na Figura 6. De uma forma genérica, qualquer grupo de máquinas sendo utilizadas como uma unidade se enquadra nesta classe, basta executarem um sistema distribuído. A mesma analogia ao processamento de posições de memória da classe SIMD é utilizável na classe MIMD. Como representantes desta classe pode-se citar servidores com multiplos processadores (dual; quad), redes de estações. Figura 6: : Arquitetura MIMD, onde EP são os Elementos de Processamento

21 19 Nestas duas classes, SIMD e MIMD, se enquadram as máquinas paralelas CLASSIFICAÇÃO SEGUNDO COMPARTILHAMENTO DE ME- MÓRIA Expandindo um pouco o esboço da classificação proposta por Flynn pode-se ainda subdividir a classe MIMD no que tange ao tipo de acesso à memória. Sendo assim encontram-se basicamente dois tipos de máquinas, as com memória compartilhada, os multiprocessadores [18] e as com memória não-compartilhada ou distribuída, os multicomputadores [18]. Os Multiprocessadores (MPs) são baseados na replicação de um único elemento computacional, neste caso a CPU. Sendo assim todas as CPUs irão utilizar a mesma memória como na Figura 7, daí o termo memória compartilhada. É claro que essa concorrência causará condições de corrida em torno da utilização da memória, mas esse não será o foco deste trabalho. A forma de acesso à memória compartilhada, por sua vez, pode ser realizada de duas formas, assim formando dois grupos de MPs: UMA (Uniform Acess Memory) e NUMA (Non-Uniform Acess Memory). O acesso uniforme do MP UMA ocorre pelo fato de ter a mesma velocidade de leitura para qualquer palavra na memória. Nos MP NUMA essa uniformidade no acesso à memória não ocorre tendo em vista que o tempo de acesso varia dependendo do módulo de memória. Os MP NUMA também utilizam de memória cache. Como todas as CPUs possuem sua própria cache surge o problema de sincronizar as cópias nos caches com as informações em memória remota, essa sincronia chama-se coerência de cache. Quanto ao tratamento da coerência do cache podem-se subdividir os MPs NUMA em 4 subgrupos: primeiramente os NCC-NUMA (Non-Cache-Coherent Non-Uniform Memory Acess) onde não há coerência do cachê, em seguida os CC- NUMA (Cache-Coherent Non-Uniform Memory Acess) que possui coerência de cache garantida por hardware, encontra-se também os SC-NUMA (Software-Coherent Non- Uniform memory acess) onde a coerência da cache é garantida por software e por fim os COMA (Cachê Only Memory Acess) onde todas as memórias locais são estruturadas como memória cache. O acesso à memória, seja UMA ou NUMA, é realizado através de operações do tipo load e store, tendo em vista que há uma única área de memória, desta forma a comunicação entre os processos é bastante eficiente.

22 20 Figura 7: Multiprocessador Nos multicomputadores (MCs) a replicação não ocorre em apenas um elemento computacional. Nestas máquinas encontramos ao menos a replicação de CPU e de memória, desta forma todas as CPUs têm sua própria área de memória cujo acesso é exclusivamente seu, como na Figura 8. Essa exclusividade no acesso à memória indica que não existe acesso a variáveis remotas, o que classifica tais máquinas como NORMA (Non-Remote Acess Memory). A comunicação entre os processos é então realizada através de troca de mensagens, desta forma há então a necessidade de uma rede de comunicação entre os módulos de CPU/memória, a interface de comunicação desta rede é análoga ao compartilhamento de memória, a diferença está na latência, o envio das mensagens é da ordem de microssegundos, enquanto o acesso à memória compartilhada é de ordem de nanossegundos. Figura 8: Multicomputador Quanto ao paralelismo, tanto os MPs quanto os MCs se enquadram na classificação de sistemas fortemente acoplados (rightly-couple) devido a suas latências, ou seja, os tempos de acesso à memória serem considerados baixos [18]. Na classificação de sistemas fracamente acoplados (loosely-couple) enquadram-se os Sistemas

23 21 Distribuídos (SDs), devido sua latência ser da ordem de milissegundos [18]. Tais sistemas são definidos por A. S. Tanenbaum como: "coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente". Ou seja, são computadores completos interligados por uma rede de comunicação de longa distância, como a internet, ou seja, os SDs são independentes da localização geográfica das máquinas [18]. Esses computadores podem ser as estações de trabalho de algum laboratório de informática ou diversos computadores pessoais espalhados pelo mundo, porém quando estas máquinas estão ociosas trabalham em conjunto se comunicando pela rede. Tanto os sistemas fortemente acoplados quanto os sistemas fracamente acoplados atendem às necessidades para as quais foram desenvolvidos, porém em uma análise relacionando as três ordens de latência mencionadas constata-se, para uma mesma computação, que essa diferença do tempo de execução pode ser a mesma diferença de um dia para três anos. A Figura 9 mostra uma visão geral da classificação de máquinas paralelas quanto ao compartilhamento de memória com exemplos de máquinas comerciais. Figura 9: Visão geral da classificação de máquinas paralelas quanto ao compartilhamento de memória Ainda quanto ao compartilhamento de memória também se pode encontrar Memória Compartilhada Distribuída (DSM - Distributed Shared Memory) [11]. Nesta classificação tem-se a ilusão de que temos uma memória compartilhada, quando na verdade temos módulos de memória distribuídos, como ilustrado na Figura 10. Apesar dessa

24 22 distribuição física dos módulos de memória, qualquer processo pode endereçar todas as memórias. Isso implica na possibilidade de acesso a informações de outros módulos de memória, ou seja, acesso remoto. Figura 10: Estrutura de um sistema DSM REDES DE ESTAÇÕES DE TRABALHO (NOW) Um tipo de sistemas distribuídos são as Redes de Estações de Trabalho (NOW - Network Of Workstations) [11] onde várias máquinas convencionais - estações de trabalho - são interligadas por uma rede de comunicação convencional, como a Ethernet [19] e a ATM [20], formando assim uma máquina NORMA com baixo custo de implantação e alto nível de escalabilidade como na Figura 11, onde P/C é o processador, ML é a memória local, A é o adaptador de barramento, DL é o disco local e AR é o adaptador de rede. Os adaptadores de rede utilizados que dão suporte à utilização de vários periféricos e as tecnologias de rede de comunicação que não possuem otimização para comunicação paralela, evidenciam que tais tecnologias não foram concebidas para fins de comunicação distribuída, sendo assim as NOWs acabam se enquadrando em sistemas fracamente acoplados (loosely acouple) [11], o que acarreta uma perda de desempenho. Devido a sua relação custo/benefício as NOWs acabam sendo utilizadas em ambientes de ensino de processamento paralelo ou em aplicações onde a comunicação entre processos não seja muito intensa. Como exemplo de NOW pode-se citar o

25 23 Figura 11: Estrutura de um NOW 1, da Universidade da Califórnia, Berkeley MÁQUINAS AGREGADAS (COW) A essência das Máquinas Agregadas (COW - Cluster Of Workstations) é análoga ao conceito das NOWs, porém ao contrário destas as COWs foram desenvolvidas com o objetivo de executar operações paralelas. Para isso as estações de trabalho são interligadas por uma tecnologia de rede dedicada ao processamento paralelo. Uma outra característica das COWs são as estações sem cabeça (headless workstation) - estações não possuem monitor, teclado e mouse - o que também explica o fato dessas máquinas serem chamadas de pilhas de computadores pessoais (Pile of PC s). Conclui-se que as COWs integram todas as vantagens das NOWs, escalabilidade e baixo custo, e tenta suprir sua principal desvantagem, grande perda de desempenho causado pelo grande tempo de latência destes. A Figura 12. trás a estrutura de um COW, onde: P/C representa os processadores, ML a memória local, A o adaptador de barramento, DL o disco local e AR oadaptador de rede. Atualmente uma forma bastante utilizada para se obter alto desempenho é através de clusters [21]. Como cada máquina possui sua própria memória e CPU (podendo ser também utilizadas máquinas multiprocessadas) existe uma grande necessidade de comunicação entre os nós, essa comunicação é realizada através de mecanismos de troca de mensagens (message passing). 1

26 24 Figura 12: Estrutura de um COW. A utilização de cluster para processamento paralelo é feito dividindo o problema entre os vários membros do cluster. Para um melhor aproveitamento do ambiente em cluster a aplicação deve ser desenvolvida segundo um modelo de programação paralela (ver subseção 2.3). São inúmeras as vantagens de utilização de clusters [22], dentre elas pode se destacar: Alto Desempenho, Escalabilidade, Tolerância a Falhas, entre outras. Os clusters ainda podem ser configurados de acordo com sua finalidade, tais como: Cluster de Alta Disponibilidade [22, 23], que mantém um determinado serviço de forma segura o maior tempo possível; Cluster de Alto Desempenho [22, 23], que provê alto poder computacional; entre outras. Como exemplo de Máquinas Agregadas pode-se citar o Cluster Enterprise do LCAD (Laboratório de Computação de Alto Desempenho) da UFES CLASSIFICAÇÃO DAS REDES DE INTERCONEXÃO Para classificar as redes de comunicação primeiramente deve-se tomar como base qual dentre as várias tecnologias de comunicação será abordada. Este trabalho abordará um pouco do padrão Ethernet [24], por esta ser a tecnologia de LAN (Local Área Network) mais amplamente utilizada. Segundo o padrão OSI [25] este protocolo se 2

27 25 enquadra na camada de enlace, camada esta responsável pela transmissão e recepção de quadros - como são denominadas as mensagens para esta camada - através do controle de fluxo. O Ethernet também estabelece um protocolo de comunicação entre sistemas diretamente conectados. O padrão Ethernet, desde sua criação, vem sendo aprimorado e assim originando várias versões. A maioria das diferenças das variedades de Ethernet se encontra nas variações de velocidade e de cabeamento. Por muitos anos o padrão dominante foi o Ethernet 10 Mbits/s (10BASE-T), mas com o tempo tornou-se insuficiente para suprir o aumento do trafego e grandes transferências de arquivos. Para suprir essa demanda uma nova versão foi desenvolvida, a Fast-Ethernet 100 Mbits/s (100BASE-T), esta versão utiliza o mesmo tipo de cabeamento da versão anterior, o que facilita a transição entre estas versões uma vez que é necessária apenas a troca para uma placa de rede compatível. Uma versão mais avançada é a Gigabit Ethernet 1000 Mbits/s (1000BASE-T) que é a mais utilizada atualmente. Esta ainda mantém as características do padrão Ethernet para, assim como o Fast-Ethernet, facilitar a migração de versão. Um outro padrão é o 10 Gigabit Ethernet. Esta Ethernet é muito nova, possui apenas uma especificação suplementar dentro dos padrões IEEE (Instituto Institute of Electrical and Electronics Engineers) sendo assim continua em vista sobre qual padrão vai ganhar a aceitação comercial. Mesmo com essa evolução das versões, nota-se uma diferença entre os valores reais e os valores teóricos para o tempo de transmissão devido aos custos de mensagens e também pelas várias camadas do TCP/IP [26] que geram grandes cabeçalhos nas mensagens. Essa sensibilidade ao aumento do trafego é devida à utilização, pelo protocolo Ethernet, de detecção de colisão, o que afeta principalmente no tempo de latência e na vazão da rede. 2.2 TENDÊNCIAS PARA A CONSTRUÇÃO DAS PRÓXI- MAS MÁQUINAS São vários os âmbitos que tangem a paralelização, quanto ao paralelismo físico podem-se destacar três modelos que encabeçam as tendências para as próximas máquinas paralelas: os Processadores Vetoriais Paralelos, os Multiprocessadores Simétricos e as Máquinas Maciçamente Paralelas.

28 26 Os Processadores Vetoriais Paralelos (PVP - Parallel Vector Processors) [11, 27], também exemplificados na Figura 13, foram especificamente desenvolvidos para fins de alto desempenho, isso fica claro ao se analisar o emprego de poucos mais poderosos processadores vetoriais (PV) interconectados a módulos de memória compartilhada (MC) - sem a latência do envio de mensagens. A interconexão do mesmo modo é desenvolvida especificamente para este modelo e possui uma alta vazão. Figura 13: Estrutura de um PVP Os Multiprocessadores Simétricos (SMP - Symmetric Multiprocessors) [11], Figura 14, são formados por processadores comerciais (P/C) - "de prateleira"(of the shelf ) - interligados a um barramento de alta velocidade. Mesmo esses processadores não tendo um poder de execução tão alto quanto os processadores utilizados nos PVP a sua paralelização retorna um ganho no desempenho. O termo simétrico vem do fato de que todos os processadores terem igual acesso à memória - memória compartilhada (MC) - o que mostra um maior paralelismo em relação a uma arquitetura assimétrica - um processador com privilégios em relação aos outros [28]. Figura 14: Estrutura de um SMP Os dois modelos citados até agora se enquadram na classificação de multipro-

29 27 cessadores UMA, pois ambas possuem o paradigma de memória compartilhada. A escalabilidade desses modelos é afetada devido à interconexão - normalmente uma matriz de chaveamento nos PVP e um barramento nos SMP [28] - devido a isso a maioria dos SMP encontrados no mercado possuem uma média de 50 processadores. As Máquinas Maciçamente Paralelas (MPP - Massively Parallel Processors) [11], Figura 15, se baseiam na utilização de multicomputadores com inúmeros processadores comerciais (P/C) interligados por uma rede proprietária de alta velocidade. Ao contrário dos PVP, os processadores utilizados nas MPP possuem um poder computacional médio ou pequeno, porém a paralelização de milhares destes elementos computacionais também implica em um aumento no desempenho. Este modelo implementa o paradigma de memória distribuída (M) - cada nó de processamento possui sua própria memória local, o que o caracteriza como uma máquina NORMA, assim sendo altamente escaláveis. Figura 15: Estrutura de um MPP As principais diferenças entre MPP e agregados podem ser vistos na Figura PARADIGMAS DE PROGRAMAÇÃO Uma vez tratados dos modelos físicos para a paralelização devem-se considerar os paradigmas de programação para as arquiteturas mencionadas nas seções anteriores. A programação seqüencial é uma alternativa. Nessa programação existe apenas um fluxo de controle durante a execução, este é o modo mais comum de se escrever um programa. Outra alternativa é a programação concorrente [29], onde há a execução de diversos processos que cooperam ou mesmo concorrem entre si. Ainda existe também a programação paralela, nesta programação o foco da iteração entre

30 28 Figura 16: Principais diferenças entre agregados e MPP os processos é justamente de colaborarem uns com os outros, no verdadeiro sentido da técnica Dividir para Conquistar [30] não havendo uma concorrência em aspectos como: espaço de memória, uso de processadores, etc., que é um dos sentidos que o termo programação concorrente acaba trazendo. Quando se menciona programação concorrente, ou paralela, é importante entender alguns de seus modelos de programação, como os seguintes: Parallel Data [31], Distributed Shared Memory [32, 33] e Message Passing [34, 35]. O Modelo Parallel Data é muito comum em arquiteturas matriciais, embora esse não seja seu único âmbito de uso, e em sistemas com memória compartilhada. Ele utiliza do modelo SPMD (Single Program Multiple Data) [36] onde cada processador executa uma parte do mesmo programa. Uma aplicação que se utiliza deste modelo é o HPF (High Performance Fortran) [37]. Nesta aplicação a distribuição de dados e o controle da computação para cada processador ficam a cargo do seu compilador, porém isto acaba sendo uma faca de dois gumes, ao mesmo tempo em que facilita a programação aumenta a necessidade de troca de mensagens para fazer esse controle, assim gerando um maior fluxo de comunicação diminuindo a performance. O modelo Distributed Shared Memory (DSM - Memória Compartilhada Distribuída) consiste em cada processador poder endereçar toda a memória, mesmo esta estando fisicamente distribuída através de nós. Essa "ilusão"de memória compartilhada pode ser implementada através de hardware, de software ou de um misto. Um exemplo de DSM em software é o TreadMarks [33] que funciona como uma biblioteca em nível de usuário com o objetivo de reduzir a necessidade de comunicação necessária para

31 29 manter a consistência de memória. O modelo Message Passing (Troca de Mensagens) é voltado para sistemas que usam memória distribuída. Existem aplicações que implementam esse modelo, tais como o PMV (Parallel Virtual Machine) [38] e o MPI (Message Passing Interface) [3], que funcionam como bibliotecas em nível de Sistema Operacional. O PMV emula um sistema com memória distribuída em uma rede heterogênea - com máquinas diferentes - para o envio (send) e recebimento (receive) de mensagens, assim se mostrando como um sistema único para o usuário. Sua máquina virtual se divide em duas partes: uma biblioteca e um daemon. Em sua biblioteca encontram-se as funções para a comunicação/troca de mensagens. O Daemon é um processo que executa em segundo plano em todas as máquinas e que é gerencia toda a paralelização. O MPI é uma biblioteca que fornece todas as funcionalidades básicas para a comunicação dos processos, ou seja, os processos se comunicam chamando rotinas de sua biblioteca para enviar e receber mensagens. O MPI é formado por conjuntos de processos onde cada processo é criado para um processador; possui paralelismo explicito - o programador é responsável pela maior parte do esforço de paralelização, ao contrário do paralelismo implícito onde a aplicação é paralelizada sem a intervenção do programador. Sua funcionalidade consiste na subdivisão dos problemas em pequenas partes que são enviadas aos processadores, depois esses pequenos resultados são agrupados constituindo assim o resultado final. Existem duas principais distribuições livres dessa biblioteca, sendo elas LAM-MPI 3 e MPICH MESSAGE PASSING INTERFACE - MPI O padrão MPI apresenta algumas vantagens sobre os demais padrões mencionados na seção anterior, possui um maior desempenho em relação ao TreadMarks e HPF e uma maior versatilidade em relação ao PVM. A biblioteca MPI foi desenvolvida para ser padrão em ambientes de memória distribuída, em Message Passing e em Computação Paralela. Dentre as plataformas alvo da biblioteca MPI estão os Clusters de Estações de Trabalho. É portável para qualquer arquitetura e possui aproximadamente 125 funções para programação e ferramentas 3 Disponível em: 4 Disponível em: www-unix.mcs.anl.gov/mpi/mpich/

32 30 de análise e performanse. Todo seu paralelismo é explícito. Neste trabalho é usado o padrão MPI com a distribuição livre da biblioteca lam-mpi, mais expecificamente a versão lam-mpi Lam-mpi, ou lam, é uma implementação baseada em daemons. Inicialmente esses deamons são criados baseados em uma lista de máquinas remotas gerenciadas pelo usuário. Eles permanecem parados até que eles recebam uma mensagem para carregar um arquivo executável MPI para começar a execução. Os três passos básicos para executar programas paralelos através do lam-mpi são: 1 - Inicializa o lam-mpi, o que cria os deamons nas máquinas; 2 - Executa programas MPI enquanto as deamons lam-mpi existirem em background e 3 - conclui o lam-mpi enviando comandos de finalização. Alguns conceitos do MPI serão abordados, tais como: Processo, Rank, Grupos, Comunicador, Application Buffer e System Buffer. Um Processo é uma parte do programa e pode ser executado em uma ou mais máquinas. O Rank é uma identificação única que é atribuída pelo sistema a um processo quando este é inicializado. Essa identificação é contínua e representada por um número inteiro começando de zero até N -1, onde N é o número de processos, cada processo possui um Rank próprio que é utilizado para receber e enviar mensagens. Grupo é um conjunto ordenado de processos e é associado a um Comunicador. Comunicador é um objeto local que representa o domínio de uma comunicação, ou seja, representa o conjunto de processos que podem ser contactados. Existe um comunicador pré-definido que inclui todos os processos definidos pelo usuário, chamado MPI_COMM_WORLD. Application Buffer é o endereço de memória que armazena um dado que o processo necessita enviar ou receber e é gerenciado pela aplicação. System Buffer é o endereço de memória reservado pelo sistema para armazenar mensagens. Algumas funções do MPI se mostram sendo indispensáveis, outras se apresentam com certa freqüência em inúmeras implementações, por isso é importante comentar sobre algumas delas. MPI_Init, é a função que inicializa um processo MPI, sendo a primeira rotina a ser chamada por um processo. Também sincroniza todos os processos na inicialização

33 31 de uma aplicação MPI. MPI_Finalize, é a função chamada para encerrar o MPI, ou seja, é a ultima função a ser chamada. É usada para liberar memória e não possui argumentos. MPI_Comm_size, função que identifica, para um determinado comunicador, um número inteiro de processos. MPI_Comm_rank, função que identifica, para um determinado grupo, o rank do processo. MPI_Send, é a rotina básica de envio de mensagens do MPI, utiliza o modo de comunicação "blocking send"(envio bloqueante), o que traz maior segurança na transmição da mensagem. Após o retorno libera o "system buffer"e permite acesso ao "application buffer". MPI_Recv, é a rotina básica de recebimento de mensagens do MPI. MPI_Allreduce, é uma rotina que aplica uma operação de redução sobre um conjunto de processos definidos pelo comunicador e dispõe o resultado para todos os processos CLUSTER ENTERPRISE Os testes do presente trabalho foram realizados no Cluster Enterprise do Laboratório de Computação de Alto Desempenho do Centro Tecnológico da Universidade Federal do Espírito Santo (LCAD - CT - UFES). Este aglomerado é totalmente operacional desde 2003 e é composto por 64 nós de processamento e um nó servidor (master). Todos os seus nós utilizam o sistema operacional Linux Red Hat, a instalação local visa diminuir ao máximo o tráfego na rede. Dentre as ferramentas disponíveis no Enterprise foram utilizados o compilador gcc da linguagem C para GNU/Linux, e a biblioteca do Padrão MPI lam-mpi O código seqüencial foi compilado utilizando "gcc -o <arq> <arq.c>"e o código paralelo "mpicc -o <arq> <arq.c>". Cada nó possui 256 MB de memória SDRAM, 20 GB de memória de armazenamento e um processador AMD ATHLON XP 1800 com 2 unidades de processamento para operações de ponto flutuante operando a uma freqüência de 1,53 GHz, 5 alvim/mpi/lam.html

34 32 totalizando 16 GB de memória RAM, 1,2 TB de capacidade de armazenamento, um desempenho teórica de pico igual a 3,05 GFLOP/s por nó de processamento e uma performance teórica de pico do sistema de 195,8 GFLOP/s. Testes rodando o High- Performance Linpack Benchmark (programa para teste de desempenho de supercomputadores paralelos - basicamente uma fatoração LU de uma matriz densa) mostraram uma performance real de 1,79 Gflop/s por nó e um desempenho real do sistema de 47 GFLOP/s. A rede de interconexão é composta por dois switches com 48 portas cada, onde a cada porta possui capacidade teórica de 100Mb/s para comunicação entre os nós de processamento e se comunicam entre si por um módulo Gigabit Ethernet (1000 Mb/s). A quantidade de nós é dividida igualmente entre os dois switches e um deles possui uma porta Gigabit a mais para conexão com o servidor. O nó servidor possui basicamente a mesma configuração dos nós de processamento, as únicas resalvas é que conta com 512 MB de RAM, 80 GB de disco e duas placas de rede, sendo uma Gigabit Ethernet que se conecta com um dos switches do cluster e outra Fast-Ethernet para conexão externa. Esta máquina também é responsável pela distribuição dos processos nos nós de processamento, pelo armazenamento das contas de usuários e por atividades de configuração, atualização e monitoramento dos nós de processamento. A Figura 17 ilustra as conexões de rede entre as máquinas externas, o servidor e os nós de processamento. O acesso aos recursos computacionais do cluster pode ser feito de duas formas principais: acessando diretamente as máquinas do LCAD ou através de acesso remoto. O acesso remoto é feito, ao se logar à máquina do LCAD utilizando nome e senha cadastrados, através de SSH (Secure Shell) [36]. Os arquivos podem ser transferidos para o LCAD através de SPC (Secure Copy) [36] para as máquinas.

35 Figura 17: Visão geral do CLuster Enterprise 33

36 34 3 MÉTODOS NUMÉRICOS Métodos numéricos [39] podem ser empregados juntamente com o contexto de arquiteturas paralelas e programação paralela para a obtenção de ganho de performance. Grande parte de problemas de diversas áreas podem ser solucionados utilizando-se tais métodos. Para um processo de modelagem computacional de algum problema consideram-se duas etapas. A primeira consta da identificação dos fatores que influenciam de maneira relevante no problema para a obtenção de um modelo matemático. A segunda etapa é a obtenção de resultados através desse modelo matemático, esta é a tarefa atribuída aos métodos numéricos. A essência dos métodos numéricos está na discretização do contínuo, e é isto que torna um problema "finito"e capaz de ser solucionado através de computadores. Um exemplo de utilização de métodos numéricos é na discretização de equações diferenciais [40]. 3.1 Método das Diferenças Finitas Equações diferenciais parciais aparecem com freqüência na solução de problemas em diversas áreas do conhecimento. O presente trabalho apresenta o processo de discretização pelo método das diferenças finitas da equação 3.1: ( 2 u x ) y 2 + a u x + b u + cu = f (x,y) (3.1) y Onde a, b, c e f (x,y) são conhecidas e u(x,y) é conhecida em sua região de contorno. A equação de Laplace, equação que modela comportamentos de diversos campos da ciência como astronomia, eletromagnetismo, mecânica dos fluidos, entre outras, é um caso particular da equação descrita acima. Sendo assim, tal equação pode ser

37 35 empregada em problemas como a condução de calor em uma placa plana, a determinação de potencial elétrico para a região dentro de uma calha de seção retangular, entre outros. Tais métodos foram implementados originalmente para a programação seqüencial, porém observa-se um aumento de desempenho quando são implementados em programação paralela. O método das Diferenças Finitas consiste na aproximação de derivadas por meio de um número finito de diferenças. A incógnita de uma equação diferencial é uma função u(x) definida em todos os pontos do intervalo no qual a equação está sendo resolvida. O primeiro passo para solução numérica de equações diferenciais é discretizar a região onde se procura a solução, ou seja, defini-se uma malha, que é o conjunto finito de pontos também chamados de nós da malha. Calculam-se aproximações de u(x) nesses nós. O segundo passo consiste na discretização das diferenciais que estão na equação. Essas derivadas são aproximadas por meio de diferenças entre valores da solução discretizada. A ferramenta básica na definição das aproximações de derivadas é a série de Taylor. Essa série traz informações sobre a função em um ponto x através de uma avaliação da vizinhança de x, isto é, no ponto x + h. Sendo assim uma expansão em série de Taylor da função u(x) é apresentada na equação 3.2: u(x + h) = u(x) + hu (x) + h2 2! u (x) h5 n! un (x) + h(n+1) (n + 1)! u5 (x) (3.2) O último termo representa o erro da aproximação, esse erro se torna irrelevante para valores muito pequenos de h. Usando-se essa expansão da série de Taylor e tomando n = 2 pode-se chegar a fórmula avançada 3.3 para a discretização da derivada: u(x + h) = u(x) + hu (x) + h2 2 u (x) + h3 3! u (x) (3.3) Analogamente, tomando h chega-se a formula atrasada 3.4: u(x h) = u(x) hu (x) + h2 2 u (x) h3 3! u (x) (3.4) Subtraindo a última expressão da penúltima chega-se a fórmula centrada 3.5 para

38 36 a discretização da derivada e o seu erro: u (x) = u(x + h) u(x h) 2h + h2 3! u (3.5) Seguindo as mesmas idéias pode-se estabelecer a expressão 3.6 para o cálculo de aproximações para a derivada segunda: u (x) = u(x + h) 2u(x) + u(x h) 2h + h2 12 uiv (3.6) No método das Diferenças Finitas as derivadas presentes na equação diferencial 3.1 são substituídas pelas aproximações 3.5 e 3.6. Para facilitar a impementação computacional pode-se adotar a notação u i para a aproximação de u(x i ). Sendo assim as equações 3.5 e 3.6 podem ser substituídas pelas equações 3.7 e 3.8 seguintes: u (x) = u i+1 u i 1 2h (3.7) u (x) = u i+1 2u i + u i 1 h 2 (3.8) Com isso pode-se discretizar a função 3.1 com a utilização do método das Diferenças Finitas, obtendo a discretização mostrada na fórmula 3.9: ( ) u i, j+1 2u i, j + u i, j 1 h 2 + u i+1, j u i, j + u i 1, j x h 2 +a u i, j+1 u i, j 1 +b u i+1, j u i 1, j y 2h x 2h y +cu i, j = f (x,y) (3.9) 3.2 Malha e Métodos Iterativos Como já mencionado na seção 3.1, o método das diferenças finitas traz informações sobre a função x através de uma avaliação da vizinhança de x, isto é, no ponto x + h. Com isso percebe-se que um ponto é aferido com a contribuição de seus vizinhos, ou seja de seu contorno. Com isso torna-se necessário uma estrutura matricial para para ser calculado a equação diferencial utilizando tal método. Essa estrutura matricial também é chamada de malha, e seus elementos são chamados de nós. A Figura 18 representa uma malha onde o nó 8 é calculado com a contribuição dos nós 3, 7, 9 e 13.

39 37 Figura 18: Malha exemplo. Como a equação 3.9 pode ser escrita em todos os pontos da malha tem-se um sistema com tantas equações e incógnitas quanto os elementos da malha. Para resolver esse sistema pode-se utilizar de métodos para solução de sistemas lineares, tais como o método iterativo Gauss-Seidel [39], onde as iterações são calculadas aproveitando os cálculos já atualizados de outras componentes para atualizar a componente que está sendo computada. Para a equação 3.9, as iterações são calculadas usando a equação 3.10: ) ( ) ( u i, j+1 + a u i, j 1 b u i, j = f i, j ( a 2hx 1 h 2 x 2hx + 1 h 2 x ( c h 2 x h 2 y 2hy 1 h 2 y ) ) u i+1, j + ( b 2hy + 1 h 2 y ) u i 1, j (3.10) Comparado com o método iterativo Jacobi [39], o método Gauss-Seidel possui uma convergência mais rápida pois se utiliza de atualizações imediatas em suas iterações, porém há uma técnica de aceleração da convergência dos métodos iterativos Conhecida com o nome de Successive Over Relaxation (SOR) [39]. Esse método define a próxima iteração como uma média entre a iteração e a próxima iteração obtida pelo método Gauss-Seidell. As iterações, associadas ao parâmetro w do método SOR, são definidas pela equação 3.11: x k+1 SOR = (1 w)xk SOR + wxk+1 Gauss Seidell (3.11) No método SOR, w é chamado de parâmetro de relaxação. Observa-se que quando w = 1 tem-se o método Gauss-Seidel. A escolha de 1 < w < 2 caracteriza os métodos de sobre-relaxação e valores 0 < w < 1 os métodos de sub-relaxação. Com isso destaca-se que o o método SOR só converge se 0 < w < 2.

40 Exemplo Prático Um exemplo prático da utilização dos métodos numéricos até aqui apresentados é na condução de calor em uma placa plana. A equação de Laplace 3.12, que é um caso particular da equação 3.1, em condições ideais de condutividade e variação de temperatura, rege a condução de calor em uma placa plana. ( 2 T x ) T y 2 = 0 (3.12) Em uma placa retangular cada ponto da mesma pode ser considerado como um nó de uma malha. Se cada lado da placa for submetido a uma temperatura podese calcular o espalhamento do calor em toda a placa retangular plana. Se essas temperaturas de contorno forem iguais, os valores do interior da malha devem ser aproximadamente iguais para todos os pontos da discretização. As figuras?? e 20 mostram o espalhamento do calor em uma placa retangular plana com valores de contorno iguais e distintos, respectivamente. Quanto mais pontos a malha tiver, mais próximos serão os nó vizinhos e mais precisa a solução. Figura 19: Espalhamento da temperatura em uma placa com lados à mesma temperatura. Figura 20: Espalhamento da temperatura em uma placa com lados a temperaturas distintas.

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

ALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES

ALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES ALGORÍTMOS PARALELOS (Aula 2) Neyval C. Reis Jr. OUTUBRO/2004 LCAD Laboratório de Computação de Alto Desempenho DI/UFES Programa do Curso LCAD 1. Introdução 2. Arquitetura de Computadores 3. Arquiteturas

Leia mais

Introdução às arquiteturas paralelas e taxonomia de Flynn

Introdução às arquiteturas paralelas e taxonomia de Flynn Introdução às arquiteturas paralelas e taxonomia de Flynn OBJETIVO: definir computação paralela; o modelo de computação paralela desempenhada por computadores paralelos; e exemplos de uso da arquitetura

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 6 - ALGORÍTIMOS PARALELOS MPI - Parallel Virtual Machine e PVM - Parallel Virtual Machine 1. INTRODUÇÃO Inicialmente é necessário conceber alguns conceitos para entendimento dos algoritmos paralelos:

Leia mais

Sistemas Paralelos e Distribuídos. Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN

Sistemas Paralelos e Distribuídos. Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN Sistemas Paralelos e Distribuídos Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN Conceitos preliminares Paralelismo refere-se a ocorrência simultânea de eventos em um computador Processamento

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais SISTEMAS COM MÚLTIPLOS PROCESSADORES LIVRO TEXTO: CAPÍTULO 13, PÁGINA 243 Prof. Pedro Luís Antonelli Anhanguera Educacional INTRODUÇÃO Arquiteturas que possuem duas ou mais CPUs interligadas

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de I Organização Básica B de (Parte V, Complementar)

Leia mais

4 Computação Paralela 4.1. Introdução

4 Computação Paralela 4.1. Introdução 4 Computação Paralela 4.1. Introdução Nos últimos anos observa-se uma tendência cada vez maior do aumento da demanda computacional na resolução de grandes problemas. Exemplos de aplicações que exigem alto

Leia mais

ALGORÍTMOS PARALELOS LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES

ALGORÍTMOS PARALELOS LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES ALGORÍTMOS PARALELOS Neyval C. Reis Jr. OUTUBRO/2004 LCAD Laboratório de Computação de Alto Desempenho DI/UFES Programa do Curso LCAD 1. Introdução 2. Arquitetura de Computadores 3. Arquiteturas de Sistemas

Leia mais

Sistemas Distribuídos Conceitos HW e SW. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos Conceitos HW e SW. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos Conceitos HW e SW Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Roteiro da Aula Conceitos de Hardware Conceitos de Software Combinações de SW e HW 3 Sistemas Distribuídos

Leia mais

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS 1. Introdução a supercomputação 2. Visão geral de Mainframe 3. Cluster de computadores 4. Cluster Beowulf considerações de projeto 5. Cluster x Grid 6.

Leia mais

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro Sistemas MIMD Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Arquiteturas Paralelas (SISD) Single Instruction Stream, Single Data Stream: Monoprocessador

Leia mais

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas: Computadores de alto-desempenho são utilizados em diversas áreas: - análise estrutural; - previsão de tempo; - exploração de petróleo; - pesquisa em fusão de energia; - diagnóstico médico; - simulações

Leia mais

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo 1 Professores: Aula 10 Lúcia M. A. Drummond Simone de Lima Martins Conteúdo: Arquiteturas Avançadas - Arquiteturas RISC - Processamento Paralelo 2 Arquiteturas RISC Reduced Instruction Set Computer se

Leia mais

slide 0 Algoritmos Paralelos

slide 0 Algoritmos Paralelos slide 0 Algoritmos Paralelos Slide 2 Demanda por Velocidade Computational Demanda contínua por maior rapidez computational das máquinas que as atualmente disponíveis. As áreas que exigem maior rapidez

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 6 - ARQUITETURAS AVANÇADAS DE COMPUTADORES 1. INTRODUÇÃO As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com ela o conceito de arquitetura avançada tem se modificado. Nos

Leia mais

Resumo. Introdução Cluster Cluster Beowulf Curiosidades Conclução

Resumo. Introdução Cluster Cluster Beowulf Curiosidades Conclução Cluster Resumo Introdução Cluster Cluster Beowulf Curiosidades Conclução Introdução Sua empresa esta precisando fazer um grande processamento; As Nuvens existentes não são suficientes para sua empresa;

Leia mais

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro Introdução Sistemas Operacionais 1 Sistema Operacional: Um conjunto de programas, executado pelo computador como os outros programas. Função: Controlar o funcionamento do computador, disponibilizando seus

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 4 - CLUSTER DE COMPUTADORES 1. INTRODUÇÃO Grande parte do tempo, os computadores que utilizamos encontram-se ociosos, ou seja, sem nada para processar. Isso se deve, em grande parte, pelas aplicações

Leia mais

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos Capítulo 8 Sistemas com Múltiplos Processadores 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos 1 Sistemas Multiprocessadores Necessidade contínua de computadores mais rápidos modelo

Leia mais

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano 2012-1

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano 2012-1 ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES Prof. Dr. Daniel Caetano 2012-1 Lembretes Compreender o funcionamento da Arquitetura Superpipeline Compreender

Leia mais

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 3 - ARQUITETURA DE SISTEMAS DISTRIBUÍDOS 1 INTRODUÇÃO Considerando que os Sistemas Distribuídos são constituídos de vários processadores, existem diversas formas de organizar o hardware de tais

Leia mais

Arquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França

Arquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França Arquitetura NUMA 1 Daniel de Angelis Cordeiro INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França 6 de Outubro de 2010 1 Baseado em slides feitos por Christiane Pousa

Leia mais

1.2 Tipos de Sistemas Operacionais

1.2 Tipos de Sistemas Operacionais 1.2 Tipos de Operacionais Tipos de Operacionais Monoprogramáveis/ Monotarefa Multiprogramáveis/ Multitarefa Com Múltiplos Processadores 1.2.1 Monoprogramáveis/Monotarefa Os primeiros sistemas operacionais

Leia mais

Comparação SDs X Scs

Comparação SDs X Scs Prof. Alexandre Lima Sistemas Distribuídos Cap 9 1/7 Comparação SDs X Scs Distribuição inerente Economia Velocidade Confiabilidade Crescimento incremental Descrição Algumas aplicações envolvem máquinas

Leia mais

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede Prof. Samuel Souza } Monolíticas Aplicações em um computador centralizado } Em Rede Aplicações com comunicação em rede } Distribuídas Comunicação e cooperação em rede } Aplicações que são funcionalmente

Leia mais

Arquitetura de Computadores. Professor: Vilson Heck Junior

Arquitetura de Computadores. Professor: Vilson Heck Junior Arquitetura de Computadores Professor: Vilson Heck Junior Agenda Conceitos Estrutura Funcionamento Arquitetura Tipos Atividades Barramentos Conceitos Como já discutimos, os principais componentes de um

Leia mais

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br ESQUEMA DE UM COMPUTADOR Uma Unidade Central de

Leia mais

Máquinas Multiníveis

Máquinas Multiníveis Infra-Estrutura de Hardware Máquinas Multiníveis Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conceitos básicos Classificação de arquiteturas Tendências da tecnologia Família Pentium

Leia mais

SIS17 - Arquitetura de Computadores

SIS17 - Arquitetura de Computadores SIS17 - Arquitetura de Computadores Organização Básica B de Computadores (Parte I) Organização Básica B de Computadores Composição básica b de um Computador eletrônico digital Processador Memória Memória

Leia mais

Multicomputadores. Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação CECOMP

Multicomputadores. Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação CECOMP Multicomputadores Introdução Vimos que existem dois tipos de processadores paralelos MIMD: Multiprocessadores. Multicomputadores. Nos multiprocessadores, existe uma memória compartilhada que pode ser acessada

Leia mais

ORDENAÇÃO DE DADOS EM MEMÓRIA EXTERNA UTILIZANDO PROGRAMAÇÃO PARALELA

ORDENAÇÃO DE DADOS EM MEMÓRIA EXTERNA UTILIZANDO PROGRAMAÇÃO PARALELA CENTRO UNIVERSITÁRIO VILA VELHA CURSO DE CIÊNCIA DA COMPUTAÇÃO Christyan Brandão Oliveira Felipe Nogueira Gáudio ORDENAÇÃO DE DADOS EM MEMÓRIA EXTERNA UTILIZANDO PROGRAMAÇÃO PARALELA VILA VELHA 2008 Christyan

Leia mais

Memória compartilhada (shared memory): - o espaço de endereçamento é único; - comunicação através de load e store nos endereços de memória.

Memória compartilhada (shared memory): - o espaço de endereçamento é único; - comunicação através de load e store nos endereços de memória. 4. Arquiteturas ID áquinas ID (ultiple Instruction ultiple Data) são arquiteturas caracterizadas pela execução simultânea de múltiplos fluxos de instruções. Essa capacidade deve-se ao fato de que são construídas

Leia mais

FACULDADE PITÁGORAS PRONATEC

FACULDADE PITÁGORAS PRONATEC FACULDADE PITÁGORAS PRONATEC DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos carlos@oficinadapesquisa.com.br www.oficinadapesquisa.com.br Objetivos Ao final desta apostila,

Leia mais

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0 COMPUTAÇÃO PARALELA uma visão geral Guilherme Galante v.2.0 Guilherme Galante Bacharel em Informática Unioeste (2003) Mestre em Ciência da Computação UFRGS (2006) Professor Assistente do curso de Informática/Ciência

Leia mais

CAPÍTULO 2 ORGANIZAÇÃO DE COMPUTADORES

CAPÍTULO 2 ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 2 ORGANIZAÇÃO DE COMPUTADORES 2.1 Organização de um Computador Típico : Armazena dados e programas. Processador (CPU - Central Processing Unit): Executa programas armazenados na memória, interpretando

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Fernando Fonseca Ramos Faculdade de Ciência e Tecnologia de Montes Claros Fundação Educacional Montes Claros 1 Índice 1- Introdução 3- Memórias 4- Dispositivos

Leia mais

Processamento Paralelo

Processamento Paralelo Processamento Paralelo Hardware Paralelo Universidade Estadual de Santa Cruz Bacharelado em Ciência da Computação Prof. Esbel Tomás Valero Orellana Portabilidade O principal problema das primeiras maquinas

Leia mais

7-1. Parte 6 Otimizações da Arquitetura

7-1. Parte 6 Otimizações da Arquitetura 7-1 Parte 6 Otimizações da Arquitetura 7-2 Bibliografia [1] Miles J. Murdocca e Vincent P. Heuring, Introdução à Arquitetura de Computadores [2] Andrew S. Tanenbaum, Modern Operating Systems [3] William

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Desenvolvimento de Programas Paralelos para Máquinas NUMA: Conceitos e Ferramentas

Desenvolvimento de Programas Paralelos para Máquinas NUMA: Conceitos e Ferramentas 1 Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Programa de Pós-Graduação em Ciência da Computação Desenvolvimento de Programas Paralelos para Máquinas NUMA: Conceitos

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS 1. Histórico Primeiros computadores Computadores dos anos 50 e 60 Primeiros computadores com sistemas operacionais Surgimento das redes de computadores Nos anos 70 início das pesquisas

Leia mais

Organização de Computadores 2005/2006 Processamento Paralelo

Organização de Computadores 2005/2006 Processamento Paralelo Organização de Computadores 2005/2006 Processamento Paralelo Paulo Ferreira paf a dei.isep.ipp.pt Maio de 2006 Introdução 2 Porquê?...........................................................................................

Leia mais

hvbacellar@gmail.com Palavras-chave Cluster; Beowulf; OpenMosix; MPI; PVM.

hvbacellar@gmail.com Palavras-chave Cluster; Beowulf; OpenMosix; MPI; PVM. Cluster: Computação de Alto Desempenho Hilário Viana Bacellar Instituto de Computação, Universidade Estadual de Campinas Av. Albert Einstein 1251, Cidade Universitária, CEP 13083-970 Campinas, SP, Brasil

Leia mais

Cluster HPC High Performance Computing.

Cluster HPC High Performance Computing. Faculdade de Tecnologia de Guaratinguetá. doze, março de 2009. Cluster HPC High Performance Computing. Diogo Salles, Thiago Pirro, Camilo Bernardes, Paulo Roberto, Ricardo Godoi, Douglas, Fauzer. Sistemas

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos I: Threads, virtualização e comunicação via protocolos Prof. MSc. Hugo Souza Nesta primeira parte sobre os Processos Distribuídos iremos abordar: Processos e a comunicação

Leia mais

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários.

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários. Os sistemas computacionais atuais permitem que diversos programas sejam carregados na memória e executados simultaneamente. Essa evolução tornou necessário um controle maior na divisão de tarefas entre

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Classificação de Sistemas Distribuídos e Middleware

Sistemas Distribuídos: Conceitos e Projeto Classificação de Sistemas Distribuídos e Middleware Sistemas Distribuídos: Conceitos e Projeto Classificação de Sistemas Distribuídos e Middleware Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA

Leia mais

Desenvolvimento de um Cluster de Alto Desempenho com PVM

Desenvolvimento de um Cluster de Alto Desempenho com PVM Desenvolvimento de um Cluster de Alto Desempenho com PVM Daniel Cândido de Oliveira 1, Yzaac Gonçalves da Silva 1, Madianita Bogo 1 1 Centro Universitário Luterano de Palmas Universidade Luterana do Brasil

Leia mais

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Prof. André Dutton EMENTA: Conceitos fundamentais e histórico da ciência da computação; Histórico dos computadores, evolução e tendências; Modalidades de computadores

Leia mais

Computação de Alta Perfomance com Software Livre (Clusters)

Computação de Alta Perfomance com Software Livre (Clusters) Computação de Alta Perfomance com Software Livre (Clusters) 3º Seminário de Tecnologia da Informação UCSal Marcelo Soares Souza (marcelo@cebacad.net) CEBACAD Centro Baiano de Computação de alto Desempenho

Leia mais

Aspectos de Programação Paralela em Máquinas NUMA

Aspectos de Programação Paralela em Máquinas NUMA Aspectos de Programação Paralela em Máquinas NUMA Alexandre Carissimi 1 Fabrice Dupros 2 Jean-François Méhaut 3 Rafael Vanoni Polanczyk 1 1 Instituto de Informática UFRGS Caixa Postal 15.064 Porto Alegre

Leia mais

Sistemas Distribuídos Aula 1 Introdução

Sistemas Distribuídos Aula 1 Introdução Sistemas Distribuídos Aula 1 Introdução 35T34 3B2 Programa Introdução. Conceitos de sistemas distribuídos. Comunicação em sistemas distribuídos. Sincronização em sistemas distribuídos. Processos e processadores

Leia mais

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01 Unidade Central de Processamento (CPU) Processador Renan Manola Introdução ao Computador 2010/01 Componentes de um Computador (1) Computador Eletrônico Digital É um sistema composto por: Memória Principal

Leia mais

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2) Definição de um Sistema Distribuído (1) Introdução Um sistema distribuído é: Uma coleção de computadores independentes que aparecem para o usuário como um único sistema coerente. Definição de um Sistema

Leia mais

ENGENHARIAS E TECNOLOGIAS - Computação e Informática ESTUDO DE APLICABILIDADE DE SISTEMAS FRACAMENTE ACOPLADOS UTILIZANDO HARDWARE DE BAIXO CUSTO

ENGENHARIAS E TECNOLOGIAS - Computação e Informática ESTUDO DE APLICABILIDADE DE SISTEMAS FRACAMENTE ACOPLADOS UTILIZANDO HARDWARE DE BAIXO CUSTO ENGENHARIAS E TECNOLOGIAS - Computação e Informática ESTUDO DE APLICABILIDADE DE SISTEMAS FRACAMENTE ACOPLADOS UTILIZANDO HARDWARE DE BAIXO CUSTO Autor: HILÁRIO VIANA BACELLAR Co-autor: Matheus de Paula

Leia mais

Programação Paralela e Distribuída 2009/10. Fundamentos

Programação Paralela e Distribuída 2009/10. Fundamentos Programação Paralela e Distribuída 1 Porquê Programação Paralela? Se um único computador (processador) consegue resolver um problema em N segundos, podem N computadores (processadores) resolver o mesmo

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Referências Caracterização de Sistemas Distribuídos Sistemas operacionais modernos Andrew S. TANENBAUM Prentice-Hall, 1995 Capítulo 9 Seções 9.1 a 9.3 Distributed Systems: concept

Leia mais

Sistema Operacional Correção - Exercício de Revisão

Sistema Operacional Correção - Exercício de Revisão Prof. Kleber Rovai 1º TSI 22/03/2012 Sistema Operacional Correção - Exercício de Revisão 1. Como seria utilizar um computador sem um sistema operacional? Quais são suas duas principais funções? Não funcionaria.

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 3 ARQUITETURA DE VON NEUMANN E DESEMPENHO DE COMPUTADORES Prof. Luiz Gustavo A. Martins Tipos de Arquitetura Arquitetura de von Neumann: Conceito de programa armazenado; Dados

Leia mais

7 Processamento Paralelo

7 Processamento Paralelo 7 Processamento Paralelo Yes, of course, who has time? Who has time? But then if we do not ever take time, how can we ever have time? (The Matrix) 7.1 Introdução Classificação de Sistemas Paralelos Diversas

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Hardware Sistema de Entrada/Saída Visão Geral Princípios de Hardware Dispositivos de E/S Estrutura Típica do Barramento de um PC Interrupções

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO Prof. Msc. Carlos José Giudice dos Santos carlos@oficinadapesquisa.com.br www.oficinadapesquisa.com.br RELAÇÃO ENTRE PROGRAMAÇÃO E ARQUITETURA

Leia mais

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com Sistemas Operacionais 2014 Introdução Alexandre Augusto Giron alexandre.a.giron@gmail.com Roteiro Sistemas Operacionais Histórico Estrutura de SO Principais Funções do SO Interrupções Chamadas de Sistema

Leia mais

Programação Paralela

Programação Paralela rogramação aralela FEU 2. Arquitecturas de omputadores e rogramação aralela Arquitecturas de omputadores Taxonomia de Flynn (extra livro recomendado) Base da Taxonomia: D: data stream (fluxo de acesso

Leia mais

- Aula 1 - ARQUITETURA DE COMPUTADORES

- Aula 1 - ARQUITETURA DE COMPUTADORES - Aula 1 - ARQUITETURA DE COMPUTADORES Em arquitetura de computadores serão estudados aspectos da estrutura e do funcionamento dos computadores. O objetivo é apresentar de forma clara e abrangente a natureza

Leia mais

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Introdução à Organização de Computadores Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Tópicos Processadores Memória Principal Memória Secundária Entrada e

Leia mais

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores Multi-processamento Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores Arquitecturas MIMD de memória distribuída Massive Parallel Computers Sistemas distribuídos Ainda

Leia mais

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 5 PROCESSOS 1. INTRODUÇÃO Em sistemas distribuídos é importante examinar os diferentes tipos de processos e como eles desempenham seu papel. O conceito de um processo é originário do campo de sistemas

Leia mais

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING http://www.uniriotec.br/~tanaka/tin0036 tanaka@uniriotec.br Bancos de Dados Distribuídos Conceitos e Arquitetura Vantagens das Arquiteturas C/S (em relação

Leia mais

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Introdução à Organização de Computadores Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 CPU (Central Processing Unit) é o coordenador de todas as atividades

Leia mais

Memória Compartilhada Distribuída 1

Memória Compartilhada Distribuída 1 Memória Compartilhada Distribuída 1 Cesar Eduardo Atilio Lionis de Souza Watanabe 20 de maio de 2002 1 Orientador: Prof. Dr. Norian Marranghello Sumário 1 Introdução 2 2 Algoritmos de gerenciamento de

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com O que veremos hoje... Evolução Histórica Motivação Conceitos Características

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição

William Stallings Arquitetura e Organização de Computadores 8 a Edição William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 7 Entrada/saída Os textos nestas caixas foram adicionados pelo Prof. Joubert slide 1 Problemas de entrada/saída Grande variedade

Leia mais

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação Disciplina A Disciplina B Código Disciplina C/H Curso Disciplina C/H Código Curso Ano do Currículo 66303 ESTRUTURA DE DADOS I 68/0 ENG. DE

Leia mais

Capítulo 1 Introdução

Capítulo 1 Introdução Capítulo 1 Introdução Programa: Seqüência de instruções descrevendo como executar uma determinada tarefa. Computador: Conjunto do hardware + Software Os circuitos eletrônicos de um determinado computador

Leia mais

Muitas aplicações modernas podem ser modeladas como tarefas divisíveis.

Muitas aplicações modernas podem ser modeladas como tarefas divisíveis. 1 Introdução O grande aumento de performance das redes de computadores, combinado com a proliferação de computadores de baixo custo e alto desempenho, trouxe à tona ambientes de meta-computação, ou grids[15,

Leia mais

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:

Leia mais

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br Sistemas Operacionais Alexandre Meslin meslin@inf.puc-rio.br Ementa Apresentação do curso Cap1 - Visão Geral Cap2 - Conceitos de Hardware e Software Cap3 - Concorrência Cap4 - Estrutura do Sistema Operacional

Leia mais

Edeyson Andrade Gomes. www.edeyson.com.br

Edeyson Andrade Gomes. www.edeyson.com.br Sistemas Operacionais Histórico e Estruturas Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Histórico de SOs Tipos de SOs Estruturas de SOs 2 Histórico de SOs Baseado em Francis Machado e Luiz

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Características Básicas de Sistemas Distribuídos

Características Básicas de Sistemas Distribuídos Motivação Crescente dependência dos usuários aos sistemas: necessidade de partilhar dados e recursos entre utilizadores; porque os recursos estão naturalmente em máquinas diferentes. Demanda computacional

Leia mais

MDX-cc: Ambiente de Programação Paralela Aplicado a Cluster de Clusters

MDX-cc: Ambiente de Programação Paralela Aplicado a Cluster de Clusters Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Pós-Graduação em Ciência da Computação MDX-cc: Ambiente de Programação Paralela Aplicado a Cluster de Clusters Cassiano Ricardo

Leia mais

O que é Arquitetura de Computadores?

O que é Arquitetura de Computadores? O que é Arquitetura de Computadores? Forças Coordenação de um conjunto de níveis de abstração de um computador sobre um grande conjunto de forças de mudança Arquitetura de Computadores = Arquitetura de

Leia mais

Processadores clock, bits, memória cachê e múltiplos núcleos

Processadores clock, bits, memória cachê e múltiplos núcleos Processadores clock, bits, memória cachê e múltiplos núcleos Introdução Os processadores (ou CPUs, de Central Processing Unit) são chips responsáveis pela execução de cálculos, decisões lógicas e instruções

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

Capítulo 9. Arquitecturas Reais e Alternativas

Capítulo 9. Arquitecturas Reais e Alternativas Capítulo 9 Arquitecturas Reais e Alternativas Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture Ábaco (3000 AC) do Lat. abacu < Gr. abax, quadro,

Leia mais

Tipos de Sistemas Distribuídos (Cluster e Grid)

Tipos de Sistemas Distribuídos (Cluster e Grid) Tipos de Sistemas Distribuídos (Cluster e Grid) Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência

Leia mais

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Objetos distribuídos e invocação remota Introdução Comunicação entre objetos distribuídos Chamada de procedimento remoto Eventos e notificações Objetos

Leia mais

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos Sistemas Distribuídos Sistemas de Arquivos Distribuídos Roteiro Sistema de arquivos distribuídos Requisitos Arquivos e diretórios Compartilhamento Cache Replicação Estudo de caso: NFS e AFS Sistemas Distribuídos

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br

Leia mais

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 4 - INTRODUÇÃO A SUPERCOMPUTAÇÃO 1. INTRODUÇÃO Atualmente cientistas brasileiros usam supercomputadores para pesquisar desde petróleo até mudanças climáticas. Um grande exemplo é o supercomputador

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 4 Tipos de SO Prof.: Edilberto M. Silva http://www.edilms.eti.br SO - Prof. Edilberto Silva Os Sistemas Operacionais podem ser assim classificados: SO - Prof. Edilberto Silva

Leia mais

Organização e Arquitetura de Computadores. Hugo Barros email@hugobarros.com.br

Organização e Arquitetura de Computadores. Hugo Barros email@hugobarros.com.br Organização e Arquitetura de Computadores Hugo Barros email@hugobarros.com.br RISC X SISC RISC: Reduced Instruction Set Computer Nova Tecnologia para máquinas de alta performance; Máquina com um conjunto

Leia mais