Universidade Federal do Rio de Janeiro. Escola Politécnica. MBA em Engenharia de Computação Avançada (MBCA)



Documentos relacionados
DESENVOLVIMENTO DE SOFTWARE

Fundament n os s da platafo f rm r a. NE N T André Menegassi

Documentação do retorno XML referente projeto Busca Endereço por CEP

Implementando uma Classe e Criando Objetos a partir dela

Introdução ao C# . Visão geral do.net Framework

Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA

Manipulando Strings no VBA (Replace, Mid e InStr)

5 Apresentando a linguagem C

C# (C Sharp) Avançado

INTRODUÇÃO À PROGRAMAÇÃO DO ACCESS BASIC

Linguagem de Programação Procedural (VB) Prof. MSc Eng Marcelo Bianchi AULA 01 - INTRODUÇÃO AO VB

Laboratório de Programação I

Trabalho sobre uma rede social

QUALIDADE DE SOFTWARE

Avançado. Visão geral do ambiente do VBA Retornar à planilha Excel

MATERIAL DE APRESENTAÇÃO DO SCRATCH

Ontologias na Computação

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Ambiente Visual para o Desenvolvimento de Jogos Eletrônicos

Aula 1 - Programação III Programação Visual (Visual Basic)

DALUA: BIBLIOTECA PARA APLICAÇÕES DISTRIBUÍDAS

COMO PROGRAMAR SEU TIME

DESENVOLVIMENTO DE SOFTWARE AULA 1

PowerPoint 2010 para o Office 365 para empresas

Eduardo Bezerra. Editora Campus/Elsevier

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Redação do Site Inovação Tecnológica - 28/08/2009. Humanos aprimorados versus humanos comuns

O ESTUDO E A IMPLEMENTAÇÃO DE UMA INTERFACE INTERATIVA PARA ENTRETENIMENTO DIGITAL

Instalando o Operations Manager 2007 Reporting

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

C# - Conexão com MySQL

LINX POSTOS AUTOSYSTEM

Seminário - C# DSO II. Desenvolvimento de Sistemas Orientados a Objetos 2. Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo

Tópicos de Ambiente Web Web Design

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

FUNDAÇÃO ESCOLA TÉCNICA LIBERATO SALZANO VIEIRA DA CUNHA CURSO TÉCNICO EM ELETRÔNICA 3ª SÉRIE DO ENSINO MÉDIO Turma 4323 Trabalho Trimestral de Física

O Gerenciamento de Documentos Analógico/Digital

LÍNGUA PORTUGUESA E LITERATURA BRASILEIRA. Apontar não é falta de educação

Manual do Usuário do Integrador de Notícias de Governo

Virtual Box. Guia. Instalação E Utilização. Criado por Wancleber Vieira wancleber.vieira@ibest.com.br

1 Funções básicas de implementação de arquivos

Programação Orientada a Objetos OOP. IFES Campus Vitória Engenharia Elétrica Professor: Danilo A. Silva

Montagem e Manutenção. Luís Guilherme A. Pontes

DICA PEDAGÓGICA EDUCAÇÃO INFANTIL

Paradigmas de Linguagens de Programação

IMPLEMENTAÇÃO DE ALGORITMOS DE APRENDIZADO MULTI- AGENTE EM UM TIME DE FUTEBOL DE ROBÔS

Computação II Orientação a Objetos

Oficina de Aprendizagem Uso do Movie Maker. Prof.ª: Dr. Maria Lúcia Pozzatti Flôres Organização: Gilberto Raitz Junior

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Sistemas de Informação

Portal do Projeto Tempo de Ser

NT_D1216.SYS DRIVER DA CDA12/16 PARA WINDOWS NT 4.0

Sumário. 1. Instalando a Chave de Proteção Novas características da versão Instalando o PhotoFacil Álbum 4

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

Criação de Formulários através do Access. Como criar formulários no Access para uma tabela do Banco de Dados:

Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos.

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL

Arte em ASCII. Introdução: Python

Criando uma agenda simples com NetBeans 6.5

APOSTILAS DO QUARTO BIMESTRE 8 ANO. TURMA 801 4º Bimestre. Aula 13

Este tutorial tem por objectivo explicar como trabalhar com o Microsoft Office PowerPoint.

VETORES E MATRIZES. By Eduardo Vieira Machado (Good Guy)

Desenvolvendo um Ambiente de Aprendizagem a Distância Utilizando Software Livre

DESENVOLVIMENTO DE SOFTWARE. Introdução ao Visual Studio VB.Net. Programação Estruturada. Prof. Celso Candido ADS / REDES / ENGENHARIA

COMO ADICIONAR BANNER ROTATIVO Portal Ebserh Site dos Hospitais Universitários

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

LINGUAGEM ORIENTADA A OBJETOS

Autoria Multimídia: o uso de ferramentas multimídia no campo educacional

Anelise de Brito Turela Ferrão Universidade Estadual de Campinas - UNICAMP. Edição de um filme a partir de fotografias

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Plano de Trabalho Docente Ensino Técnico

DESENVOLVIMENTODE APLICAÇÕESPARAINTERNET:PHP. VitorFariasCoreia

Visual Basic.NET Programação Orientada a Objetos Lista de Exercícios

Como produzir e publicar uma apresentação online dinâmica (Prezi)

Gerenciamento do ciclo de vida de um documento Simone de Abreu

Módulo 3936 ASP.NET. Financiado pelo FSE

Vejamos um exemplo. Vamos supor que queiramos montar uma tabela 3X2, ou seja de 3 colunas por 2 linhas, o código HTML para isso é :

Desenvolvimento de Aplicações para Internet Aula 7

Cobrança Bancária. Contas / Manutenção.

INSTRUÇÕES DE INSTALAÇÃO

Prefeitura Municipal de Sete Lagoas Secretaria de Planejamento Orçamento e Tecnologia Subsecretaria de Tecnologia da Informação

Controladores Lógicos Programáveis. Automação e Controlo Industrial. Escola Superior de Tecnologia. Ricardo Antunes, António Afonso

HTML Página 1. Índice

Projuris Enterprise Visão Geral da Arquitetura do Sistema

Excel Avançado. Antonio Fernando Cinto Wilson Moraes Góes. Novatec Editora

Primeiros passos das Planilhas de Obra v2.6

Introdução à Engenharia ENG1000

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

O USO DO QR CODE NO ENSINO DA GEOGRAFIA

Exercícios Adicionais

Manual do InCD Reader

Do Word 2007 para o Office 365 para empresas

Criando um carrinho de compras

UNIPAMPA Universidade Federal do Pampa. Núcleo de Tecnologia da Informação (NTI)

Tutorial 1 - Básico do VBA do Excel

Transcrição:

Universidade Federal do Rio de Janeiro Escola Politécnica MBA em Engenharia de Computação Avançada (MBCA) Programação Paralela utilizando o.net Framework 4 Autor: Martius Eduardo Rodriguez Disciplina: Sistemas Avançados de Processamento Distribuídos, Gridding, Paralelo e Multiagentes Professor: Priscila Lima MBCA Julho de 2011 1

Sumário Capítulo 1: Introdução... 4 1.1 Objetivo... 4 1.2 Computação Paralela e.net Framework 4... 4 Capítulo 2: Embasamento Prático... 6 2.1 Namespace... 6 2.2 Parallel.Invoke... 6 2.3 Parallel.For... 8 2.4 Parallel.ForEach... 9 2.5 AsParallel... 10 Capítulo 3: Conclusão... 11 3.1 Conclusão... 11 Bibliografia... 12

Lista de Imagens 1.1 Arquitetura.NET Framework 4................................... 5 2.2 Resultado Parallel.Invoke........................................ 8 2.3 Resultado Parallel.For........................................... 9 2.4 Resultado Parallel.ForEach....................................... 10

Capítulo 1 Introdução 1.1 Objetivo O objetivo deste trabalho é fundamentar os conhecimentos sobre programação paralela usando a tecnologia.net Framework. A programação paralela em.net Framework é algo muito recente, pois esta tecnologia foi introduzida pela Microsoft na versão 3.5, porém aprimorada e acrescentada outras extensões na versão 4.0, dando suporte com o Task Parallel Library (TPL) e Parallel LINQ. 1.2 Computação Paralela e.net Framework 4 Os processadores estão, hoje, com mais de um núcleo. O que significa que podemos rodar aplicações simultaneamente. Ou seja, podemos paralelizar o código que distribuirá o trabalho para vários núcleos. Cada núcleo de um processador pode somente rodar uma tarefa de cada vez, se temos um processador com 4 núcleos podemos rodar 4 tarefas ao mesmo tempo. Sistemas distribuídos como clusters, Massively Parallel Processors (MPP) e grades (Grid) usam vários computadores para trabalhar em uma única tarefa. Arquiteturas paralelas são utilizadas para acelerar tarefas específicas, tarefas que um único computador demoraria anos para realizar. Na imagem 1.1 é possível ver a arquitetura no.net Framework 4.

Imagem 1.1 Arquitetura.NET Framework 4. Fonte: http://msdn.microsoft.com/en-us/library/dd460693.aspx.

Capítulo 2 Embasamento Prático 2.1 Namespace Em primeiro lugar, para começar a utilizar as classes que permitem a paralelizar o código é necessário inserir o namespace que contém estas classes. Para isso iremos inserir na primeira linha do código o comando: Visual Basic Imports System.Threading.Tasks C# using System.Threading.Tasks; Isso lhe permitirá a utilização dos comandos que iremos explicar nesse trabalho (a partir daqui, iremos focar na linguagem Visual Basic): Parallel.Invoke() Parallel.For() Parallel.ForEach() 2.2 Parallel.Invoke O método Invoke é a maneira mais fácil de chamar as funções em paralelo. Esse método só pode ser usado para chamar métodos que não retornam resultado. Veja o exemplo abaixo: Imports System.Threading.Tasks Public Class ClassePP Public Sub main()

Parallel.Invoke(New Action(AddressOf gerarnumeros), New Action(AddressOf gerartexto)) End Sub Public Sub gerarnumeros() Dim i As Integer For i = 0 To 15 Debug.Print("Gerar números: " & i) Next End Sub Private Sub gerartexto() Dim texto As String = "gerartexto" For i = 1 To Len(texto) Debug.Print("Gerar texto: " & Mid(texto, i, 1)) Next End Sub End Class Criamos uma classe chamada de ClassePP e nela adicionamos três procedimentos: main(), gerarnumeros() e gerartexto(). Instanciamos uma nova ação para cada procedimento. Depois usamos o AddressOf que cria uma instância de um delegate apontando o procedimento. Podíamos também criar um Array e jogar todas as ações lá e depois colocá-la como parâmetro para o método Invoke. Outra maneira de utilizar o método Invoke é inserir diretamente o procedimento como uma nova ação, veja: Parallel.Invoke(New Action(Sub() Dim i As Integer For i = 0 To 15 Debug.Print("Gerar números: " & i) Next End Sub), New Action(Sub() Dim texto As String = "gerartexto" For i = 1 To Len(texto) Debug.Print("Gerar texto: " & Mid(texto, i, 1)) Next End Sub)) Veja o resultado na imagem 2.2.

Imagem 2.2 Resultado Parallel.Invoke 2.3 Parallel.For O método For é usado quando a mesma função é utilizada simultaneamente. Veja o exemplo a seguir: Public Sub main() Parallel.For(0, 15, Sub(i) gerarnumerosfor(i)) Dim texto As String = "gerartexto" Parallel.For(1, Len(texto) + 1, Function(i) gerartextofor(texto, i)) End Sub Private Sub gerarnumerosfor(byval i As Integer) Debug.Print("Gerar números: " & i) End Function Private Function gerartextofor(byval texto As String, ByVal i As Integer) Debug.Print("Gerar texto: " & Mid(texto, i, 1)) Return "Funcionou" End Function Veja o resultado na imagem 2.3.

Imagem 2.3 Resultado Parallel.For 2.4 Parallel.ForEach O método ForEach assim como o For é quando a mesma função é utilizada simultaneamente. A diferença é que o ForEach utiliza uma coleção para pecorrer o loop. Veja o exemplo a seguir: Public Sub main() Dim textos() As String = {"g", "e", "r", "a", "r", "t", "e", "x", "t", "o"} Dim numeros() As Integer = Enumerable.Range(0, 14).ToArray() Parallel.ForEach(numeros, Function(i) gerarnumerosforeach(i)) Parallel.ForEach(textos, Sub(texto) gerartextoforeach(texto)) End Sub Private Function gerarnumerosforeach(byval i As Integer) Debug.Print("Gerar números: " & i) Return "Funcionou" End Function Private Sub gerartextoforeach(byval texto As String) Debug.Print("Gerar texto: " & texto) End Sub

(sequencial): No caso dos textos, seria o mesmo que o código abaixo, mas sem o paralelismo For Each texto In textos Debug.Print("Gerar texto: " & texto) Next Veja o resultado na imagem 2.4 Imagem 2.4 Resultado Parallel.ForEach 2.5 AsParallel O método AsParallel é utilizado para paralelizar Queries utilizando a Language Integrated Query (LINQ), tornando as consultas aos bancos de dados mais rápidas. A LINQ foi inspirada na Structured Query Language (SQL), uma linguagem padrão para comunicação com o banco de dados relacionais.

Capítulo 3 Conclusão 3.1 Conclusão No capítulo anterior não foi mencionado o tempo, pois a intenção era mostrar como utilizar os métodos de paralelismo do.net Framework, mas com certeza podemos aprimorar o código e mostrar que na programação paralela ganha-se muito com o tempo e escalabilidade. E quanto mais núcleos ou tarefas paralelas tiver, maior será este ganho.

Bibliografia Sites: http://msdn.microsoft.com/en-us/library/dd460717.aspx - 23/7/2011 http://pt.wikipedia.org/wiki/computa%c3%a7%c3%a3o_paralela 23/7/2011