UNIVERSIDADE FEDERAL DE MATO GROSSO COORDENAÇÃO DE ENSINO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO

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

Download "UNIVERSIDADE FEDERAL DE MATO GROSSO COORDENAÇÃO DE ENSINO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO"

Transcrição

1 UNIVERSIDADE FEDERAL DE MATO GROSSO COORDENAÇÃO DE ENSINO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO OTIMIZAÇÃO DE ALGORITMO PARALELO DE RECONSTRUÇÃO TOMOGRÁFICA 2D DE AMOSTRAS DE SOLO PARA APLICAÇÃO EM CLUSTER AD HOC GUILHERME PICARELLI CARDOSO CUIABÁ MT 2009

2 UNIVERSIDADE FEDERAL DE MATO GROSSO COORDENAÇÃO DE ENSINO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO OTIMIZAÇÃO DE ALGORITMO PARALELO DE RECONSTRUÇÃO TOMOGRÁFICA 2D DE AMOSTRAS DE SOLO PARA APLICAÇÃO EM CLUSTER AD HOC GUILHERME PICARELLI CARDOSO Orientador: Prof. Dr. MAURICIO FERNANDO LIMA PEREIRA Monografia apresentada ao Curso de Ciência da Computação da Universidade Federal de Mato Grosso, para obtenção do Título de Bacharel em Ciência da Computação. CUIABÁ MT 2009

3 UNIVERSIDADE FEDERAL DE MATO GROSSO COORDENAÇÃO DE ENSINO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO CERTIFICADO DE APROVAÇÃO Título: Otimização de algoritmo paralelo de reconstrução tomográfica 2D de amostras de solo para aplicação em cluster ad hoc Autor: Guilherme Picarelli Cardoso Aprovada em / / Prof. Dr. Mauricio Fernando Lima Pereira Instituto de Computação - UFMT (Orientador) Profª. Msc. Luciana C. L. Faria Borges Instituto de Computação - UFMT Prof. Msc. Luís Cézar Darienzo Alves Instituto de Computação UFMT

4 DEDICATÓRIA Aos meus pais, Fernando de Matos Cardoso (in memorian) e Eliana Picarelli Cardoso, pelo total apoio e motivação sempre.

5 AGRADECIMENTOS Aos meus queridos amigos de sala, presentes durante esses quatro anos de curso, e que continuarão presentes além da faculdade no decorrer da vida. Agradeço ao meu orientador, Mauricio, por toda a ajuda e paciência durante o trabalho, e por ter me mostrado uma área pela qual me interessei e que possivelmente se fará presente durante minha carreira. Agradeço também à todos os amigos, de Cuiabá ou de muito longe, pelas boas conversas e companhias, em momentos de tristeza ou alegria.

6 SUMÁRIO LISTA DE FIGURAS... 7 LISTA DE TABELAS... 9 RESUMO INTRODUÇÃO APRESENTAÇÃO OBJETIVOS Objetivo Geral Objetivos Específicos JUSTIFICATIVA METODOLOGIA CRONOGRAMA PROPOSTO CRONOGRAMA EXECUTADO FUNDAMENTAÇÃO TEÓRICA TOMOGRAFIA COMPUTADORIZADA COMPUTAÇÃO PARALELA Introdução Classificações de Arquiteturas Paralelas Classificação de Flynn Classificação segundo o compartilhamento de Memória Multiprocessadores Multicomputadores CLUSTERS High-Availability Clusters High-Performance Computing Cluster Beowulf Cluster PELICANHPC Configurando um cluster PelicanHPC CONCEITOS E MEDIDAS DE DESEMPENHO DA PROGRAMAÇÃO PARALELA Granularidade computacional e Latência de comunicação Speed Up e Eficiência MESSAGE PASSING INTERFACE Funcionamento Básico da MPI ESTUDO DE CASO ALGORITMO DE RECONSTRUÇÃO TOMOGRÁFICA BIDIMENSIONAL Algoritmo paralelo de Pereira Algoritmo paralelo proposto AMBIENTE DE TESTES MEDIDAS OBTIDAS E MÉTODOS PARA COMPARAÇÃO ENTRE OS ALGORITMOS TESTES COM ALGORITMO DE PEREIRA Tempos de Execução Algoritmo Pereira Cluster 6 Máquinas Tempos de Execução Algoritmo de Pereira - Cluster 11 Máquinas Tempo Total de Execução TESTES COM ALGORITMO PROPOSTO Tempos de execução do algoritmo Proposto Cluster 6 Máquinas Tempos de execução do algoritmo proposto Cluster 11 Máquinas Tempo Total de Execução COMPARAÇÕES ENTRE OS ALGORITMOS PARALELOS CONSIDERAÇÕES FINAIS REFERÊNCIAS BIBLIOGRÁFICAS... 70

7 LISTA DE FIGURAS FIGURA 1: ILUSTRAÇÃO DA TOMOGRAFIA DE TRANSMISSÃO FIGURA 2: ILUSTRAÇÃO DA INTERPOLAÇÃO TRIDIMENSIONAL A PARTIR DE FATIAS RECONSTRUÍDAS FIGURA 3: PROBLEMA RESOLVIDO DE FORMA SEQÜENCIAL FIGURA 4: PROBLEMA RESOLVIDO DE FORMA PARALELA FIGURA 5: DIAGRAMA DE UMA ARQUITETURA SISD FIGURA 6: DIAGRAMA DE UMA ARQUITETURA MISD FIGURA 7: DIAGRAMA DE UMA ARQUITETURA SIMD FIGURA 8: DIAGRAMA DE UMA ARQUITETURA MIMD FIGURA 9: REPRESENTAÇÃO DE UMA MÁQUINA UMA FIGURA 10: REPRESENTAÇÃO DE UMA MÁQUINA NUMA FIGURA 11: REPRESENTAÇÃO DE UMA MÁQUINA COMA FIGURA 12: VISÃO GERAL DA CLASSIFICAÇÃO SEGUNDO O COMPARTILHAMENTO DE MEMÓRIA FIGURA 13: ILUSTRAÇÃO DA ARQUITETURA DE UM CLUSTER BEOWULF FIGURA 14 TELA DE BOOT DO PELICANHPC FIGURA 15: ESCOLHA DE DISPOSITIVO PARA MONTAGEM DO DIRETÓRIO /HOME FIGURA 16: CÓPIA DE ARQUIVOS DE CONFIGURAÇÃO DE USUÁRIO E EXEMPLOS DE PROGRAMAS PARALELOS FIGURA 17: ALTERAÇÃO DE SENHA DO USUÁRIO FIGURA 18: TELA DE LOGIN FIGURA 19: ESCOLHA DO DISPOSITIVO ETHERNET PARA CONFIGURAÇÃO DO CLUSTER FIGURA 20: TELA DE UM NÓ BACK-END PELICANHPC FIGURA 21: DETECÇÃO E CONFIGURAÇÃO DOS NÓS BACK-END DO CLUSTER PELICANHPC FIGURA 22: TELA MOSTRANDO A QUANTIDADE DE NÓS BACK-END DISPONÍVEIS, DISPONIBILIZANDO A PROCURA POR MAIS NÓS FIGURA 23: CONFIGURAÇÃO DO CLUSTER FINALIZADA, MOSTRANDO A QUANTIDADE DE NÓS COM O COMANDO LAMNODES FIGURA 24: NÍVEIS DE PARALELISMO EM EXECUÇÃO DE PROGRAMAS (HWANG, 1987) FIGURA 25 - GRÁFICO DE FRAMEWORKS QUE SUPORTAM APLICAÇÕES DISTRIBUÍDAS PARA A RELAÇÃO TEMPO/PODER COMPUTACIONAL FIGURA 26: ILUSTRAÇÃO DAS TAREFAS DO ALGORITMO DE RECONSTRUÇÃO FIGURA 27: ILUSTRAÇÃO DO ALGORITMO PARALELO DE RECONSTRUÇÃO DE PEREIRA FIGURA 28: ILUSTRAÇÃO DO ALGORITMO PARALELO DE RECONSTRUÇÃO PROPOSTO FIGURA 29: GRÁFICO DA PORCENTAGEM DE TEMPO E TABELA COM TEMPOS DEMANDADOS EM CADA ETAPA DO TESTE DE 10 AMOSTRAS EXECUTADAS EM UM CLUSTER COM 6 MÁQUINAS UTILIZANDO O ALGORITMO DE PEREIRA FIGURA 30: GRÁFICO DA PORCENTAGEM DE TEMPO E TABELA COM TEMPOS DEMANDADOS EM CADA ETAPA DO TESTE DE 20 AMOSTRAS EXECUTADAS EM UM CLUSTER COM 6 MÁQUINAS UTILIZANDO O ALGORITMO DE PEREIRA FIGURA 31: GRÁFICO DA PORCENTAGEM DE TEMPO E TABELA COM TEMPOS DEMANDADOS EM CADA ETAPA DO TESTE DE 10 AMOSTRAS EXECUTADAS EM UM CLUSTER COM 11 MÁQUINAS UTILIZANDO O ALGORITMO DE PEREIRA FIGURA 32: GRÁFICO DA PORCENTAGEM DE TEMPO E TABELA COM TEMPOS DEMANDADOS EM CADA ETAPA DO TESTE DE 20 AMOSTRAS EXECUTADAS EM UM CLUSTER COM 11 MÁQUINAS UTILIZANDO O ALGORITMO DE PEREIRA FIGURA 33: TEMPO DE EXECUÇÃO DO ALGORITMO DE PEREIRA, NAS RESOLUÇÕES 251 E 502, NAS CONFIGURAÇÕES DE 10 E 20 AMOSTRAS COM 6 E 11 MÁQUINAS FIGURA 34: TEMPO DE EXECUÇÃO DO ALGORITMO DE PEREIRA, NAS RESOLUÇÕES 1004 E 2008, NAS CONFIGURAÇÕES DE 10 E 20 AMOSTRAS COM 6 E 11 MÁQUINAS... 59

8 FIGURA 35: GRÁFICO DA PORCENTAGEM DE TEMPO E TABELA COM TEMPOS DEMANDADOS EM CADA ETAPA DO TESTE DE 10 AMOSTRAS EXECUTADAS EM UM CLUSTER COM 6 MÁQUINAS UTILIZANDO O ALGORITMO PROPOSTO FIGURA 36: GRÁFICO DA PORCENTAGEM DE TEMPO E TABELA COM TEMPOS DEMANDADOS EM CADA ETAPA DO TESTE DE 20 AMOSTRAS EXECUTADAS EM UM CLUSTER COM 6 MÁQUINAS UTILIZANDO O ALGORITMO PROPOSTO FIGURA 37: GRÁFICO DA PORCENTAGEM DE TEMPO E TABELA COM TEMPOS DEMANDADOS EM CADA ETAPA DO TESTE DE 10 AMOSTRAS EXECUTADAS EM UM CLUSTER COM 11 MÁQUINAS UTILIZANDO O ALGORITMO PROPOSTO FIGURA 38: GRÁFICO DE COLUNAS EMPILHADAS COM A PORCENTAGEM UTILIZADA EM CADA ETAPA DO TESTE DE 20 AMOSTRAS EXECUTADAS EM UM CLUSTER COM 11 MÁQUINAS UTILIZANDO O ALGORITMO PROPOSTO FIGURA 39: GRÁFICO DO TEMPO DE EXECUÇÃO DO ALGORITMO PROPOSTO, NAS RESOLUÇÕES 251 E 502, NAS CONFIGURAÇÕES DE 10 E 20 AMOSTRAS COM 6 E 11 MÁQUINAS FIGURA 40: GRÁFICO DO TEMPO DE EXECUÇÃO DO ALGORITMO PROPOSTO, NAS RESOLUÇÕES 1004 E 2008, NAS CONFIGURAÇÕES DE 10 E 20 AMOSTRAS COM 6 E 11 MÁQUINAS FIGURA 41: COMPARAÇÃO DA EFICIÊNCIA COM EXECUÇÃO DE 20 AMOSTRAS PARA OS DIFERENTES ALGORITMOS E NÚMEROS DE MÁQUINAS EM CLUSTER FIGURA 42: COMPARAÇÃO DO TEMPO PERCENTUAL GASTO EM COMUNICAÇÃO DURANTE A EXECUÇÃO DE 20 AMOSTRAS PARA OS DIFERENTES ALGORITMOS E NÚMEROS DE MÁQUINAS EM CLUSTER... 67

9 LISTA DE TABELAS TABELA 1: CRONOGRAMA PROPOSTO TABELA 2: CRONOGRAMA EXECUTADO TABELA 3: CLASSIFICAÇÃO DE FLYNN SEGUNDO O FLUXO DE INSTRUÇÕES E O FLUXO DE DADOS TABELA 4: TEMPOS DE EXECUÇÃO DOS DIFERENTES TESTES COM O ALGORITMO DE PEREIRA TABELA 5: TEMPOS DE EXECUÇÃO DOS DIFERENTES TESTES COM O ALGORITMO PROPOSTO... 65

10 10 RESUMO Este trabalho apresenta a paralelização do processo de reconstrução de imagens tomográficas de amostras de solo, através da implementação de algoritmos paralelos com uso de biblioteca de comunicação MPI para distribuição de processos em clusters ad hoc. Para otimizar o algoritmo paralelo, de reconstrução de imagens tomográficas de amostras de solo proposto por Pereira em 2007, o trabalho propõe uma nova abordagem de distribuição de carga de trabalho entre os nós e analisar os efeitos deste novo paradigma na reconstrução em paralelo das diversas amostras tomográficas de alta resolução. Propõe-se também utilizar o cluster ad hoc para demonstrar as facilidades oferecidas por esta técnica de implementação de computação de alto desempenho. No estudo do algoritmo e na análise de seu desempenho foram utilizadas amostras com matrizes de projeções de resolução variando entre 251x251 a 2008x2008 e extraídas medidas nos algoritmos seqüenciais, o paralelo proposto por Pereira em 2007 e no otimizado. O trabalho realiza uma comparação entre os tempos e faz um estudo do impacto da comunicação no algoritmo otimizado. Os resultados permitem concluir que o algoritmo proposto faz um melhor uso do cluster e fornece valores de eficiência superiores ao obtidos por Pereira. Palavrazs-chave: processamento paralelo, clusters, MPI, tomografia computadorizada

11 11 1 Introdução 1.1 Apresentação Apesar da tecnologia dos processadores individuais ser continuamente melhorada, a humanidade é capaz de inventar problemas onde um único processador é simplesmente muito lento para resolvê-lo. Apenas através de muitos processadores em paralelo existe esperança de se resolver tais problemas. (ATALLAH, 1999) Nós vivemos numa era onde a computação paralela se tornou a corrente principal e bastante acessível. Isso se deve ao fato dos custos em hardware caírem muito rápido. Com o advento da internet, também vivenciamos o fenômeno da explosão de dados em toda aplicação de interesse. Processar volumosos conjuntos de dados requer intensivo trabalho computacional. A computação paralela é frutuosamente empregada em vários domínios de aplicação para o processamento de grandes conjuntos de dados e lidar com outras operações de interesse que consumam muito tempo, relativamente falando. Como resultado, avanços sem precedentes foram feitos em áreas como a biologia, computação científica, modelagem e simulações, e assim por diante. (RAJASEKARAN e REIF, 2008) Sendo assim, os clusters com máquinas comuns e baratas do mercado se popularizaram, de forma que pequenas e médias empresas e até mesmo usuários caseiros utilizem do mesmo, como meio para atingir grandes taxas computacionais, substituindo supercomputadores, com um custo substancialmente menor (BECKER e STERLING, 1995). Este trabalho tem por objetivo a otimização de um algoritmo paralelo de reconstrução tomográfica para aplicação em cluster ad hoc de forma a explorar a computação paralela, para redução do tempo de reconstrução de imagens em 2D a partir da tomografia computadorizada. A ferramenta utilizada para implementação de tal cluster será o PelicanHPC, uma distribuição linux live 1, baseada no Debian, que permite a rápida criação de clusters temporários e práticos, sem muitas dificuldades. Uma das características de interesse deste tipo de tecnologia é a capacidade de 1 Distribuição que dispensa a instalação do sistema no disco rígido, podendo essa ser carregada através CDs, pendrives, ou virtualizada.

12 12 aumentar ou diminuir o número de máquinas do cluster conforme a necessidade da aplicação, sem grande esforço. Entre as técnicas para o desenvolvimento de algoritmos paralelos, será utilizada a biblioteca MPI, que é uma interface de troca de mensagens entre processos. 1.2 Objetivos Objetivo Geral Estudar e aplicar técnicas de desenvolvimento de sistemas de processamento paralelo na otimização dos algoritmos de reconstrução tomográfica 2D propostos por Pereira(2007) Objetivos Específicos Para atingir o objetivo geral deste trabalho há uma série de passos a serem seguidos durante o desenvolvimento. A saber, estes são: Estudar técnicas para desenvolvimento de sistemas de processamento paralelo; Estudar os princípios da tomografia computadorizada; Estudar as rotinas de comunicação da biblioteca MPI ; Estudar cluster ad hoc ; Colocar em funcionamento um HPC Cluster com a plataforma PelicanHPC; Projetar e implementar as otimizações nos algoritmos de reconstrução; Extrair medidas de desempenho dos algoritmos implementados; Estabelecer uma comparação entre as implementações. 1.3 Justificativa O estudo e aplicação das técnicas de desenvolvimento de sistemas de processamento paralelo é de notável relevância, tendo em vista o cenário atual, em que o desenvolvimento tanto de hardware quanto de software busca a otimização de forma geral através do paralelismo. A aplicação dessas técnicas na otimização dos

13 13 algoritmos de reconstrução tomográfica do solo tem sua importância, mesmo que indireta, para a comunidade científica, visto que em diversos assuntos referentes à sustentabilidade do planeta Terra, o solo tem encontrado papel de destaque (BOUMA; HOOSBECK, 1996). 1.4 Metodologia Para desenvolver este trabalho, será feita inicialmente uma pesquisa bibliográfica em livros, artigos científicos e sites com toda a documentação necessária para entendimento dos algoritmos de reconstrução tomográfica 2D, a biblioteca MPI e a forma de instalação e uso do cluster ad hoc. O processo de reconstrução tomográfica de imagens de solo demanda tempo e grande volume de amostras para um bom entendimento da dinâmica de movimento de água e solutos. Para resolver tal problema, este trabalho propõe o uso de arquitetura paralela baseada em cluster ad hoc para acelerar o processo de reconstrução. O padrão MPI tem grande portabilidade e velocidade, sendo assim o mais utilizado na computação paralela de alto desempenho. Tendo em vista que a tendência atual dos computadores é que esses utilizem de vários processadores para aumentar o poder computacional, a computação paralela e os padrões MPI para a resolução do problema se farão de grande valor para o futuro. A utilização de um cluster oferece o poder computacional necessário e compatível com os supercomputadores, com um custo substancialmente menor, se comparado aos mesmos, tanto em sua criação, quanto em sua manutenção, considerando a facilidade de se repor equipamentos de prateleira. (BECKER e STERLING, 1995) (THAMPI, 1998) Com base nos estudos realizados, será proposta a otimização do algoritmo de reconstrução paralela, o qual será testado e terá seu desempenho medido na arquitetura computacional paralela implementada com uso do PelicanHPC. O uso do PelicanHPC para a construção de um cluster ad hoc oferece facilidades como a adição e remoção de nós, de forma muito simples, conforme a necessidade, e a possibilidade de trabalhar com uma máquina que não está sendo utilizada para outra tarefa, sem a preocupação de extensa configuração ou dedicação exclusiva ao cluster.

14 Cronograma Proposto O presente trabalho será desenvolvido seguindo o cronograma apresentado: Meses Maio Junho Julho Agosto Setembro Outubro Novembro Semanas Etapa 1 Etapa 2 Etapa 3 Etapa 4 Etapa 5 Etapa 6 Etapa 7 Etapa 8 Etapa 9 Etapa 10 Tabela 1: Cronograma Proposto Etapa 1 Levantamento da Bibliografia referente ao trabalho Separação de livros, artigos especializados e links que poderão ser úteis na complementação do conhecimento necessário para o desenvolvimento do trabalho. Etapa 2 Leitura e documentação da bibliografia selecionada Fazer uma leitura do material, selecionando os trechos que serão utilizados na elaboração do trabalho. Etapa 3 Estudo dos Métodos de paralelização de algoritmos para resolução de problemas Estudar os métodos de paralelização de algoritmos para resolução de problemas, que servirá de base para implementação e otimização dos algoritmos de Pereira(2007). Etapa 4 Estudar a tomografia computadorizada Estudar os princípios e etapas da tomografia computadorizada que forem de nosso foco no desenvolvimento dos algoritmos otimizados para o cluster.

15 15 Etapa 5 Estudar a biblioteca MPI Estudar a fundo as rotinas e funções que a bibliotecas MPI proporciona. Etapa 6 Projetar e implementar os algoritmos otimizados Projetar e implementar as otimizações nos algoritmos de reconstrução com base na MPI para o funcionamento da mesma de forma paralela. Etapa 7 Montar cluster ad hoc em plataforma PelicanHPC Estudar e montar, fazendo testes com máquinas do IC, um cluster baseado na plataforma live PelicanHPC. Etapa 8 Realizar testes e comparações entre os algoritmos Realizar testes com o algoritmo otimizado, fazendo devidas modificações, extraindo medidas de desempenho e fazendo uma comparação com os algoritmos de Pereira(2007), com completa documentação. Etapa 9 Redigir o Trabalho de Conclusão de Curso (TCC) Redação de todas as etapas do TCC. Organizar o conteúdo de forma lógica e coesa, para que os leitores leigos possam entender e assimilar todo o estudo. Etapa 10 Apresentação à banca examinadora Apresentação do Trabalho de Conclusão de Curso à banca examinadora 1.6 Cronograma Executado Meses/Semana Etapas Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Etapa 1 Etapa 2 Etapa 3 Etapa 4 Etapa 5 Etapa 6 Etapa 7 Etapa 8 Etapa 9 Etapa Tabela 2: Cronograma executado

16 16 Os prazos para a execução desse trabalho foram devidamente cumpridos, ocorrendo apenas pequenas alterações no tempo de execução de algumas etapas.

17 17 2 Fundamentação Teórica Antes de apresentarmos a proposta de otimização para o algoritmo paralelo de reconstrução tomográfica desenvolvida em Pereira(2007), devemos compreender os conceitos envolvidos durante todo o percurso. Este capítulo começa explicando um pouco sobre o processo de reconstrução tomográfica, e em seguida aborda os conceitos sobre a computação paralela juntamente à Interface de Troca de Mensagens. 2.1 Tomografia Computadorizada No contexto da tomografia computadorizada, as maiores contribuições para o seu desenvolvimento foram dadas por Radon (RADON, 1917), Cormack (CORMACK, 1963) e Hounsfield (HOUNSFIELD, 1973). Em 1917, o matemático austríaco Radon foi o primeiro a apresentar uma solução matemática das equações de reconstrução de corpos a partir de projeções, isto é, a determinação da função de densidade da região estudada através de suas projeções. Desconhecendo o trabalho de Radon, Cormack desenvolveu a técnica matemática para reconstruir imagens utilizando o método de retro projeção. Em 1956, ele era professor de Física da University of Cape Town e foi solicitado para supervisionar o uso de isótopos radioativos no Groote Schuur Hospital devido à demissão do físico do hospital. Durante algumas semanas, Cormack trabalhou com isótopos radioativos e acompanhou tratamentos de radioterapia. Com base em experimentos e observações, formulou uma matriz de coeficientes para cortes seccionais que poderia ser obtida pela medida da transmissão de raios X em vários ângulos através do corpo. A partir de transmissões de raios X, aplicou-se para obter imagens de phantoms simples (CRUVINEL, 1987). O fato de poder-se observar dados internos dos corpos, após a reconstrução das imagens tomográficas, de forma não destrutiva e não invasiva, constitui-se numa importante característica da técnica tomográfica (PEREIRA, 2007).

18 18 A tomografia computadorizada segue os mesmos princípios que a radiografia convencional, na qual se utiliza raios X para se atravessar um objeto, e esses raios, ao passarem por elementos de diferentes composições absorvem essa radiação de forma diferente. A tomografia utiliza um feixe colimado de radiação, o qual define planos tão finos quanto o próprio feixe e, através de vários feixes colimados paralelos, pode-se definir vários planos. Dessa forma, ao invés de impressionar-se um filme fotográfico, como é feito em uma radiografia convencional (CRUVINEL, 1987), obtém-se, de cada reta de propagação dos feixes que partem da fonte para o detector, valores que formam uma projeção, tal qual ilustra a figura 1.1. Na Figura 1 observa-se uma linha tracejada que representa a radiação que parte da fonte para o detector. Ela atravessa o objeto e, à medida que o conjunto caminha através dos eixos L e L, que formam com o eixo x um ângulo θ, as projeções vão sendo obtidas. Desta forma, o que se obtém após a varredura completa é a transformada de Radon do objeto (RADON, 1917). Figura 1: Ilustração da tomografia de transmissão (PEREIRA, 2007) É possível reconstruir a imagem da fatia do objeto, através da transformada inversa de Radon ou de métodos derivados dessa transformada. Para realizar tal tarefa, os

19 19 algoritmos de reconstrução têm como entrada de dados de projeção e produzem como saída uma imagem estimada do objeto original. Um dos principais algoritmos de reconstrução é o algoritmo da retroprojeção filtrada, que é um dos mais utilizados em aplicações de fontes não difrativas. Vários fatores contribuem para a ampla divulgação desse algoritmo, dentre eles a rapidez, precisão e facilidade de implementação (CAÇÃO, 1994)(BUENO, 1995). O algoritmo descrito é na realidade uma derivação do teorema das secções de Fourier, com uma implementação diferente do que o teorema básico sugere. A implementação no domínio da freqüência, sob forma de equação, pode ser expressa como: (1) Onde FFT e IFFT representam as Transformadas rápidas de Fourier e sua inversa, respectivamente. O passo seguinte do algoritmo de reconstrução é a retroprojeção das projeções filtradas que tem sua aproximação discretizada por: (2) Onde K ângulos i são os valores discretos de Q para cada P (t) conhecido. Em outras palavras, a imagem da reconstrução é gerada pela soma de todos os valores t de Q i, para cada valor i, projetados e multiplicados por /K. A reconstrução de uma amostra tridimensional é feita através da sobreposição dos planos bidimensionais de diferentes alturas, adquiridos no processo tomográfico do solo, contando que não ocorra movimentação durante o processo. Essa técnica consiste em montar planos gerados pelas funções f(x,y,zi) para i = 0, 1, 2,...,n, tal qual mostrado na Figura 2

20 20 Partindo-se desde princípio, realiza-se a geração de imagens tomográficas tridimensionais utilizando-se de um método de interpolação de dados que se baseia em dados realmente adquiridos para gerar os planos intermediários (PEREIRA, 2007). Figura 2: Ilustração da interpolação tridimensional a partir de fatias reconstruídas (PEREIRA, 2007) O método de interpolação utilizado para tal reconstrução é baseado em B-Wavelets, e sua função Spline de ordem m e com passo μ é dada por: (3) aonde A são pontos de controle, e B a função de blending. 2.2 Computação Paralela Introdução Computação Paralela é a forma de computação em que vários cálculos são realizados simultaneamente (Almasi, G.S. e A. Gottlieb,1989), tendo em vista que

21 21 grandes problemas geralmente podem ser divididos em problemas menores, que então são resolvidos em paralelo. Tradicionalmente, como ilustrado na Figura 3, o software tem sido escrito para ser executado seqüencialmente: Rodar em um único computador com apenas um CPU Um problema é dividido em uma série de instruções Instruções são executadas uma após a outra Somente uma instrução pode ser executada por vez Figura 3: Problema resolvido de forma seqüencial De maneira simples, computação paralela é o uso simultâneo de recursos computacionais para resolver um problema. Ilustrado na Figura 4, estes consistem em: Executar com uso de várias CPUs; Dividir o problema em partes que possam ser resolvidas em paralelo; Instruções de cada parte são executadas simultaneamente em diferentes CPUs.

22 22 Figura 4: Problema resolvido de forma paralela Computadores paralelos podem ser classificados de acordo como seu hardware é disposto para trabalhar paralelamente. Algumas dessas classificações são mostradas a seguir Classificações de Arquiteturas Paralelas Classificação de Flynn Existem várias e diferentes classificações para arquiteturas paralelas, devido até mesmo ao fato de sua evolução constante. Inicialmente, podemos usar da classificação genérica de Flynn que ainda é muito válida e difundida, apesar de sua origem em Tendo em vista que uma máquina executa uma seqüência de instruções (instruction stream) sobre uma seqüência de dados (data stream), e que essas seqüências podem ser únicas ou múltiplas, através da combinação das possibilidades, Flynn propôs quatro classes: Fluxo de Instruções Único Múltiplo Fluxo de Dados Único SISD Single Instruction Single Data MISD Multiple Instruction Single Data Múltiplo SIMD Single Instruction Multiple Data MIMD Multiple Instruction Multiple Data

23 23 Tabela 3: Classificação de Flynn segundo o fluxo de instruções e o fluxo de dados SISD - Fluxo de instrução e dados únicos Computadores convencionais com suas instruções executadas de forma seqüencial. Figura 5: Diagrama de uma arquitetura SISD MISD - Múltiplo fluxo de instruções e fluxo de dados único Constituído por várias unidades de processamento que operam sobre o mesmo os mesmos dados Figura 6: Diagrama de uma arquitetura MISD SIMD - fluxo de instruções único e múltiplo fluxo de dados

24 24 Constituído por uma unidade de controle que direciona o fluxo de instruções para vários processadores Figura 7: Diagrama de uma arquitetura SIMD MIMD - fluxo de instruções e dados múltiplos Cada processador tem sua unidade de controle, que opera com instruções e dados que podem ser diferentes entre si, admitindo assim operação síncrona e assíncrona. Figura 8: Diagrama de uma arquitetura MIMD Classificação segundo o compartilhamento de Memória

25 25 Outro critério para classificarmos as máquinas paralelas é em relação ao compartilhamento de memória. Quando se fala em memória compartilhada (shared memory), existe um único espaço de endereçamento que será usado de forma implícita para comunicação entre processadores, com operações load e store. Se a memória não é compartilhada, existem vários espaços de endereçamento privados (multiple private adress spaces), um para cada processador. Nesse caso, a comunicação é feita de forma explícita através de troca de mensagens, utilizando as operações de envio (send) e recebimento (receive). Por sua vez, se a memória é implementada com vários módulos, e cada módulo foi colocado próximo de uma unidade de processamento (em relação a localização física propriamente dita), então dizemos que a memória é distribuída (distributed memory). Outra alternativa é o uso de uma memória centralizada (centralized memory), em que a memória encontra-se à mesma distância de todos os processadores, independente de ter sido implementada com um ou vários módulos. Dependendo de uma máquina paralela utilizar-se ou não de uma memória compartilhada por todos os processadores, pode-se diferenciar multiprocessadores e multicomputadores Multiprocessadores Todos os processadores acessam, através de uma rede de interconexão, uma memória compartilhada. Esse tipo de máquina possui apenas um espaço de endereçamento, de forma que todos processadores são capazes de endereçar todas as memórias. A comunicação entre os processos é feita através da memória compartilhada de forma bastante eficiente com operações do tipo load e stored. Essas características resultam do fato desse tipo de máquina ser construída a partir da replicação apenas do componente processador de uma arquitetura convencional, e daí o nome de múltiplos processadores. De acordo com (Rose, 2002), os multiprocessadores podem ser classificados em relação ao tipo de acesso às memórias do sistema como:

26 26 Acesso uniforme à memória UMA (Uniform Memory Access) A memória M utilizada é centralizada e encontra-se à mesma distância de todos os processadores P, fazendo com que a latência de acesso à memória seja igual para todos os processadores do sistema. Figura 9: Representação de uma Máquina UMA Muitas dessas máquinas utilizam-se de memória cache para amenizar a diferença de velocidade entre processador e memória principal. Para cada consulta feita à memória principal, é mantida uma cópia na cache, com o objetivo de acelerar um novo acesso ao mesmo endereço. Como todos os processadores podem endereçar toda a memória do sistema, em um determinado momento, várias cópias da mesma posição de memória principal podem existir em caches diferentes. Isso caracteriza um problema, pois um processador pode trabalhar com sua cópia local e esta não refletir mais o estado atual do mesmo endereço na memória principal. Este problema é chamado de coerência de cache (cache coherence). A maioria dos multiprocessadores UMA trata esse problema em nível de hardware. Acesso não uniforme à memória NUMA (Non-Uniform Memory Access) A memória utilizada nessas máquinas é distribuída, implementada com múltiplos módulos que são associados um a cada processador. O espaço de endereçamento é único, e cada processador pode endereçar toda a memória o sistema. Se o endereço gerado pelo processador encontrar-se no módulo de memória diretamente ligado a ele, dito local, o tempo de acesso será menor que a um módulo que está diretamente ligado a um outro processador, dito remoto, que só pode ser acessado através da rede de interconexão. Por esse motivo, essas máquinas possuem tempo de acesso não uniforme.

27 27 Figura 10: Representação de uma Máquina NUMA A classificação NUMA ainda pode ser dividida segundo seu tratamento de coerência de cachê: NCC-NUMA (Non-Cache-Coherent Non-Uniform Memory Access) Acesso não-uniforme à memória sem coerência de cache CC-NUMA (Cache-Coherent Non-Uniform Memory Access) - Acesso não uniforme à memória com coerência de cache SC-NUMA (Software-Coherent Non-Uniform Memory Access) - Acesso não uniforme à memória com coerência de cache em software COMA (Cache-Only Memory Architecture) - Arquiteturas de memória somente com cache. No caso da arquitetura COMA, todas as memórias locais estão estruturadas como memória cache e são chamadas de COMA caches como mostra a Figura 11. Figura 11: Representação de uma Máquina COMA

28 28 Arquiteturas COMA são as únicas com suporte de hardware para a replicação efetiva do mesmo bloco de cache em múltiplos nós. A memória principal dessas máquinas é composta pelas caches COMA, e o hardware de suporte tem que integrar a gerência das caches e a gerência de memória. Essa complexidade faz com que essas arquiteturas sejam mais caras de se implementar Multicomputadores Cada processador P possui uma memória local M, à qual só ele tem acesso. As memórias dos outros processadores são consideradas memórias remotas e possuem espaços de endereçamento distintos (um endereço gerado por P1 só é capaz de endereçar M1). Como não é possível o uso de variáveis compartilhadas nesse ambiente, a troca de informações é feita de forma explícita através do envio e recebimento de mensagens pela rede de interconexão. Por essa razão, essas máquinas também são chamadas de sistemas de troca de mensagens (message passing systems). Essas características resultam do fato desse tipo de máquina paralela ser construído a partir de replicação de toda a arquitetura convencional, e não apenas do componente processador como nos multiprocessadores, por isso o nome múltiplos computadores. Devido a essa replicação completa da arquitetura tradicional, os registradores de endereçamento de cada nó só conseguem endereçar a sua própria memória local e por isso sua classificação em relação ao acesso à memória recebe o nome de NORMA (Non-Remote Memory Access) Sem acesso a variáveis remotas. A Figura 12 apresenta uma visão geral da classificação segundo o compartilhamento de memória. A linha tracejada indica que as máquinas das classes NCC-NUMA e NORMA podem ser transformadas em máquinas SC-NUMA através da inclusão da camada de software que implemente a coerência de cache.

29 29 Figura 12: Visão geral da classificação segundo o compartilhamento de memória 2.3 Clusters Clusters computacionais podem ser definidos como agregações de computadores de forma dedicada ou não, para a execução de aplicações específicas. A arquitetura de um cluster consiste basicamente em um conjunto de computadores independentes e interconectados que juntos representam um único recurso computacional integrado (BUYYA, 1999). Os clusters de imagem única incorporam o conceito de transparência, pois passam a impressão para o usuário, que apenas uma máquina responde suas requisições. A principal justificativa para a utilização de clusters consiste em suas vantagens a oferecer como o aumento de disponibilidade, aumento de desempenho, balanceamento de carga, tolerância à falhas, entre outros. Os computadores de um cluster são chamados de nós ou nodos, e são conectados de maneira a formarem uma rede de qualquer topologia. Essa rede deve ser configurada de forma que seja possível a adição ou remoção de nós sem interromper seu funcionamento. É comum que os nós tenham a mesma configuração de hardware, mas isso não é uma regra. O ponto crucial na montagem do cluster é a criação de um software que permita a montagem do cluster em si, para a distribuição dos processos entre os diferentes nós, detectando erros, e providenciando reparos sem interromper as atividades do cluster.

30 High-Availability Clusters High-Availability Clusters são principalmente utilizados para aumentar a disponibilidade de um serviço, permitido num cluster. Eles funcionam através de nós redundantes, que são usadas para continuar o serviço quando algum componente do sistema falha. Normalmente, se acontece alguma falha em um servidor com uma aplicação específica, a aplicação vai ficar indisponível até alguém consertar esse servidor. Os clusters de Alta disponibilidade remediam essa situação detectando falhas de software e hardware, e restaurando imediatamente em outro sistema, sem precisar de alguma intervenção do administrador do sistema. Esses clusters são geralmente utilizados em sistemas críticos de banco de dados, compartilhamento de arquivos numa rede, aplicações financeiras e serviços de comércio eletrônico, por exemplo High-Performance Computing Cluster Os HPC clusters são implementados primeiramente para aumentar o desempenho computacional, dividindo as tarefas entre os diferentes nós do cluster, e sendo geralmente utilizados na área científica da computação. Esses clusters geralmente rodam programas customizados que foram desenhados para explorar ao máximo o paralelismo dos clusters HPC, de forma que são otimizados para tarefas que requerem intensa comunicação entre os diferentes nós, durante o processamento, o que inclui cálculos onde resultados intermediários de um nó terão efeito no cálculo de outro nó. As implementações mais famosas de clusters HPCs tem o Linux como sistema operacional e software livre para implementar o paralelismo nos nós do cluster. Essa configuração geralmente é conhecida como cluster Beowulf Beowulf Cluster Beowulf é o nome do herói escandinavo do famoso poema anglo-saxão, famoso por derrotar o monstro de nome Grendel. Em 1994, Donald Becker do Centro Espacial

31 31 Goddard da NASA inventou o cluster Beowulf, que assim como diz no poema, tinha a força de muitos e derrotou o monstro Mainframe. (DYRNESS, 2000) O custo total do cluster Beowulf com seus 24 nós foi de 57 mil dólares, que tinha o mesmo desempenho comparado com os supercomputadores comerciais que tinham seu custo avaliado entre 10 e 30 milhões de dólares. (THAMPI, 1998) O cluster Beowulf é divido entre os nós controladores chamados de front-end, e nós clientes conhecidos como back-end s. O nó front-end tem como objetivo controlar o cluster, monitorando e distribuindo tarefas através da rede ethernet. O nó front-end também serve como servidor de arquivos para armazenar arquivos de usuários e dos demais nós do cluster, e como gateway para o ambiente externo ao cluster. Os nós back-end se dedicam exclusivamente ao processamento das tarefas passadas pelo nó front-end. A Figura 13 representa o esquema de um cluster Beowulf. Figura 13: Ilustração da arquitetura de um cluster Beowulf Resumindo, o Cluster Beowulf permite a construção de sistemas com alto poder computacional com um custo muito baixo, podendo se usar computadores comuns

32 32 com sistema operacional livre, que além de gratuito, abre a possibilidade de uma customização para sua finalidade de cluster. 2.4 PelicanHPC O PelicanHPC é um meio rápido para se montar um Cluster Ad Hoc de Alta performance computacional (HPC Cluster) para computação paralela utilizando a MPI. Considera-se neste trabalho um cluster ad hoc aquele cuja estrutura pode ser montada através de boot remoto e no qual as máquinas utilizadas são inseridas no cluster de acordo com as necessidades da aplicação e da disponibilidade de máquinas. Assim um cluster ad hoc pode ser montado, por exemplo, em um laboratório cujas máquinas ficam ociosas durante certo período do dia. O PelicanHPC é uma distribuição GNU/Linux, baseada no Debian, que roda como um Live CD, ou que também poderia rodar a partir de um dispositivo USB ou até mesmo ser usado num Sistema Operacional Virtualizado. O computador onde o PelicanHPC é inicialmente carregado, é dito como o nó front-end. Essa é a máquina com que o usuário interage, e será a máquina servidora da rede. Feito isso, é possível carregar o PelicanHPC nas outras máquinas através da rede. Essas outras máquinas são ditas como "nós computacionais", que seriam como os nós back-ends de um cluster Beowulf, que serão responsáveis pelo processamento dos dados. O PelicanHPC cuida da configuração do nó front-end e dos nós computacionais para se fazer uso da computação paralela baseada na MPI. Por ser uma distribuição live, o PelicanHPC não faz uso do disco rígido em nenhum dos nós, exceto a partição swap do Linux caso houver, então ele não altera o sistema operacional instalado atualmente. Assim que os computadores forem desligados, eles voltam ao seu estado original, o que faz do PelicanHPC uma ferramenta de uso bastante prático, já que não é preciso dedicar um conjunto de máquinas para a tarefa específica de cluster. Porém, é possível durante a inicialização do PelicanHPC, selecionar um dispositivo de armazenamento que tenha alguma formatação no modo ext2 ou ext3, para ser montado como o diretório "/home", e assim salvar qualquer trabalho realizado. Para experimentos casuais, não é necessário fazer uso dessa opção, já que é possível salvar qualquer trabalho feito

33 33 em algum dispositivo móvel ou até mesmo na nuvem, sendo assim uma opção de conveniência para usuários avançados. É possível, a qualquer momento, adicionar ou remover nós conforme a necessidade. (CREEL, 2009) Configurando um cluster PelicanHPC Antes da configuração do cluster, utilizando o PelicanHPC, é preciso obviamente das máquinas que irão compô-lo, interligadas em uma rede local ethernet. É importante que essa rede de máquinas esteja isolada de outras redes, pois o nó front-end atua como servidor DHCP, possivelmente atrapalhando outros usuários caso a rede seja utilizada por mais pessoas, no caso de um ambiente de trabalho e ou estudo. Montada a rede, deve-se escolher a máquina a ser utilizada como nó front-end, e configurá-la de modo a bootar o sistema operacional através do drive de CD, com o CD do PelicanHPC. A Figura 14 mostra a primeira tela durante o boot do sistema. Eventualmente, depois de carregado o sistema por completo, na tela mostrada pela Figura 15, é possível escolher um dispositivo de armazenamento para que o sistema monte o diretório /home do usuário PelicanHPC. Por padrão, apenas continue sem modificar o dispositivo padrão (que no caso é a memória RAM). Para usuários avançados que desejam montar o disco rígido, que deve ter uma partição formatada em ext2 ou ext3, substitua ram1 por sda2 (sem as aspas) ou qualquer que seja o local da partição formatada.

34 34 Figura 14 Tela de boot do PelicanHPC (CREEL, 2009). Figura 15: Escolha de dispositivo para montagem do diretório /home (CREEL, 2009).

35 35 A tela seguinte, Figura 16, pergunta ao usuário se deseja copiar arquivos de configuração e exemplos, no diretório /home/user. A escolha não influencia nada, caso você já tenha em mãos os programas que vai rodar no cluster, mas escolhendo sim, poderá ver alguns exemplos interessantes de programas paralelos. Figura 16: Cópia de arquivos de configuração de usuário e exemplos de programas paralelos (CREEL, 2009). A ultima tela antes do login, Figura 17, é utilizada para mudar a senha de usuário, que será atribuída para todas as máquinas do cluster.

36 36 Figura 17: Alteração de senha do usuário (CREEL, 2009). Finalmente na tela de login do sistema, entre com o usuário user (sem aspas), seguido da senha que acabou de definir. Figura 18: Tela de login (CREEL, 2009). Entre com o comando pelican_setup, para iniciar a configuração do cluster com as máquinas interligadas na rede local. A seguinte tela, ilustrada na Figura 19, deve aparecer se a máquina em questão tiver mais de um dispositivo de rede. Escolha o dispositivo a qual a rede local do cluster está conectada.

37 37 Figura 19: Escolha do dispositivo ethernet para configuração do cluster (CREEL, 2009). Em seguida, o sistema alerta que irá ligar o servidor DHCP, para que o computador esteja ligado numa rede isolada com os computadores utilizados no cluster, para que não entre em conflito com outro servidor DHCP. Prossiga escolhendo Yes. A partir desse momento, você já pode ligar as máquinas back-ends do cluster, que devem estar configuradas para bootar pela placa ethernet. Terminado o boot, a tela das máquinas back-ends, deverá ser parecida com a da Figura 20, com uma mensagem em inglês dizendo: Este é um nó computacional PelicanHPC. Faz parte de um cluster de computadores que está fazendo alguma coisa REALMENTE importante. Por favor não tente usar, e NÃO DESLIGUE! OBRIGADO!. Como dito na mensagem, não é preciso fazer nenhuma configuração no terminal das máquinas back-end, apenas deixe-as ligadas enquanto estiver utilizando o cluster.

38 38 Figura 20: Tela de um nó back-end PelicanHPC (CREEL, 2009). Voltando ao nó front-end, escolha a opção Yes, na tela representada pela Figura 21. Figura 21: Detecção e configuração dos nós back-end do cluster PelicanHPC (CREEL, 2009).

39 39 Neste momento, o nó front-end irá detectar e dizer quantas máquinas na rede estão ligadas e prontas para serem adicionadas ao cluster, representado pela Figura 22. Se desejar ligar mais máquinas ao cluster, espere que as mesmas carreguem o sistema pela rede, e em seguida escolha No, para que o front-end atualize a quantidade de máquinas disponíveis. Figura 22: Tela mostrando a quantidade de nós back-end disponíveis, disponibilizando a procura por mais nós (CREEL, 2009). Depois de ligadas e detectadas todas as máquinas, selecione Yes, para que o sistema inicie o ambiente LAM/MPI em cada um dos nós para a execução dos programas paralelos, e finalize a configuração do cluster. Digite lamnodes para listar os nós e seus respectivos ips na rede, confirmando que a configuração foi bem sucedida, como na Figura 23.

40 40 Figura 23: Configuração do cluster finalizada, mostrando a quantidade de nós com o comando lamnodes (CREEL, 2009). Se algum erro acontecer, e os nós não forem listados, ou se desejar adicionar mais nós, utilize o comando pelican_restart_hpc, que repetirá o procedimento de procurar pelos nós na rede, e inicializar o ambiente LAM/MPI. A partir desse momento, o cluster está pronto para ser utilizado. É possível utilizar o nó front-end com uma interface gráfica utilizando o comando startx. Seguindo esses procedimentos, o cluster é configurado em menos de 10 minutos. E após utilizadas e desligadas, as máquinas voltam ao sua configuração original, sendo essas as principais vantagens ao utilizar um cluster configurado com o PelicanHPC.

41 Conceitos e medidas de desempenho da Programação Paralela Granularidade computacional e Latência de comunicação Granularidade é a medida para a computação envolvida em um processo de um software. A medida mais simples é contar o número de instruções em um grão (segmento de um programa). O tamanho do grão determina o segmento básico do programa escolhido para o processamento paralelo. Os grãos são comumente descritos como finos, médios ou grossos, dependendo do nível de processamento envolvido. A latência é a medida do tempo despendido na comunicação entre os subsistemas de uma máquina. Por exemplo, latência de memória é o tempo que leva para um processador fazer acesso a memória. A granularidade computacional e a latência de comunicação estão intimamente relacionadas. O paralelismo já foi explorado em diversos níveis de processamento. A Figura 24 ilustra cinco níveis de execução de um programa, representando o nível de granularidade. Quando menor o nível, mais fina é a granularidade dos processos de software. Balanceando a granularidade e a latência comunicação, é possível alcançar melhores níveis de desempenho computacional. (HWANG, 1993). Figura 24: Níveis de paralelismo em execução de programas (HWANG, 1987)

42 Speed Up e Eficiência Neste trabalho são utilizados, como medidas de desempenho, o Speed Up e a Eficiência. Estas medidas servem para mensurar a qualidade do paralelismo que está sendo implementado. O Speed Up é uma medida que relaciona o desempenho de um sistema baseado em n processadores em relação a um de único processador. O ganho é definido como: (4) onde Tn corresponde ao tempo de execução do sistema com n processadores e T1, o tempo de execução num sistema com um único processador. A eficiência é uma medida que fornece a fração de tempo em que os processadores estão sendo utilizados. A eficiência para um sistema com n processadores é definida por (HWANG, 1993): ou (5) quando a eficiência é fornecida em porcentagem. A eficiência indica o atual grau de ganho de desempenho obtido quando comparado com o valor máximo. (6) Existem alguns fatores que aparecem como sobrecargas de trabalho em programas paralelos e que limitam o Speed Up e a eficiência a valores menores que estes limites máximos, dentre os quais destacam-se: (STAROBA, 2004) 1. Períodos em que alguns dos processadores não estão trabalhando, permanecendo em estado de aguarde, o que ocorre em trechos meramente seqüenciais;

43 43 2. Computação extra que aparece na versão paralela e que não existia na versão seqüencial como, por exemplo, a alocação de alguma estrutura utilizada para as trocas de mensagem; 3. Tempo de comunicação para envio de mensagens em programas que utilizam este paradigma; 4. Sincronização entre os processos. 2.6 Message Passing Interface Existem algumas tecnologias para o desenvolvimento da programação concorrente, a primeira delas, criada um pouco antes dos anos 80, a Chamada de Procedimento Remoto (RPC), que consiste em basicamente a comunicação de processos entre um cliente, pedindo para o servidor executar um procedimento específico. Existem também alternativas parecidas mais recentes, como o RMI do JAVA, que permite a execução de chamadas remotas de forma parecida com o RPC. Na Figura 25 é apresentada, em ordem cronológica, de criação de algumas tecnologias para sistemas distribuídos, relacionando também o seu poder computacional e abstração. Neste trabalho, será utilizada a técnica de computação paralela baseada na Interface de Troca de Mensagens. Criada alguns anos depois da RPC, é a menos abstrata das tecnologias, tem maior poder computacional propriamente dito entre as demais técnicas, para se trabalhar com a computação paralela, como representado na Figura 25.

44 44 Figura 25 - Gráfico de frameworks que suportam aplicações distribuídas para a relação tempo/poder computacional O Message Passing Interface Standard (padrão de interface de troca de mensagens) é o padrão de uma biblioteca de troca de mensagens definida pelo consenso do fórum MPI, que conta com mais de 40 organizações participantes, incluindo vendedores, pesquisadores, desenvolvedores de bibliotecas de software e usuários. O objetivo da MPI é estabelecer um padrão portátil, eficiente e flexível para a troca de mensagens em programas, sendo a primeira biblioteca de troca de mensagem padronizada independente, ou seja, MPI não é um padrão ISO ou nem IEEE, mas se tornou de fato um padrão industrial para escrever programas de troca de mensagens em plataformas HPC. Podemos listar algumas razões para se utilizar a MPI: Padronização A MPI é a única biblioteca de troca de mensagem que pode ser considerada padronizada. Pode ser utilizada em praticamente todas plataformas HPC, e substituiu todas as bibliotecas de troca de mensagem anteriores.

45 45 Portabilidade Não é preciso modificar seu código fonte caso você tenha de trocar de plataforma, desde que esta suporte o padrão MPI. Desempenho É possível explorar o máximo possível do hardware com base na MPI. Funcionalidade Mais de 115 rotinas são definidas apenas na MPI-1. Disponibilidade Uma variedade de implementações estão disponíveis, tanto em domínio público ou privado. O paralelismo é explícito, sendo o programador total responsável pela distribuição, tendo ela o mínimo de abstração. Seus processos têm acesso à memória local e a comunicação entre eles é baseada no envio e recebimento de mensagens. Conforme já abordado, na computação paralela, os problemas são divididos em partes menores, denominadas processos, e essas partes são distribuídas para que outras máquinas do cluster façam as ações necessárias em cima delas. Os processos podem ser executados em uma máquina ou em várias, sendo que cada um deles tem uma identificação única, atribuída pelo sistema assim que ele é inicializado. Essa identificação ou rank é representada por um número inteiro que varia entre 0 e n-1, no qual n representa o número de processos. O rank é também utilizado para o envio e recebimento de mensagens e controle de execução do algoritmo (BARNEY, 2009). Um conjunto ordenado de processos forma um grupo, que no ponto de vista do programador é o comunicador. Toda mensagem MPI deve especificar um comunicador, então o comunicador é como se fosse uma etiqueta extra a se colocar nas chamadas da MPI. O comunicador é o objeto que representa o contexto de uma comunicação, o conjunto de processos que podem ser contatados. Os principais propósitos dos Grupos e Comunicadores são: Permitir organizar as tarefas em grupos de tarefas

46 46 Permitir operações de comunicação coletiva entre um subconjunto de tarefas relacionadas Prover base para implementar topologias virtuais definidas no usuário Prover comunicações seguras A MPI possui mais de 100 rotinas. A seguir são detalhadas algumas das rotinas presentes na maioria dos algoritmos computacionais que utilizam a biblioteca MPI: MPI_Init Inicializa o ambiente de execução da MPI MPI_Comm_rank Determina o rank do processo chamado no comunicador MPI_Comm_size Determina o tamanho de um grupo associado com um comunicador MPI_Send Primitiva de comunicação utilizada para enviar uma mensagem de maneira síncrona, isto é, o processo só continua depois de confirmado o recebimento da mensagem. Nela se utiliza os seguintes parâmetros: Parâmetros buf count datatype dest tag comm Descrição Endereço inicial do buffer de envio Número de elementos no buffer de envio Tipo de dado de cada elemento do buffer Rank do destino Tag da mensagem Comunicador

47 47 MPI_Recv Primitiva de comunicação utilizada para receber uma mensagem também de maneira síncrona, e com os mesmos parâmetros do Send, mas ao invés do destino coloca-se a fonte da mensagem MPI_Bcast Envia uma mensagem de um processo para todos os outros processos do grupo MPI_Finalize Finaliza o ambiente de execução da MPI Funcionamento Básico da MPI Durante a execução de um programa MPI, todos os processos criados executam o mesmo código. O papel do programador é atribuir através do rank do processo ou de um grupo, quem é responsável por executar uma determinada parte do código. Uma técnica para distribuir essa execução, pode ser feito com a função de condição mais simples que é o if. Em um modelo de mestre-escravos, onde o rank 0 representa o mestre e os demais são os escravos, o código teria basicamente a seguinte estrutura: Se rank é igual a 0 então Inicializa Dados Distribui os dados entre os escravos (através do MPI_Send) Executa código local (qualquer um que for necessário) Recebe resultados dos escravos (MPI_Recv) senão Recebe dados do mestre (MPI_Recv) Executa cálculos locais Envia resultados ao mestre (MPI_Send) É perceptível o grande desafio durante a programação paralela, que é encontrar os pontos paralelizáveis e fazer a sincronização entre os processos (através das primitivas de comunicação) de forma que não ocorra um aumento no tempo de

48 48 processamento devido a um atraso de resposta, ou até mesmo uma espera indefinida.

49 49 3 Estudo de Caso Até este ponto, foram abordados os conceitos que dão suporte para o estudo do algoritmo paralelo de reconstrução tomográfica 2D de Pereira e sua proposta de otimização. Neste capítulo primeiramente será explicado o funcionamento do algoritmo seqüencial de reconstrução tomográfica 2D, seguido da versão paralela de Pereira e finalmente a proposta de otimização feita nesse trabalho de conclusão. Feita a demonstração da lógica envolvida nos dois algoritmos, será feita a comparação com medidas de desempenho obtidas a partir da variação do número de amostras, o tamanho das amostras e a quantidade de nós do cluster em que os algoritmos serão rodados. A partir dessas variações e das medidas extraídas em cada uma delas, será possível analisar os resultados e obter as conclusões. 3.1 Algoritmo de Reconstrução Tomográfica Bidimensional Matematicamente, o cerne do algoritmo está na aplicação da Equação (1) para realização da filtragem das projeções e da Equação (2) que é utilizada para retroprojetar os pontos das projeções g(x,y), obtendo-se, desta forma, a imagem reconstruída. As tarefas do algoritmo as quais são enumeradas e apresentados como sendo: 1. Tarefa de leitura de dados da base de projeções; 2. Tarefa de filtragem de cada projeção obtida no ângulo, utilizando a Eq. (1); 3. Tarefa de agrupamento dos resultados da filtragem de projeções; 4. Tarefa de retroprojeção do pixel de coordenada (x,y), utilizando a Eq. (2); 5. Tarefa de agrupamento dos pixels reconstruídos; 6. Tarefa de gravação do corte reconstruído na base de dados.

50 50 De forma ilustrada, o algoritmo está apresentado na Figura 26, onde os círculos representam as tarefas listadas, as setas mostram o sentido da comunicação e, sobre elas, os dados que são trocados entre as tarefas. A tarefa 1 é responsável pela leitura dos dados de projeções na base e por enviá-los para a tarefa 2, onde cada projeção é filtrada. Os dados filtrados na tarefa 2 são enviados para tarefa 3, de aglomeração das projeções filtradas, que recebe e as reúne até que todo o procedimento de filtragem esteja terminado, na tarefa 2. Quando isso acontece, o processo 3 distribui à tarefa 4 de retroprojeção os dados necessários para reconstruir a imagem tomográfica, bem como uma carga de trabalho para reconstrução. A tarefa 5 recebe e agrupa o resultado de cada pixel retroprojetado pelo processo 4 e, ao final, encaminha esses pixels retroprojetados para a tarefa 6 realizar a gravação na base de cortes reconstruídos. Figura 26: Ilustração das tarefas do algoritmo de reconstrução (PEREIRA, 2007)

51 Algoritmo paralelo de Pereira No algoritmo paralelo de Pereira, o processo gerente faz a leitura dos dados de projeções, e divide a matriz de projeções igualmente para o número de processos trabalhadores, que por vez passa a fazer a filtragem através da Equação (1) do seu conjunto de projeções. O processo gerente agrupa as projeções filtradas pelos trabalhadores, e divide novamente a matriz de projeções filtradas entre os trabalhadores, que realizam a reconstrução dos pixels através da Equação (2). Por fim, o processo gerente agrupa os pixels reconstruídos pelos processos trabalhadores e grava o corte na base. Figura 27: Ilustração do algoritmo paralelo de reconstrução de Pereira (PEREIRA, 2007) Algoritmo paralelo proposto O algoritmo proposto tem como objetivo aproveitar melhor o tempo gasto na comunicação, visto que a latência de uma rede ethernet é grande, e por isso visa

52 52 aumentar a granularidade dos dados enviados pela mesma assim como a granularidade da computação. Outra vantagem do algoritmo proposto é tornar mais simples a reconstrução de um conjunto de amostras. O cerne do novo algoritmo está na reconstrução não de apenas uma amostra em paralelo, mas de um conjunto de amostras, para futuramente integrar a reconstrução tridimensional paralela proposta por Pereira em um único algoritmo paralelo. Nessa proposta, grande parte do algoritmo é executada em paralelo pelos processos trabalhadores. Foi criado para o processo gerente, um procedimento para a distribuição das amostras entre os processos trabalhadores. Cada processo trabalhador fica responsável pela filtragem e reconstrução de uma amostra por completo, voltando a comunicar novamente com o gerente, apenas para enviar a resposta dos pixels reconstruídos. E finalizando, o processo gerente grava os cortes na base. Figura 28: Ilustração do algoritmo paralelo de reconstrução proposto

53 Ambiente de testes Para a realização dos testes com os algoritmos paralelos, foram utilizados computadores do laboratório do Instituto de Computação da Universidade Federal de Mato Grosso, interligadas em cluster por uma rede ethernet, utilizando como sistema operacional o PelicanHPC. Todas as máquinas utilizadas no cluster possuem os mesmos processadores e quantidade de memória: Processador: Intel Core 2 Duo E GHz 2 GB Memória RAM Estão interconectadas através de um switch 3Com 4210 de 26 portas numa rede cabeada com taxa de transmissão máxima de 100 Mbits. 3.3 Medidas obtidas e Métodos para comparação entre os Algoritmos Para fazer a comparação do desempenho entre o algoritmo paralelo de Pereira e a modificação proposta neste trabalho, foram feitos alguns testes variando os principais elementos que influenciam o tempo de execução dos algoritmos, os quais são: Número de Máquinas do Cluster Quantidade de Amostras Processadas Tamanho da Matriz de Dados Foram realizadas duas etapas de testes em relação ao número de máquinas do cluster - com 6 e com 11 máquinas. Além da variação no número de máquinas do cluster, foram feitas variações no número de amostras processadas. Tais números estavam intimamente ligados ao número de máquinas do cluster. Os números de amostras estabelecidos para os testes foram de 10 e 20 amostras. Tendo em vista que o algoritmo paralelo proposto trabalha os processos seguindo a lógica mestre-

54 54 escravo, tem-se 5 ou 10 escravos contando o número de máquinas para o processamento das amostras, sem levar em consideração o nó mestre. Levando-se também em consideração que os computadores utilizados possuem dois núcleos de processamento em cada processador, pode-se afirmar que as amostras seriam divididas entre 10 e 20 núcleos de processamento. Essa variação no número de máquinas e amostras serviu de prova na questão da divisão dos processos entre as máquinas e seus processadores durante a execução do algoritmo. O último parâmetro alterado entre os testes é referente ao tamanho das amostras processadas. As amostras em questão contêm matrizes de 251, 502, 1004 e 2008 linhas e colunas cada. Cada linha corresponde a um conjunto de projeções de um determinado ângulo i tal qual apresentado na equação (1). Considerando N igual 251, foram feitas variações na entrada com as matrizes N, 2N, 4N e 8N. Além dessas variações realizadas para estudar os diferentes tempos de execução dos algoritmos, esse tempo obtido em cada teste foi dividido de forma a proporcionar uma melhor visualização do tempo gasto nas diferentes etapas do programa. Essas medidas são divididas em: Tempo Seqüencial do Algoritmo: tempo gasto com a leitura dos arquivos de entrada, somado ao tempo gasto para escrever em disco os arquivos de saída. Esse é o tempo seqüencial, executado pelo processo mestre, por não haver nenhuma outra tarefa ocorrendo em paralelo naquele instante. Tempo de Comunicação: tempo gasto com a comunicação entre os processos, através das primitivas de comunicação da MPI. A partir dessa medida é possível avaliar qual algoritmo despende maior tempo com a comunicação, que se dá de forma lenta em uma rede ethernet. Tempo Paralelo: tempo gasto na etapa de reconstrução tomográfica, que se dá de forma paralela. Para cada uma das configurações apresentadas, foram realizadas cinco execuções para se obter a média dos tempos de execução e garantir que não houve nenhuma mudança brusca ou anormalidade em tais tempos. Como prova disso, foi calculada a

55 55 Variância entre os tempos para cada teste, e o maior valor encontrado foi de 1,08 segundos. Os valores de variância para os testes com 5 máquinas e 20 amostras de resolução 2008 foram maiores, mas ainda muito pequenos comparados com o tempo total. A Variância para o algoritmo de Pereira foi inferior, pois tais tempos foram obtidos multiplicando a quantidade de amostras pelo tempo de execução de uma amostra, como explicado a seguir. Algoritmo de Pereira Algoritmo desenvolvido Variância Tempo Total 0,11 s 1028,35 s 1,08 s 390,81 s 3.4 Testes com Algoritmo de Pereira Devido ao funcionamento do algoritmo de Pereira, com uma execução de uma amostra por vez, os testes foram realizados variando apenas o número de máquinas e o tamanho das matrizes das amostras. A partir desses tempos que corresponde à execução de uma amostra multiplicamos por 10 ou por 20, números propostos para a quantidade de amostras a se processar Tempos de Execução Algoritmo Pereira Cluster 6 Máquinas Através do gráfico de colunas percentuais empilhadas, mostrado na Figura 29 e 30 é possível analisar as parcelas do tempo de execução do algoritmo Seqüencial, Comunicação, Paralelo e sua mudança conforme o tamanho da matriz de entrada. A porcentagem do tempo utilizada em cada uma das etapas é igual para as diferentes quantidades de amostra, devido ao que foi explicado anteriormente sobre a execução dos Testes com o Algoritmo de Pereira. As tabelas que acompanham os gráficos contêm o tempo de execução em segundos, de cada uma das partes.

56 Tempo de execução (em %) Tempo de execução (em %) % 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 10 Amostras executadas em cluster com 6 máquinas paralelo 0,43 3,77 36,21 293,01 comunicação 2,79 11,14 45,38 194,78 seqüencial 0,44 1,67 6,60 26,39 Resolução da matriz Figura 29: Gráfico da porcentagem de tempo e tabela com tempos demandados em cada etapa do teste de 10 amostras executadas em um cluster com 6 máquinas utilizando o algoritmo de Pereira 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 20 Amostras executadas em cluster com 6 máquinas paralelo 0,86 7,54 72,42 586,02 comunicação 5,58 22,28 90,77 389,55 seqüencial 0,89 3,35 13,20 52,78 Resolução da matriz Figura 30: Gráfico da porcentagem de tempo e tabela com tempos demandados em cada etapa do teste de 20 amostras executadas em um cluster com 6 máquinas utilizando o algoritmo de Pereira

57 Tempo de execução (em %) Tempos de Execução Algoritmo de Pereira - Cluster 11 Máquinas Novamente, a porcentagem do tempo utilizada em cada uma das etapas é igual para as diferentes quantidades de amostra, devido ao que foi explicado anteriormente sobre a execução dos Testes com o Algoritmo de Pereira. Como esperado, em comparação com a execução dos testes no cluster com 6 máquinas, o tempo de reconstrução da amostra tomográfica (Tempo Paralelo) diminuiu, e o tempo de comunicação aumentou devido a adição máquinas ao cluster. 10 Amostras executadas em cluster com 11 máquinas 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% paralelo 0,24 2,04 19,43 156,10 comunicação 3,12 13,87 55,29 230,36 seqüencial 0,46 1,70 6,67 26,48 Resolução da matriz Figura 31: Gráfico da porcentagem de tempo e tabela com tempos demandados em cada etapa do teste de 10 amostras executadas em um cluster com 11 máquinas utilizando o algoritmo de Pereira

58 Tempo de execução (em %) Amostras executadas em cluster com 11 máquinas 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% paralelo 0,49 4,08 38,86 312,20 comunicação 6,23 27,75 110,58 460,73 seqüencial 0,92 3,39 13,35 52,96 Resolução da matriz Figura 32: Gráfico da porcentagem de tempo e tabela com tempos demandados em cada etapa do teste de 20 amostras executadas em um cluster com 11 máquinas utilizando o algoritmo de Pereira Tempo Total de Execução No gráfico mostrado na Figura 33 tem-se o tempo total de execução dos testes realizados com o algoritmo de Pereira. Percebe-se um melhora relativamente pequena de desempenho no algoritmo na reconstrução com 11 máquinas.

59 Temop em segundos Tempo em segundos Tempos de Execução Algoritmo Pereira 10 Amostras em Cluster com 6 Máquinas 20 Amostras em Cluster com 6 Máquinas 10 Amostras em Cluster com 11 Máquinas 20 Amostras em Cluster com 11 Máquinas 35,22 33, ,61 16, ,65 7,33 3,82 3, Resolução da matriz 502 Figura 33: Tempo de execução do algoritmo de Pereira, nas resoluções 251 e 502, nas configurações de 10 e 20 amostras com 6 e 11 máquinas Tempos de Execução Algoritmo Pereira 10 Amostras em Cluster com 6 Máquinas 20 Amostras em Cluster com 6 Máquinas 10 Amostras em Cluster com 11 Máquinas 20 Amostras em Cluster com 11 Máquinas , , ,39 162,79 88,20 81, Resolução da matriz 514,18 412,94 Figura 34: Tempo de execução do algoritmo de Pereira, nas resoluções 1004 e 2008, nas configurações de 10 e 20 amostras com 6 e 11 máquinas

60 60 Tabela 4: Tempos de execução dos diferentes testes com o algoritmo de Pereira Resolução da matriz Amostras em cluster com 6 Máquinas 3,66 16,59 88,20 514,18 20 Amostras em cluster com 6 Máquinas 7,33 33,17 176, ,35 10 Amostras em cluster com 11 Máquinas 3,82 17,61 81,39 412,94 20 Amostras em cluster com 11 Máquinas 7,65 35,22 162,79 825, Testes com Algoritmo proposto Para os testes realizados com o novo algoritmo proposto, o número de amostras foi variado, para ficar compatível com a proposta do algoritmo que é testar o desempenho de reconstrução de amostras completas sem particionamento das projeções para filtragem e da área de reconstrução entre os nós Tempos de execução do algoritmo Proposto Cluster 6 Máquinas Através dos gráficos mostrados na Figura 35 e Figura 36 é possível visualizar melhor as parcelas do tempo de execução do algoritmo Seqüencial, Comunicação, Paralelo e as mudanças de demanda de comunicação e processamento paralelo influenciadas pelo tamanho da matriz de entrada. Através das tabelas que acompanham os gráficos, as quais mostram os tempos de execução em segundos, pode-se observar que o tempo de comunicação e reconstrução aumenta, devido ao aumento no número de amostras executadas. Para as amostras com as matrizes de 251 e 502, a parcela percentual do tempo de comunicação aumenta, mas para amostras de 1004 e 2008, essa parcela diminui, visto que o tempo de reconstrução (tempo paralelo) aumenta exponencialmente. A tabela que acompanha os gráficos contém o tempo de execução em segundos, de cada uma das partes.

61 Tempo de execução (em %) Tempo de execução (em %) Amostras executadas em cluster com 6 máquinas 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% paralelo 0,30 2,26 20,67 169,23 comunicação 0,71 3,03 12,37 49,76 seqüencial 0,14 0,38 1,27 4,47 Resolução da matriz Figura 35: Gráfico da porcentagem de tempo e tabela com tempos demandados em cada etapa do teste de 10 amostras executadas em um cluster com 6 máquinas utilizando o algoritmo proposto 20 Amostras executadas em cluster com 6 máquinas 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% paralelo 0,31 3,49 37,41 322,84 comunicação 1,78 5,66 18,73 62,95 seqüencial 0,22 0,48 1,36 5,03 Resolução da matriz Figura 36: Gráfico da porcentagem de tempo e tabela com tempos demandados em cada etapa do teste de 20 amostras executadas em um cluster com 6 máquinas utilizando o algoritmo proposto

62 Tempos de execução do algoritmo proposto Cluster 11 Máquinas Com os resultados dos testes realizados com 11 máquinas, variando o número de amostras, e comparando com os testes realizados com 6 máquinas, é possivel observar a real utilização dos dois núcleos do processador Intel Core 2 Duo, com distribuição de processos entre os núcleos. Como explicado anteriormente, as amostras são divididas igualmente entre as máquinas escravas, 5 e 10 máquinas. Com 10 amostras divididas para 5 máquinas, cada máquina fica com duas amostras para processar. Sendo o processador um Intel Core 2 Duo (com dois núcleos de processamento), as duas amostras são processadas ao tempo de uma. Quando as 10 amostras são divididas pelas 10 máquinas escravas na segunda etapa de testes, o tempo de reconstrução permanece praticamente igual por que um dos núcleos do processador está ocioso por assim dizer. E com 20 amostras, o tempo é o mesmo pelo mesmo motivo descrito anteriormente - 2 amostras para cada processador com dois núcleos. O tempo percentual dos testes com 10 e 20 amostras para o cluster de 11 máquinas diferem apenas por conta do tempo de comunicação, que aumenta com o número de amostras.

63 Tempo de execução (em %) Tempo de execução (em %) Amostras executadas em cluster com 11 máquinas 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% matriz251 matriz502 matriz1004 matriz2008 paralelo 0,25 2,23 20,61 167,69 comunicação 0,81 3,07 12,67 50,87 seqüencial 0,13 0,36 1,16 4,43 Figura 37: Gráfico da porcentagem de tempo e tabela com tempos demandados em cada etapa do teste de 10 amostras executadas em um cluster com 11 máquinas utilizando o algoritmo proposto 20 Amostras executadas em cluster com 11 máquinas 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% matriz251 matriz502 matriz1004 matriz2008 paralelo 0,27 2,32 20,88 169,10 comunicação 1,87 6,36 25,32 102,83 seqüencial 0,21 0,48 1,34 4,95 Figura 38: Gráfico de colunas empilhadas com a porcentagem utilizada em cada etapa do teste de 20 amostras executadas em um cluster com 11 máquinas utilizando o algoritmo proposto

64 Tempo em segundos Tempo Total de Execução A Figura 39 e a Figura 40 apresentam o tempo total de execução dos testes realizados com o algoritmo proposto. Como já foi descrito, os testes de 10 amostras para 6 e 11 máquinas possuem praticamente o mesmo tempo de execução, e de 20 amostras com 11 máquinas só aumenta um pouco devido ao tempo de comunicação. O teste com 20 amostras em 6 máquinas fica bem acima, devido a sobrecarga de amostra para cada processador. 12 Tempos de Execução Algoritmo Proposto 10 Amostras em Cluster com 6 Máquinas 20 Amostras em Cluster com 6 Máquinas 10 Amostras em Cluster com 11 Máquinas 20 Amostras em Cluster com 11 Máquinas ,63 9, ,20 2,34 2,30 1, Resolução da matriz 502 Figura 39: Gráfico do tempo de execução do algoritmo proposto, nas resoluções 251 e 502, nas configurações de 10 e 20 amostras com 6 e 11 máquinas 5,67 5,66

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Parte da Tarefa. Parte da Tarefa. Parte da Tarefa SEND RECEIVE SEND RECEIVE

Parte da Tarefa. Parte da Tarefa. Parte da Tarefa SEND RECEIVE SEND RECEIVE Produto Escalar com MPI-2 (C++) Aula Sistemas Distribuídos Prof. Dr. Marcelo Facio Palin profpalin@gmail.com 1 1 O que é Paralelismo? Conceitos Paralelismo é uma técnica usada em tarefas grandes e complexas

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

} 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

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

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

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

Tecnólogo em Análise e Desenvolvimento de Sistemas

Tecnólogo em Análise e Desenvolvimento de Sistemas Tecnólogo em Análise e Desenvolvimento de Sistemas O conteúdo deste documento tem como objetivos geral introduzir conceitos mínimos sobre sistemas operacionais e máquinas virtuais para posteriormente utilizar

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

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Computação em cluster

Computação em cluster Computação em cluster Por Marcos Pitanga em 30 de maio de 2003 Introdução Este artigo tem por finalidade dar ao leitor uma visão mais integrada do que vem a ser a computação em cluster e como esta a cada

Leia mais

6 - Gerência de Dispositivos

6 - Gerência de Dispositivos 1 6 - Gerência de Dispositivos 6.1 Introdução A gerência de dispositivos de entrada/saída é uma das principais e mais complexas funções do sistema operacional. Sua implementação é estruturada através de

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

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

INSTALAÇÃO PRINTERTUX Tutorial

INSTALAÇÃO PRINTERTUX Tutorial INSTALAÇÃO PRINTERTUX Tutorial 2 1. O Sistema PrinterTux O Printertux é um sistema para gerenciamento e controle de impressões. O Produto consiste em uma interface web onde o administrador efetua o cadastro

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

Sistemas Operacionais Cap 3 Estruturas de Sistemas Operacionais. Podemos analisar um sistema operacional sob diversos aspectos:

Sistemas Operacionais Cap 3 Estruturas de Sistemas Operacionais. Podemos analisar um sistema operacional sob diversos aspectos: Estruturas de Sistemas Operacionais Podemos analisar um sistema operacional sob diversos aspectos: Os serviços que o sistema operacional oferece. A interface que o sistema operacional torna disponível

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

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

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Software em Sistemas Distribuídos Aplicativo ou Sistema Operacional Sincronismo Interação Controles Um sistema operacional moderno provê dois serviços fundamentais para o usuário

Leia mais

Instituto Superior de Engenharia do Porto Administração de Sistemas Informáticos I Clusters

Instituto Superior de Engenharia do Porto Administração de Sistemas Informáticos I Clusters Instituto Superior de Engenharia do Porto Administração de Sistemas Informáticos I Clusters Trabalho elaborado por: 980368 - Sérgio Gonçalves Lima 1010949 - Nisha Sudhirkumar Chaganlal Clusters O que é

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

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

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Evolução Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Introdução Componentes de um sistema computacional Conceituação Características desejáveis Organização

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

HARDWARE GRÁFICO. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

HARDWARE GRÁFICO. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR HARDWARE GRÁFICO Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR Mar/2012 Introdução Características do hardware Funcionalidades do hardware gráfico Influência da área

Leia mais

Visão do Usuário da DSM

Visão do Usuário da DSM Memória Compartilhada Distribuída Visão Geral Implementação Produtos 1 Memória Compartilhada Distribuída Mecanismos tradicionais de comunicação via RPC/RMI ou mensagens deixam explícitas as interações

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

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

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

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

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

XDR. Solução para Big Data.

XDR. Solução para Big Data. XDR Solução para Big Data. ObJetivo Principal O volume de informações com os quais as empresas de telecomunicações/internet têm que lidar é muito grande, e está em constante crescimento devido à franca

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

Introdução a Computação Paralela e a Montagem de Clusters.

Introdução a Computação Paralela e a Montagem de Clusters. Introdução a Computação Paralela e a Montagem de Clusters. Marcelo Souza (marcelo@cebacad.net) Granduando em Sistema da Informação CEBACAD Centro Baiano de Computação de alto Desempenho Introdução a Computação

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

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa Prof. Marcelo de Sá Barbosa CLUSTER: Um cluster é um conjunto de computadores independentes conectados por rede que formam um sistema único através do uso de software. Um cluster, ou aglomerado de computadores,

Leia mais

Projetos I Resumo de TCC. Luiz Rogério Batista De Pieri Mat: 0413829 5

Projetos I Resumo de TCC. Luiz Rogério Batista De Pieri Mat: 0413829 5 Projetos I Resumo de TCC Luiz Rogério Batista De Pieri Mat: 0413829 5 MAD RSSF: Uma Infra estrutura de Monitoração Integrando Redes de Sensores Ad Hoc e uma Configuração de Cluster Computacional (Denise

Leia mais

Processamento Distribuído em Cluster do Tipo Beowulf

Processamento Distribuído em Cluster do Tipo Beowulf UNIVERSIDADE ESTADUAL PAULISTA JULIO DE MESQUITA FILHO FACULDADE DE TECNOLOGIA DA BAIXADA SANTISTA DEPARTAMENTO DE INFORMÁTICA GESTÃO DE NEGÓCIOS Processamento Distribuído em Cluster do Tipo Beowulf ALEXANDRE

Leia mais

Nível 3 Sistema Operacional

Nível 3 Sistema Operacional Nível 3 Sistema Operacional Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET Tecnologia de Análise e Desenvolvimento de Sistemas Organização de Computadores Prof. André Luiz 1 Nível

Leia mais

RODRIGUES JARDIM,MIRIAN BERGMANN DE LIMA, TAMIRES RODRIGUES FERREIRA

RODRIGUES JARDIM,MIRIAN BERGMANN DE LIMA, TAMIRES RODRIGUES FERREIRA Serviço Nacional de Aprendizagem Comercial E.E.P. Senac Pelotas Centro Histórico Programa Nacional de Acesso ao Ensino Técnico e Emprego Curso Técnico em Informática FRANCIS RODRIGUES JARDIM,MIRIAN BERGMANN

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

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional O conteúdo deste documento tem por objetivo apresentar uma visão geral

Leia mais

Desempenho de um Cluster Virtualizado em Relação a um Cluster Convencional Similar

Desempenho de um Cluster Virtualizado em Relação a um Cluster Convencional Similar Desempenho de um Cluster Virtualizado em Relação a um Cluster Convencional Similar David Beserra 1, Alexandre Borba¹, Samuel Souto 1, Mariel Andrade 1, Alberto Araujo 1 1 Unidade Acadêmica de Garanhuns

Leia mais

Um Visualizador de Carga de Rede para um Cluster que utiliza a biblioteca MPI

Um Visualizador de Carga de Rede para um Cluster que utiliza a biblioteca MPI Universidade Federal do Espírito Santo Centro Tecnológico Curso de Ciência da Computação Projeto de Graduação Um Visualizador de Carga de Rede para um Cluster que utiliza a biblioteca MPI Ricardo de Magalhães

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

Cloud Computing. Andrêza Leite. andreza.lba@gmail.com

Cloud Computing. Andrêza Leite. andreza.lba@gmail.com Cloud Computing Andrêza Leite andreza.lba@gmail.com Roteiro O que é cloud computing? Classificação O que está 'por traz' da cloud? Exemplos Como montar a sua? O que é cloud computing? Cloud Computing O

Leia mais

Partição Partição primária: Partição estendida: Discos básicos e dinâmicos

Partição Partição primária: Partição estendida: Discos básicos e dinâmicos Partição Parte de um disco físico que funciona como se fosse um disco fisicamente separado. Depois de criar uma partição, você deve formatá-la e atribuir-lhe uma letra de unidade antes de armazenar dados

Leia mais

GUIA DE INSTALAÇÃO NETDEEP SECURE COM HYPER-V

GUIA DE INSTALAÇÃO NETDEEP SECURE COM HYPER-V GUIA DE INSTALAÇÃO NETDEEP SECURE COM HYPER-V GUIA DE INSTALAÇÃO NETDEEP SECURE COM HYPER-V 1- Visão Geral Neste manual você aprenderá a instalar e fazer a configuração inicial do seu firewall Netdeep

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

Unidade III. Unidade III

Unidade III. Unidade III Unidade III 4 ADMINISTRAÇÃO DE SGBDs As pessoas que trabalham com um banco de dados podem ser categorizadas como usuários de banco de dados ou administradores de banco de dados. 1 Entre os usuários, existem

Leia mais

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador)

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador) Multiprocessamento Multiprocessadores com memória distribuída (multicomputador) Conjunto de processadores, cada qual com sua memória local Processadores se comunicam por troca de mensagens, via rede de

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 SISTEMA DE INTERCONEXÃO (BARRAMENTOS) Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Componentes estruturais: Memória Principal Unidade de Processamento Central

Leia mais

Programação Concorrente Introdução

Programação Concorrente Introdução Introdução Prof. Eduardo Alchieri (definição) Programação Concorrente Do inglês Concurrent Programming, onde Concurrent signifca "acontecendo ao mesmo tempo" Programação Concorrente é diferente de programação

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

SISTEMA DE BANCO DE DADOS. Banco e Modelagem de dados

SISTEMA DE BANCO DE DADOS. Banco e Modelagem de dados SISTEMA DE BANCO DE DADOS Banco e Modelagem de dados Sumário Conceitos/Autores chave... 3 1. Introdução... 4 2. Arquiteturas de um Sistema Gerenciador... 5 3. Componentes de um Sistema... 8 4. Vantagens

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

CLOUD COMPUTING. Andrêza Leite. andreza.leite@univasf.edu.br

CLOUD COMPUTING. Andrêza Leite. andreza.leite@univasf.edu.br CLOUD COMPUTING Andrêza Leite andreza.leite@univasf.edu.br Roteiro O que é cloud computing? Classificação O que está 'por traz' da cloud? Exemplos Como montar a sua? O que é cloud computing? Cloud Computing

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

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

The Eucalyptus Open- source Cloud-computing System. Janaina Siqueira Lara Wilpert Marcelo Scheidt Renata Silva

The Eucalyptus Open- source Cloud-computing System. Janaina Siqueira Lara Wilpert Marcelo Scheidt Renata Silva The Eucalyptus Open- source Cloud-computing System Janaina Siqueira Lara Wilpert Marcelo Scheidt Renata Silva Sumário Introdução Trabalhos Correlatos Eucalyptus Design Conclusões Visão Geral Introdução:

Leia mais

Projeto de Arquitetura

Projeto de Arquitetura Projeto de Arquitetura Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 11 Slide 1 Objetivos Apresentar projeto de arquitetura e discutir sua importância Explicar as decisões de projeto

Leia mais

Projeto Liowsn Manual de utilização do sistema

Projeto Liowsn Manual de utilização do sistema Projeto Liowsn Manual de utilização do sistema Autor: Marllus Lustosa - marlluslustosa@gmail.com 0 Índice 1. Introdução... 1 2. Tela de boot... 2 3. Tela de login... 2 4. Ambiente de trabalho... 5 5. Utilizando

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

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Período letivo: 4 Semestre. Quinzena: 5ª. Faculdades Santa Cruz - Inove Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Unidade Curricular Sistemas Distribuídos Processos

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 Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Introdução Aplicações em rede de computadores As redes de computadores atualmente estão em todos os lugares. Ex.: Internet, redes de telefones móveis, redes corporativas, em fábricas,

Leia mais

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa.

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa. CLUSTERS Pode-se pegar uma certa quantidade de servidores e juntá-los para formar um cluster. O serviço então é distribuído entre esses servidores como se eles fossem uma máquina só. Um cluster de servidores

Leia mais

Sistemas Operacionais Gerência de Dispositivos

Sistemas Operacionais Gerência de Dispositivos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Gerência de Dispositivos Prof. José Gonçalves Dias Neto profneto_ti@hotmail.com Introdução A gerência

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

Arquitetura de Sistemas Distribuídos. Introdução a Sistemas Distribuídos

Arquitetura de Sistemas Distribuídos. Introdução a Sistemas Distribuídos Introdução a Sistemas Distribuídos Definição: "Um sistema distribuído é uma coleção de computadores autônomos conectados por uma rede e equipados com um sistema de software distribuído." "Um sistema distribuído

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

Metas de um Sistema Distribuído

Metas de um Sistema Distribuído Metas de um Sistema Distribuído Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013 MC714 Sistemas Distribuídos 2 semestre, 2013 Tipos de comunicação Middleware: serviço intermediário na comunicação de nível de aplicação. Fig. 67 Ex.: correio eletrônico Comunicação é persistente. Middleware

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

Arquitetura Genérica

Arquitetura Genérica Arquitetura Genérica Antes de tudo, vamos revisar o Modelo Simplificado do Funcionamento de um Computador. Modelo Simplificado do Funcionamento de um Computador O funcionamento de um computador pode ser

Leia mais

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas Arquitetura de Sistemas Operacionais Capítulo 4 Estrutura do Sistema Operacional Cap. 4 Estrutura do Sistema 1 Sistemas Operacionais Pitágoras Fadom Divinópolis Material Utilizado na disciplina Sistemas

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

Tecnologia de armazenamento Intel (Intel RST) RAID 0, 1, 5, 10, Matrix RAID, RAID -Pronto

Tecnologia de armazenamento Intel (Intel RST) RAID 0, 1, 5, 10, Matrix RAID, RAID -Pronto Tecnologia de armazenamento Intel (Intel RST) RAID 0, 1, 5, 10, Matrix RAID, RAID -Pronto RAID 0 (striping) RAID 0 utiliza os recursos de leitura/gravação duas ou mais unidades de disco trabalhando em

Leia mais