COMPUTAÇÃO PARALELA E DISTRIBUÍDA

Documentos relacionados
UNIVERSIDADE FEDERAL DO PARÁ PRÓ-REITORIA DE PESQUISA E PÓS-GRADUAÇÃO DIRETORIA DE PESQUISA PROGRAMA INSTITUCIONAL DE BOLSAS DE INICIAÇÃO CIENTÍFICA

Processamento Paralelo

Introdução a Computação em Nuvem

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

Sistema Computacional

OpenMP: Variáveis de Ambiente

Informática Parte 10 Prof. Márcio Hunecke

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

Administração de Serviços de Redes. Introdução a Clusters. Prof. Dayvidson Bezerra Contato:

Introdução a Computação em Nuvem

Palavras-chave: (banco de dados; prontuário médico; paciente); deve vir logo abaixo do resumo

BALANCEAMENTO DE CARGA EM SISTEMAS MULTIPROCESSADORES UTILIZANDO O MODELO DE PROGRAMAÇÃO CHARM++ 1

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Introdução à Programação Aula 01. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

SISTEMAS OPERACIONAIS

Uma introdução ao Apache Hama

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot

Vamos fazer um pequeno experimento

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

3. Linguagem de Programação C

INFORMÁTICA: Informação automática

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA

PrIntCloud. Disciplina: Procedência de Dados e Data Warehousing. Aluna: Shermila Guerra Santa Cruz. 16/04/13

Ferramentas de Suporte

Introdução OpenMP. Nielsen Castelo Damasceno

Matéria: Sistema Computacional - SC. Prof.: Esp.: Patrícia Dias da Silva Peixoto

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 02: INTRODUÇÃO

Computação móvel na nuvem Grover E. Castro Guzman Computação Móvel MAC5743 IME-USP

Computação em nuvem (Cloud Computing)

Introdução a Sistemas Operacionais. Adão de Melo Neto

Introdução à Ciência da Computação

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core

A CASA DO SIMULADO DESAFIO QUESTÕES MINISSIMULADO 122/360

A Biologia na Era da Computação. Hugo Brandão Uchôa Laboratório de Sistemas Biomoleculares IBILCE-UNESP

QUESTIONÁRIO SOBRE HADOOP LEITURA DO MATERIAL FORNECIDO ALUNO/GRUPO ;

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

ARQUITETURA DE SISTEMAS OPERACIONAIS. VISÃO GERAL DE UM SISTEMA OPERACIONAL Prof. André Luís Alves E. M. DR. LEANDRO FRANCESCHINI

What is? Eduardo Viola Nicola Disciplina de IPPD

Árvore Binária de Busca Ótima - Uma Implementação Distribuída

Sistemas Operacionais II. Prof. Gleison Batista de Sousa Aula 01

SISTEMAS OPERACIONAIS DE REDE

Introdução ao CUDA. Material elaborado por Davi Conte.

informação enviada (ex. Facebook) ou que a rede social utilize essa informação para sugerir locais de interesse próximos ao usuário (ex. Foursquare).

Algoritmos e Programação

Alcides Pamplona

Também conhecidos como programas. Conjunto de instruções organizadas que o processador irá executar. É o software que torna o computador útil.

Conceitos avançados de programação. Módulo 8 Programação e Sistemas de Informação Gestão e Programação de Sistemas Informáticos

GoogleDocs. Potencializando o uso de questionários online em pesquisas científicas.

O que é um sistema distribuído?

Comparação de eficiência entre OpenCL e CUDA

2. Conceitos Básicos. Introdução à Ciência da Computação.

Quando Distribuir é bom

Análise de algoritmos

Aplicações com Banco de Dados e Cliente-Servidor

Introdução à Informática Engenharia Agrícola

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

INTRODUÇÃO. Prof. Msc. Luis Filipe Alves Pereira 2015

Unidade III. Unidade III. Existe uma tendência dos sistemas de informação a funcionarem cada vez mais em Intranets e na Internet.

ATIVIDADES PRÁTICAS SUPERVISIONADAS

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO CONCEITO DE SOFTWARE PROFESSOR CARLOS MUNIZ

Sistemas Operacionais II. Prof. Gleison Batista de Sousa Aula 01

Disciplina de Algoritmos e Programação

Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot

Curso online de Fundamentos em Android. Plano de Estudo

Sis i te t mas a O perac a i c o i nai a s um p ouco c d a a h is i tó t ria i. a... SO His i t s ó t r ó ic i o

Tipos de Clusters. Introdução. Introdução 21/03/12

Projeto Integrador. <Projeto Integrador> Documento Visão. Versão <1.0>

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Curso de Bacharelado em Ciência da Computação

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1

MANUTENÇÃO DE COMPUTADORES

Informática. Cloud Computing e Storage. Professor Márcio Hunecke.

SSC PROGRAMAÇÃO CONCORRENTE. Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella

PROVA 03/07 Segunda-feira (semana que vem)

Projeto de Algoritmos

TÍTULO: PROGRAMAÇÃO PARALELA - UMA INTRODUÇÃO AO PARALELISMO COM A OPENMPI

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

GFM015 Introdução à Computação. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM

Introdução à Programação uma Abordagem Funcional

Algoritmos e Programação

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 1. Introdução

Conceitos Básicos INTRODUÇÃO À COMPUTAÇÃO E SUAS APLICAÇÕES

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

RESUMO DA PROGRAMAÇÃO - Minicursos

SSC510 Arquitetura de Computadores 1ª AULA

AGA 511. Métodos Computacionais em Astronomia. Segundo semestre de 2017

Quando Distribuir é bom

Implementação da Especificação de Tempo Real Java para o EPOS

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIENCIAS AGRARIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMATICA

5 Modelo de Programação

Apresentação da Disciplina

Introdução aos Sistemas Operacionais

Prof. Esp. Fabiano Taguchi SOFTWARES

Arquitetura de Computadores

Introdução aos Sistemas Operacionais

Introdução à Computação

Transcrição:

COMPUTAÇÃO PARALELA E DISTRIBUÍDA Aluno: Alessandro Faletti Orientadora: Noemi Rodriguez Introdução O objetivo inicial no projeto era aplicar a possibilidade de processamento em paralelo no sistema CSBase da Tecgraf. No entanto, percebemos que seria necessário um estudo anterior sobre programação paralela em ambientes de memória distribuída, e acabamos redirecionando o projeto para o estudo de programação paralela no ambiente de memória distribuída provido pelo serviço Amazon Elastic Compute Cloud (AmazonEC2) que disponibiliza capacidade computacional redimensionável na nuvem como um serviço web. Softwares SO: Linux Fedora 21 AmazonEC2 Metodologia Antes de começarmos com a implementação direta do processamento paralelo no sistema CSBase da Tecgraf, começamos com um estudo de como funcionam os sistemas que utilizam a programação paralela. Para isso estudamos o livro Parallel Programming in C with MPI and OpenMP de Michael J. Quinn. Desta forma fizemos um estudo sobre a biblioteca MPI (Message-Passing Interface), onde seu principal objetivo é a troca de mensagens entre dois ou mais processos. Utilizamos a biblioteca para realizar vários pequenos testes didáticos, programando em linguagem C. A princípio os primeiros programas foram desenvolvidos para serem utilizados em máquinas locais, entretanto no decorrer do estudo, surgiu a ideia de utilizarmos a programação paralela em conjunto com a nuvem (internet). Após o entendimento básico da biblioteca, começamos a estudar a possibilidade de adaptarmos o programa que havíamos feito, para funcionar com várias instancias de máquinas virtuais na nuvem. Para isso, utilizamos do serviço Amazon Elastic Compute Cloud (AmazonEC2) que é um serviço da web que disponibiliza capacidade computacional redimensionável na nuvem. Essa integração foi onde encontramos algumas dificuldades de implementação, pois nos deparamos com o problema de comunicação entre as máquinas e então foi necessário um estudo maior de como funcionam as chaves públicas e privadas no sistema operacional Linux. Para a comunicação entre as máquinas, é utilizado comandos como ssh e scp, porém essa comunicação requer uma autenticação usualmente feita através de senha, isso impossibilita que a transferência de arquivos entre hosts possa ser feita automaticamente, sem intervenções. Logo, para resolver esse problema é possível gerar chaves públicas de acesso e criptografar os dados de maneira direta e assim remover a autenticação por senha. Utilizando as funções fornecidas pela MPI [1], foi possível gerar um script em lua [2] que criasse uma quantidade de máquinas virtuais fornecidas pela Amazon EC2 e que todas essas máquinas pudessem se comunicar e trocar mensagens entre elas. Dessa forma qualquer usuário que tiver um tipo de computação de grande escala para ser realizado, pode-se utilizar desse sistema para obter um resultado bem mais rápido. Entretanto observamos que o

programador que desejado desenvolver algo para utilizar o nosso script, ele teria que entender muito do funcionamento da biblioteca e esse não era o nosso objetivo. Portanto demos início a um outro estudo, este era sobre o modelo de programação paralela muito utilizado nos dias atuais, o MapReduce. Este novo modelo computacional é inspirado pelas funções MAP e REDUCE [3] usadas comumente em programação funcional e desta forma eliminaríamos o fato do programar necessitar conhecer sobre o funcionamento de troca de mensagens entre as máquinas. A função MAP, leva uma série de pares (chave / valor) processa cada um e gera zero ou mais (chave / valor) pares de saída. Os tipos de entrada e de saída do mapa podem ser (e geralmente são) diferentes umas das outras. Se o aplicativo está fazendo uma contagem de palavras, a função de mapa iria quebrar a linha em palavras e de saída de um par chave / valor para cada palavra. Cada par de saída deve conter a palavra como a chave e o número de ocorrências dessa palavra na linha como o valor. A função REDUCE pode percorrer os valores que estão associados com a chave e produzir zero ou mais saídas. No exemplo a contagem de palavras, a função toma os valores de entrada, resume-os e gera uma única saída da palavra e a soma final. Assim, utilizando este novo modelo, começamos a implementação de um framework que seu principal objetivo é o gerenciamento de arquivos processados em paralelo na computação elástica da AmazonEC2. Dessa maneira fizemos um script em lua no qual o usuário não precisa se preocupar com a comunicação entre os máquinas que irão funcionar em paralelo, sua única preocupação é desenvolver as funções MAP e REDUCE. O framework é desenvolvido em lua e para a realização de troca de mensagens entre os computadores da AmazonEC2, foi utilizado uma biblioteca de lua, chamada de luasocket, que possibilita o tráfego de informações entre as máquinas pelas portas sockets que a biblioteca gerencia. Com esse pequeno sistema desenvolvido, pode-se processar dados em grande volume, com um tempo de processamento curto, pois todo o trabalho será subdividido para cada máquina escrava que estará localizada na nuvem, desta forma sem a necessidade de ter máquinas físicas à disposição. Entretanto existe um ponto negativo no framework desenvolvido, pois este divide o trabalho para cada máquina de acordo com a quantidade de arquivos de entrada. Portanto para ter uma maior divisão de tarefas e o trabalho ficar bem mais dividido e homogêneo, é necessário que o programador divida a grande quantidade de dados que ele precisa processar em vários arquivos. Uma ideia posterior seria desenvolver uma ferramenta que faça essa divisão de dados em vários arquivos como complemento do framework. Discussões Observamos que para processar poucos dados, o framework possui um desempenho muito ruim se comparado ao processar os mesmos dados em uma máquina individual. Entretanto para grandes volumes de dados, ele se torna extremamente útil. O framework, apesar de simples, é funcional e foi uma grande forma de aprendizado sobre a computação paralela e distribuída.

Exemplos da ferramenta utilizando MPI Primeiramente uma imagem de 3 máquinas da amazon em funcionamento, criadas diretamente pelo script desenvolvido em lua. Esta imagem mostra o resultado de uma multiplicação de matrizes utilizando a biblioteca MPI e a Amazon

Exemplos da ferramenta utilizando MapReduce Nesta imagem é possível observar 2 máquinas da Amazon criadas pelo framework do MapReduce. Nesta imagem é possível observar um pequeno exemplo para achar amigos em comum entre pessoas. O exemplo pode ser visto com mais detalhes pelo link http://stevekrenzel.com/finding-friends-with-mapreduce.

Conclusões O estudo teórico permitiu uma maior compreensão do uso das funções fornecidas pelas bibliotecas. Foi possível realizar utilizá-las em vários testes iniciais em um ambiente local e após todos os testes feitos com sucessos, é feita a mudança para o ambiente nuvem. Pela sua própria experiência, a curva de aprendizado é não trivial e esse tipo de ferramenta em que foi trabalhado é importante para dar acesso ao potencial de ambientes de computação elástica. A computação paralela é usada hoje com bastante frequência para o processamento de grandes volumes de dados, onde somente um processador levaria muito tempo para conclusão do objetivo. Isso pode ser visto na própria internet, pois há uma enorme quantidade de dados sendo trafegados e a computação de todo o dado é realizado praticamente instantaneamente ao nossos olhos, isso só é possível graças a esse compartilhamento de processamento fornecido pela computação paralela. Referências 1 - Open MPI: Open Source High Performance Computing. Disponível em: https://www.open-mpi.org/. Acessado em 10 de agosto de 2015 2 Ierusalimschy, Roberto. Programming in Lua. Roberto Ierusalimschy, 2003 3 What is MapReduce? About MapReduce. Disponível em: https://www- 01.ibm.com/software/data/infosphere/hadoop/mapreduce/. Acessado em 20 de janeiro de 2016