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

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

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

Leia mais

Introdução ao Modelos de Duas Camadas Cliente Servidor

Introdução ao Modelos de Duas Camadas Cliente Servidor Introdução ao Modelos de Duas Camadas Cliente Servidor Desenvolvimento de Sistemas Cliente Servidor Prof. Esp. MBA Heuber G. F. Lima Aula 1 Ciclo de Vida Clássico Aonde estamos? Page 2 Análise O que fizemos

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

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

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

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

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

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Cluster, Grid e computação em nuvem Slide 8 Nielsen C. Damasceno Introdução Inicialmente, os ambientes distribuídos eram formados através de um cluster. Com o avanço das tecnologias

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

1 http://www.google.com

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

Leia mais

Sistemas 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 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

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

Online Help StruxureWare Data Center Expert

Online Help StruxureWare Data Center Expert Online Help StruxureWare Data Center Expert Version 7.2.7 Appliance virtual do StruxureWare Data Center Expert O servidor do StruxureWare Data Center Expert 7.2 está agora disponível como um appliance

Leia mais

3. Arquitetura Básica do Computador

3. Arquitetura Básica do Computador 3. Arquitetura Básica do Computador 3.1. Modelo de Von Neumann Dar-me-eis um grão de trigo pela primeira casa do tabuleiro; dois pela segunda, quatro pela terceira, oito pela quarta, e assim dobrando sucessivamente,

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

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 2-1. PRINCÍPIOS DE SOFTWARE DE ENTRADA E SAÍDA (E/S) As metas gerais do software de entrada e saída é organizar o software como uma série de camadas, com as mais baixas preocupadas em esconder as

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

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Disciplina: Introdução à Informática Profª Érica Barcelos

Disciplina: Introdução à Informática Profª Érica Barcelos Disciplina: Introdução à Informática Profª Érica Barcelos CAPÍTULO 4 1. ARQUITETURA DO COMPUTADOR- HARDWARE Todos os componentes físicos constituídos de circuitos eletrônicos interligados são chamados

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

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

Leia mais

Módulo 4. Construindo uma solução OLAP

Módulo 4. Construindo uma solução OLAP Módulo 4. Construindo uma solução OLAP Objetivos Diferenciar as diversas formas de armazenamento Compreender o que é e como definir a porcentagem de agregação Conhecer a possibilidade da utilização de

Leia mais

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS Quando falamos em arquitetura, normalmente utilizamos esse termo para referenciar a forma como os aplicativos computacionais são estruturados e os hardwares

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

Governança de TI. ITIL v.2&3. parte 1

Governança de TI. ITIL v.2&3. parte 1 Governança de TI ITIL v.2&3 parte 1 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR ITIL 1 1 ITIL Gerenciamento de Serviços 2 2 Gerenciamento de Serviços Gerenciamento de Serviços 3 3 Gerenciamento de Serviços

Leia mais

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!! TUTORIAL DO ALUNO Olá, bem vindo à plataforma de cursos a distância da Uniapae!!! O Moodle é a plataforma de ensino a distância utilizada pela Uniapae sendo a unidade de ensino para rápida capacitação

Leia mais

Operador de Computador. Informática Básica

Operador de Computador. Informática Básica Operador de Computador Informática Básica Instalação de Software e Periféricos Podemos ter diversos tipos de software que nos auxiliam no desenvolvimento das nossas tarefas diárias, seja ela em casa, no

Leia mais

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

Leia mais

Everson Scherrer Borges João Paulo de Brito Gonçalves

Everson Scherrer Borges João Paulo de Brito Gonçalves Everson Scherrer Borges João Paulo de Brito Gonçalves 1 Tipos de Sistemas Operacionais Os tipos de sistemas operacionais e sua evolução estão relacionados diretamente com a evolução do hardware e das

Leia mais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Professor: João Fábio de Oliveira jfabio@amprnet.org.br (41) 9911-3030 Objetivo: Apresentar o que são os Sistemas Operacionais, seu funcionamento, o que eles fazem,

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 4. INTERLIGAÇÃO DO SISTEMA... 5 5. ALGUNS RECURSOS... 6 6. SERVIDOR BAM...

INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 4. INTERLIGAÇÃO DO SISTEMA... 5 5. ALGUNS RECURSOS... 6 6. SERVIDOR BAM... 1 de 30 INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 3.1. ONDE SE DEVE INSTALAR O SERVIDOR BAM?... 4 3.2. ONDE SE DEVE INSTALAR O PROGRAMADOR REMOTO BAM?... 4 3.3. COMO FAZER

Leia mais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds

Leia mais

Memórias Prof. Galvez Gonçalves

Memórias Prof. Galvez Gonçalves Arquitetura e Organização de Computadores 1 s Prof. Galvez Gonçalves Objetivo: Compreender os tipos de memória e como elas são acionadas nos sistemas computacionais modernos. INTRODUÇÃO Nas aulas anteriores

Leia mais

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho vi http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Administração de Redes de Computadores Resumo de Serviços em Rede Linux Controlador de Domínio Servidor DNS

Leia mais

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis

Leia mais

Manual do usuário. Mobile Auto Download

Manual do usuário. Mobile Auto Download Manual do usuário Mobile Auto Download Mobile Auto Download Parabéns, você acaba de adquirir um produto com a qualidade e segurança Intelbras. Este manual serve como referência para a sua instalação e

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Admistração de Redes de Computadores (ARC)

Admistração de Redes de Computadores (ARC) Admistração de Redes de Computadores (ARC) Instituto Federal de Educação, Ciência e Tecnologia de Santa Catarina - Campus São José Prof. Glauco Cardozo glauco.cardozo@ifsc.edu.br RAID é a sigla para Redundant

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

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

TRABALHO COM GRANDES MONTAGENS

TRABALHO COM GRANDES MONTAGENS Texto Técnico 005/2013 TRABALHO COM GRANDES MONTAGENS Parte 05 0 Vamos finalizar o tema Trabalho com Grandes Montagens apresentando os melhores recursos e configurações de hardware para otimizar a abertura

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

EAGLE TECNOLOGIA E DESIGN CRIAÇÃO DE SERVIDOR CLONE APCEF/RS

EAGLE TECNOLOGIA E DESIGN CRIAÇÃO DE SERVIDOR CLONE APCEF/RS EAGLE TECNOLOGIA E DESIGN CRIAÇÃO DE SERVIDOR CLONE APCEF/RS Relatório Nº 03/2013 Porto Alegre, 22 de Agosto de 2013. ANÁLISE DE SOLUÇÕES: # RAID 1: O que é: RAID-1 é o nível de RAID que implementa o espelhamento

Leia mais

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação Multiplexadores Permitem que vários equipamentos compartilhem um único canal de comunicação Transmissor 1 Receptor 1 Transmissor 2 Multiplexador Multiplexador Receptor 2 Transmissor 3 Receptor 3 Economia

Leia mais

Manual do Painel Administrativo

Manual do Painel Administrativo Manual do Painel Administrativo versão 1.0 Autores César A Miggiolaro Marcos J Lazarin Índice Índice... 2 Figuras... 3 Inicio... 5 Funcionalidades... 7 Analytics... 9 Cidades... 9 Conteúdo... 10 Referência...

Leia mais

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

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

Leia mais

Unidade 13: Paralelismo:

Unidade 13: Paralelismo: Arquitetura e Organização de Computadores 1 Unidade 13: Paralelismo: SMP e Processamento Vetorial Prof. Daniel Caetano Objetivo: Apresentar os conceitos fundamentais da arquitetura SMP e alguns detalhes

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

Versão Liberada. www.gerpos.com.br. Gerpos Sistemas Ltda. info@gerpos.com.br. Av. Jones dos Santos Neves, nº 160/174

Versão Liberada. www.gerpos.com.br. Gerpos Sistemas Ltda. info@gerpos.com.br. Av. Jones dos Santos Neves, nº 160/174 Versão Liberada A Gerpos comunica a seus clientes que nova versão do aplicativo Gerpos Retaguarda, contendo as rotinas para emissão da Nota Fiscal Eletrônica, já está disponível. A atualização da versão

Leia mais

Processos Técnicos - Aulas 4 e 5

Processos Técnicos - Aulas 4 e 5 Processos Técnicos - Aulas 4 e 5 Trabalho / PEM Tema: Frameworks Públicos Grupo: equipe do TCC Entrega: versão digital, 1ª semana de Abril (de 31/03 a 04/04), no e-mail do professor (rodrigues.yuri@yahoo.com.br)

Leia mais

Itinerários de Ônibus Relatório Final

Itinerários de Ônibus Relatório Final CENTRO UNIVERSITÁRIO SENAC Itinerários de Ônibus Relatório Final Grupo 5 Caio Roque Daniel Nunes Elise Roese José Caneiro Marcos Grignani São Paulo Junho de 2007 1 ÍNDICE 1. Introdução... 3 2. Desenvolvimento...

Leia mais

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Satélite Manual de instalação e configuração CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Índice Índice 1.Informações gerais 1.1.Sobre este manual 1.2.Visão geral do sistema 1.3.História

Leia mais

As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes:

As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes: SGBD Características do Emprego de Bancos de Dados As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes: Natureza autodescritiva

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 03 Tipos de Sistemas Operacionais Maxwell Anderson Prof. Maxwell Anderson www.maxwellanderson.com.br Tipos de Sistemas Operacionais Os tipos de sistemas operacionais e a sua

Leia mais

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO

Leia mais

Projeto de Arquitetura

Projeto de Arquitetura Introdução Projeto de Arquitetura (Cap 11 - Sommerville) UNIVERSIDADE FEDERAL DE ALAGOAS Curso de Ciência da Computação Engenharia de Software I Prof. Rômulo Nunes de Oliveira Até agora, estudamos: Os

Leia mais

Administração de Sistemas de Informação Gerenciais

Administração de Sistemas de Informação Gerenciais Administração de Sistemas de Informação Gerenciais UNIDADE III: Infraestrutura de Tecnologia da Informação Atualmente, a infraestrutura de TI é composta por cinco elementos principais: hardware, software,

Leia mais

Arquitetura dos Sistemas de Informação Distribuídos

Arquitetura dos Sistemas de Informação Distribuídos Arquitetura dos Sistemas de Informação Distribuídos Quando se projeta um sistema cuja utilização é destinada a ser feita em ambientes do mundo real, projeções devem ser feitas para que o sistema possa

Leia mais

Tecnologia PCI express. Introdução. Tecnologia PCI Express

Tecnologia PCI express. Introdução. Tecnologia PCI Express Tecnologia PCI express Introdução O desenvolvimento de computadores cada vez mais rápidos e eficientes é uma necessidade constante. No que se refere ao segmento de computadores pessoais, essa necessidade

Leia mais

Utilizando a ferramenta de criação de aulas

Utilizando a ferramenta de criação de aulas http://portaldoprofessor.mec.gov.br/ 04 Roteiro Utilizando a ferramenta de criação de aulas Ministério da Educação Utilizando a ferramenta de criação de aulas Para criar uma sugestão de aula é necessário

Leia mais

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como: Plano de Teste (resumo do documento) I Introdução Identificador do Plano de Teste Esse campo deve especificar um identificador único para reconhecimento do Plano de Teste. Pode ser inclusive um código

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

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

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

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Introdução Um sistema operacional é um programa que atua como intermediário entre o usuário e o hardware de um computador. O propósito

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

1.1. Organização de um Sistema Computacional

1.1. Organização de um Sistema Computacional 1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

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

QUALIDATA Soluções em Informática. Módulo CIEE com convênio empresas

QUALIDATA Soluções em Informática. Módulo CIEE com convênio empresas FM-0 1/21 ÍNDICE 1. MÓDULO DESKTOP(SISTEMA INSTALADO NO CIEE)... 2 Cadastro de Ofertas de Empregos:... 2 Cadastro de Eventos:... 3 Cadastro de Instituições do Curriculum:... 5 Cadastro de Cursos do Curriculum:...

Leia mais

COORDENAÇÃO DE TECNOLOGIA (COTEC) ABRIL/2011

COORDENAÇÃO DE TECNOLOGIA (COTEC) ABRIL/2011 SERVIÇOS BÁSICOS DE TECNOLOGIA DA INFORMAÇÃO E COMUNICAÇÃO COORDENAÇÃO DE TECNOLOGIA (COTEC) ABRIL/2011 Rua do Rouxinol, N 115 / Salvador Bahia CEP: 41.720-052 Telefone: (71) 3186-0001. Email: cotec@ifbaiano.edu.br

Leia mais

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

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

Leia mais

Guia de instalação UEG Linux 14.04 LTS

Guia de instalação UEG Linux 14.04 LTS 1. Apresentação O UEG Linux 14.04 LTS é um sistema operacional baseado em Linux e derivado do Ubuntu, customizado pela Gerência de Núcleo de Inovação Tecnológica da Universidade Estadual de Goiás para

Leia mais

Profs. Deja e Andrei

Profs. Deja e Andrei Disciplina Sistemas Distribuídos e de Tempo Real Profs. Deja e Andrei Sistemas Distribuídos 1 Conceitos e Projetos de Sistemas Distribuídos Objetivos: Apresentar uma visão geral de processamento distribuído,

Leia mais

Servidor Proxy armazenamento em cache.

Servidor Proxy armazenamento em cache. Servidor Proxy Servidor Proxy Um modo bastante simples de melhorar o desempenho de uma rede é gravar páginas que foram anteriormente acessadas, caso venham a ser solicitadas novamente. O procedimento de

Leia mais

GESTÃO DE SISTEMAS OPERACIONAIS II

GESTÃO DE SISTEMAS OPERACIONAIS II GESTÃO DE SISTEMAS OPERACIONAIS II Servidores Definição Servidores História Servidores Tipos Servidores Hardware Servidores Software Evolução do Windows Server Windows Server 2003 Introdução Windows Server

Leia mais

Automação de Locais Distantes

Automação de Locais Distantes Automação de Locais Distantes Adaptação do texto Improving Automation at Remote Sites da GE Fanuc/ Water por Peter Sowmy e Márcia Campos, Gerentes de Contas da. Nova tecnologia reduz custos no tratamento

Leia mais

Como instalar uma impressora?

Como instalar uma impressora? Como instalar uma impressora? Antes de utilizar uma impressora para imprimir seus documentos, arquivos, fotos, etc. é necessário instalá-la e configurá-la no computador. Na instalação o computador se prepara

Leia mais

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador> FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido

Leia mais

MANUAL DE CONFIGURAÇÃO DO BACKUP

MANUAL DE CONFIGURAÇÃO DO BACKUP SISTEMA DE AUTOMAÇÃO COMERCIAL MANUAL DE CONFIGURAÇÃO DO BACKUP Apresentação Após o término da instalação você deverá configurar o Backup para que você tenha sempre uma cópia de segurança dos seus dados

Leia mais

UM NOVO CONCEITO EM HOSPEDAGEM DE DOMÍNIO

UM NOVO CONCEITO EM HOSPEDAGEM DE DOMÍNIO www.origy.com.br UM NOVO CONCEITO EM HOSPEDAGEM DE DOMÍNIO CARACTERÍSTICAS: E-MAIL IMAP * Acesso simultâneo e centralizado, via aplicativo, webmail e celular/smartphone * Alta capacidade de armazenamento

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

e-ouv Passo-a-passo Sistema de Ouvidorias do Poder Executivo Federal Junho, 2015 Controladoria-Geral da União

e-ouv Passo-a-passo Sistema de Ouvidorias do Poder Executivo Federal Junho, 2015 Controladoria-Geral da União e-ouv Passo-a-passo Sistema de Ouvidorias do Poder Executivo Federal Junho, 2015 Sumário 1. Acesso ao sistema... 3 2. Funcionalidades do sistema... 5 3. Como tratar manifestações... 14 3.1 Detalhar...

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

Como funciona a Solução NFC-e ifox. Iniciar a utilização da NFC-e

Como funciona a Solução NFC-e ifox. Iniciar a utilização da NFC-e Como funciona a Solução NFC-e ifox Nossa solução é composta por um programa centralizador que chamamos de Servidor de SAT/NFCe. Este programa é responsável pela comunicação com a SEFAZ diretamente no caso

Leia mais

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior MRP II Introdução A lógica de cálculo das necessidades é conhecida há muito tempo Porém só pode ser utilizada na prática em situações mais complexas a partir dos anos 60 A partir de meados da década de

Leia mais

Manual Sistema MLBC. Manual do Sistema do Módulo Administrativo

Manual Sistema MLBC. Manual do Sistema do Módulo Administrativo Manual Sistema MLBC Manual do Sistema do Módulo Administrativo Este documento tem por objetivo descrever as principais funcionalidades do sistema administrador desenvolvido pela MLBC Comunicação Digital.

Leia mais

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1 MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento Toledo PR Página 1 INDICE 1. O QUE É O SORE...3 2. COMO ACESSAR O SORE... 4 2.1. Obtendo um Usuário e Senha... 4 2.2. Acessando o SORE pelo

Leia mais

Minicurso Computação em Nuvem Prática: Openstack

Minicurso Computação em Nuvem Prática: Openstack Grupo de Pesquisa em Software e Hardware Livre André Rover de Campos Membro Colméia andreroverc@gmail.com Joinville Minicurso Computação em Nuvem Prática: Openstack Roteiro Definições Virtualização Data

Leia mais

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET 1 IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET Daniel da Silva Carla E. de Castro Franco Diogo Florenzano Avelino daniel.silva1@ext.mpsa.com

Leia mais

www.leitejunior.com.br 29/06/2012 14:30 Leite Júnior QUESTÕES CESPE BACKUP

www.leitejunior.com.br 29/06/2012 14:30 Leite Júnior QUESTÕES CESPE BACKUP QUESTÕES CESPE BACKUP QUESTÃO 01 - Analise as seguintes afirmações relativas a cópias de segurança. I. No Windows é possível fazer automaticamente um backup, em um servidor de rede, dos arquivos que estão

Leia mais

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET 2010/2011 1 Protocolo TCP/IP É um padrão de comunicação entre diferentes computadores e diferentes sistemas operativos. Cada computador deve

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 Índice 1. A Organização do Computador - Continuação...3 1.1. Processadores - II... 3 1.1.1. Princípios de projeto para computadores modernos... 3 1.1.2. Paralelismo...

Leia mais