Programação paralela em SMPs com OpenMP e POSIX Threads: um estudo comparativo

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

Download "Programação paralela em SMPs com OpenMP e POSIX Threads: um estudo comparativo"

Transcrição

1 Programação paralela em SMPs com OpenMP e POSIX Threads: um estudo comparativo Julio Cesar Torelli, Odemir Martinez Bruno 1 Resumo-- Atualmente os métodos de programação paralela mais comuns em arquiteturas MIMD com memória compartilhada são aquele com (i) threading explícito e aquele baseado em (ii) diretivas de compilação. Estes métodos têm como principais representantes as ferramentas POSIX Threads e OpenMP, respectivamente. O objetivo deste trabalho é comparar o desempenho destas duas ferramentas em um SMP. Para isso, utilizamo-las para paralelizar um algoritmo de transformada de distância euclidiana, que é um algoritmo utilizado em processamento de imagens. Os resultados mostram um desempenho superior (menor tempo de execução) para a ferramenta POSIX Threads. Palavras chave-- memória compartilhada, OpenMP, POSIX Threads, programação paralela, SMP. I. INTRODUÇÃO ULTIPROCESSADOR SIMÉTRICO, ou SMP (do M inglês Symmetric MultiProcessor ), é uma arquitetura paralela MIMD com memória compartilhada [1], [2]. SMPs são construídos com processadores de propósito geral que, na maioria das vezes, são conectados à memória por meio de um barramento de tempo compartilhado [2] o uso de outros tipos de circuito de interconexão, como redes crossbar [7] e redes multiestágio [8], [9], é menos comum, por causa do custo mais alto. SMPs são arquiteturas UMA (Uniform Memory Access) [2]-[4], isto quer dizer que todos os processadores têm acesso a todas as posições de memória e que o tempo de acesso é o mesmo para todas as posições. Processamento paralelo em SMPs é feito através de programas (programas paralelos) com múltiplas threads (ou múltiplos processos), que executam simultaneamente, porém independentemente, e cooperam para resolver um problema através da memória. O desenvolvimento de programas paralelos requer, portanto, ferramentas que possibilitem a criação das threads, e que implementem os mecanismos usados na sincronização destas threads. As ferramentas de programação paralela mais comuns em SMPs atualmente são aquelas com (i) threading explícito e as (ii) baseadas em diretivas de compilação [5]: Os autores são gratos ao CNPq pelo apoio financeiro, Julio Cesar Torelli (processo /2004-0) e Odemir Martinez Bruno (processo /01-5). - Julio Cesar Tomelli ( julio@icmc.usp.br) - Odemir Martinez Bruno ( bruno@icmc.usp.br) Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo, São Carlos (SP), Brasil A. Programação paralela com threading explícito O programador cria explicitamente múltiplas threads dentro de um mesmo processo e divide, também explicitamente, o trabalho (tarefas) a ser realizado pelo programa entre estas threads. Assim como a criação, a sincronização das threads é de total responsabilidade do programador a sincronização é em geral realizada através de mecanismos como mutexes, semáforos e variáveis de condição [6]. A ferramenta de programação paralela com threading explícito mais utilizada atualmente é a POSIX Threads na verdade POSIX Threads é apenas uma especificação de uma biblioteca; implementações desta especificação são, em geral, realizadas pelos fabricantes de sistemas operacionais. B. Programação paralela baseada em diretivas O programador utiliza diretivas de compilação, inserido-as no código da aplicação seqüencial, para indicar as partes deste código que devem ser paralelizadas. Com base nestas diretivas o compilador gera o código paralelo; portanto, é necessário um compilador especial, ou seja, um compilador capaz de entender as diretivas e gerar o código multi-threaded (com múltiplas threads). A distribuição de trabalho entre as threads pode ser feita pelo compilador (é o caso, por exemplo, da diretiva parallel for do OpenMP, que é apresentada na Seção 3 deste texto) e/ou pelo programador (é o caso, por exemplo, da diretiva parallel do OpenMP, que também é apresentada na Seção 3). Entretanto, a criação das threads é responsabilidade do compilador. A sincronização é, em partes, feita pelo compilador. A ferramenta de programação paralela baseada em diretivas de compilação de maior sucesso na atualidade é a OpenMP da mesma forma que POSIX Threads, OpenMP é apenas uma especificação; implementações desta especificação são realizadas por fabricantes de compiladores e sistemas operacionais. O objetivo deste trabalho é comparar o desempenho das ferramentas POSIX Threads e OpenMP. Para isso, desenvolvemos uma versão paralela do algoritmo de transformada da distância euclidiana de Saito e Toriwaki [16] e implementamos este algoritmo em C com POSIX Threads e OpenMP. Os programas paralelos foram implementados em um SMP Sun Fire 3800 com sistema operacional Solaris 5.8 e quatro processadores UltraSPARC III. Tais programas foram executados com imagens binárias de diferentes tamanhos. O restante deste artigo está organizado da seguinte forma. Na seção 2 é feita uma pequena introdução à 486

2 ferramenta/especificação POSIX Threads. Na seção 3 é feita uma pequena introdução à ferramenta/especificação OpenMP. Na seção 4 é apresentado o algoritmo de transformada de distância euclidiana seqüencial de Saito e Toriwaki. Ainda na seção 4 descrevemos como nós paralelizamos este algoritmo. Finalmente, na seção 5, relatamos os resultados obtidos com os programas POSIX Threads e OpenMP. II. POSIX THREADS POSIX Threads, ou simplesmente Pthreads, é um padrão, criado pelo IEEE (IEEE Std c) [13] em 1995, que define uma API (application program interface) para o desenvolvimento de aplicações multi-threaded. Desde então, diversos fabricantes têm incluído suporte a este padrão, entre eles Sun, HP, DEC e SGI. A API é formada por aproximadamente 60 funções que possibilitam a criação, suspensão e término de threads, bem como a sincronização e o controle do escalonamento destas threads. Atualmente ela pode ser utilizada apenas com as linguagens C e C+ [10]. A. Modelo de programação O programa inicia com uma única thread, usualmente chamada thread principal ou mestre (esta é a thread que executa a função main do programa C). Outras threads são então criadas explicitamente pelo programador através da função pthread_create, que tem como parâmetro o nome de uma função para a thread executar. Um programa paralelo desenvolvido com Pthreads consiste, portanto, de um conjunto de threads que executam o código dentro de uma ou mais funções definidas pelo usuário. Cada thread executa independentemente das demais até o término da função que lhe foi designada ou até a realização de uma chamada à função pthread_exit, quando então é destruída. III. OPENMP O OpenMP é um padrão criado e mantido por uma organização independente, openmp.org 2, que especifica um conjunto de diretivas de compilação, funções e variáveis de ambiente para a programação paralela em arquiteturas com memória compartilhada nas linguagens Fortran 77, Fortran 90, C e C++ [11]. A primeira versão deste padrão, OpenMP 1.0, foi publicada em Em 2000, para Fortran, e em 2002, para C/C++, foi publicada a versão 2.0, que é a versão atualmente utilizada. O OpenMP é suportado por diversos fabricantes, tais como Sun, SGI e KAI. A. Modelo de programação A paralelização é realizada com múltiplas threads (dentro de um mesmo processo) em um modelo fork-join de execução (Fig. 1). O programa inicia com uma única thread, chamada thread mestre, que executa sozinha até encontrar uma região paralela 3. Neste ponto do programa é criado (fork) um grupo de threads. Então, todas as threads do grupo, inclusive a thread mestre, executam o código dentro desta região. Quando Parte do código que deve ser executada por múltiplas threads. as threads completam a execução do código na região paralela elas se sincronizam (join) e, com exceção da thread mestre, terminam. A execução então continua seqüencialmente com a thread mestre até que ela encontre uma nova região paralela ou até que o programa termine [12]. Fig. 1. Modelo de programação OpenMP. Na figura, foram definidas duas regiões paralelas, A e B, que são executadas por cinco e três threads, respectivamente. Diferente de Pthreads, o código responsável pela criação das threads é gerado pelo compilador; o programador apenas define, através de diretivas, onde isto deve acontecer isto é, define as regiões paralelas. B. Diretivas Uma diretiva consiste de uma linha de código com significado especial para o compilador. As diretivas OpenMP, nas linguagens C e C++, são identificadas pela sentinela #pragma omp. O OpenMP especifica diretivas para a paralelização de dois tipos: (i) laços e (ii) regiões [11]. 1) Paralelização de laços: a paralelização de laços for é feita de uma forma bastante simples através da diretiva parallel for, conforme ilustrado em Fig. 2: 01. #pragma omp parallel for 02. { 03. for(i = 1; i <= n; i++) 04. a[i] = a[i] * b[i - 1]; 05. } Fig. 2. Paralelização de laços A diretiva #pragma omp parallel for informa ao compilador que devem ser criadas t threads para executar as i iterações do laço dentro dela (o número de threads pode ser definido pelo programador através da função omp_set_num_threads ou através da variável de ambiente OMP_NUM_THREADS). Em geral, o comportamento desta diretiva será o seguinte: cada thread executará aproximadamente i/t iterações. No código anterior, por exemplo, se i = 101 e t = 2, a primeira thread executará as iterações de i = 1,..., 51 e a segunda as iterações de i = 52,..., 101. Note que a divisão das iterações do laço entre as threads é feita automaticamente pelo compilador. 2) Paralelização de regiões: diferente da parallel for, a diretiva parallel pode ser utilizada para paralelizar 487

3 qualquer parte do código e não apenas laços. Este tipo de paralelismo é muito parecido com aquele obtido com Pthreads, mas a sua programação é facilitada pelo uso de diretivas, conforme ilustrado em Fig. 3:. 20. omp_set_num_threads(3); #pragma omp parallel private(t_rank) 23. { 24. t_rank = omp_get_thread_num(); if (t_rank == 0) 27. executa_funcao_a() 28. elseif (t_rank == 1) 29. executa_funcao_b() 30. else 31. executa_funcao_c() 32. } Fig. 3. Paralelização de regiões No código em Fig. 3 foi utilizada a função omp_set_num_threads (linha 20) para informar ao compilador que a região paralela subseqüente (linha 24 a 31) deve ser executada por 3 threads. Note que cada thread em uma região paralela é identificado por um rank e que em uma região com t threads os ranks vão de 0 a t 1 (para descobrir o rank de uma thread utiliza-se a função omp_get_thread_num). Neste código, utilizou-se a estrutura de decisão if e o rank das threads para se delegar a execução de uma função diferente para cada thread. IV. ESTUDO DE CASO: TRANSFORMADA DE DISTÂNCIA EUCLIDIANA A transformada da distância euclidiana (TDE) [14]-[16] é a operação que computa o mapa de distâncias euclidianas de uma imagem binária 4. Em outras palavras: dada uma imagem binária I contendo um objeto O (conjunto de pontos cujo valor é 1), a TDE gera uma imagem M, que é chamada mapa de distâncias euclidianas, cujo valor em cada ponto p é a menor distância euclidiana entre p e O, o que corresponde à distância euclidiana D e entre p = (x, y) e o ponto mais próximo q = (i, j) O: onde, M(p) = min {D e (p, q) I(q) = 1} (1) 2 D e (p,q) = (x - i) + (y - j) (2) A TDE é utilizada em diversas aplicações de diversas áreas, tais como robótica para o planejamento de trajetória de robôs [17], processamento e análise de imagens em operações como dilatação e erosão [18], esqueletização [19], diagramas de voronoi [15], segmentação watershed [20], cálculo de dimensão fractal [21], [22] entre outras. Em Fig. 4 Imagem onde um ponto pode armazenar o valor 0 ou o valor 1. Os pontos cujo valor é 1 representam o(s) objeto(s) nesta imagem; os pontos cujo valor é 0 formam o fundo (background) da imagem. 2 4 (b) é ilustrado o mapa de distâncias euclidianas obtido a partir da imagem binária mostrada em Fig. 4 (a). (a) Fig. 4. Mapa de distâncias euclidianas. (a) Imagem binária I; (b) mapa de distâncias euclidianas de I. A. Algoritmos A forma mais simples de se obter o mapa de distâncias de uma imagem binária é utilizando o algoritmo que chamaremos aqui de força-bruta, que funciona da seguinte forma: para cada ponto p com valor 0 na imagem I, calcula-se a sua distância euclidiana em relação a todos os pontos com valor 1. O valor do mapa, em p, será a menor entre todas as distâncias calculadas. Para uma imagem bidimensional n n com z pontos 0 e, conseqüentemente, n2 z pontos 1, o número total de comparações, com o algoritmo força-bruta, será z * (n2 z). Se metade dos pontos da imagem tiver valor 0, z = n2 / 2, o número total de comparações será n2 / 2 * (n2 (n2 / 2) ) = n4 / 4. Assim, o algoritmo força-bruta terá, no pior caso, complexidade de tempo O(n4). Entretanto, desde 1980 [23] se tem pesquisado formas (algoritmos) menos custosas de se computar o mapa de distâncias de uma imagem. Diversos algoritmos foram propostos, muitos deles com complexidade O(n3) para imagens n n. Recentemente algoritmos ótimos, O(n2), também foram apresentados. Neste trabalho paralelizamos um algoritmo de TDE bastante famoso, que foi proposto por Saito e Toriwaki em 1994 [16]. B. O algoritmo seqüencial de Saito e Toriwaki O algoritmo de Saito e Toriwaki computa o mapa de distâncias de uma imagem 2D n m fazendo duas transformações 1D: Transformação 1: para cada ponto (x, y) da imagem binária de entrada I é calculada (e armazenada no ponto correspondente do mapa) a sua distância euclidiana quadrada 5 até o ponto com valor 1 mais próximo na linha x, ou seja, até o ponto 1 mais próximo na mesma linha que (x, y): (x, y) = min {(y j) 2 ; (x, j) = 1, 0 j m 1} (3) O resultado desta transformação para a imagem mostrada 5 D E (p, q) = (p x - q x ) 2 + (p y - q y ) 2 ; muitos algoritmos utilizam a distância euclideana quadrada para evitar operações em ponto flutuante. (b) 488

4 em Fig. 5 (a) é ilustrado em Fig. 5 (b). (a) Fig. 5 Transformação 1. (a) Imagem binária de entrada I; (b) mapa de distâncias de I após a transformação 1. Transformação 2: faz-se uma nova transformação, agora na direção do eixo x, sobre o mapa de distâncias resultante da transformação 1. Para calcular a distância de cada ponto (x, y) são utilizados os valores armazenados na coluna y do mapa, da seguinte forma: (x, y) = min { (i, y) + (x - i) 2 ; 0 i n 1} (4) É mais simples entender tal transformação através da ilustração em Fig. 6. Esta figura ilustra a execução da transformação 2 do algoritmo para um ponto (x, y) (este procedimento irá se repetir em todos os pontos da imagem, com exceção dos pontos 1): (b) simultaneamente. O algoritmo da transformação 2 é da mesma forma aplicado em cada coluna da imagem e também poderia ser aplicado em todas as colunas em paralelo. C. O algoritmo paralelo Nesta seção descrevemos como nós paralelizamos o algoritmo de Saito e Toriwaki. Basicamente, nosso algoritmo divide a imagem, em pedaços de igual tamanho, entre os processadores do sistema. Para facilitar a apresentação do algoritmo paralelo, nós o dividimos em estágios que são descritos a seguir e ilustrados em Fig. 7. Primeiro, a imagem binária I é lida por um processador (thread) mestre. Depois (estágio 2), esta imagem é dividida horizontalmente, pelo processador mestre, em pedaços de igual tamanho. Por exemplo, se a imagem I contém oito linhas e o SMP quatro processadores, ela será dividida em quatro pedaços com duas linhas cada. Então (terceiro estágio), cada processador (incluindo o mestre) executa a transformação 1 do algoritmo de Saito e Toriwaki sobre as linhas no seu pedaço da imagem. O quarto estágio consiste de uma sincronização do tipo barreira [6], onde cada processador aguarda os demais terminarem o estágio 3. Então (quinto estágio), o processador mestre divide verticalmente, em pedaços de igual tamanho, a imagem resultante do estágio 3. Após isto, no estágio 6, cada processador executa a transformação 2 sobre as colunas do seu pedaço da imagem. Após o estágio 6 tem-se o mapa de distâncias da imagem, que em Fig. 7 é representado como um imagem em tons de cinza, onde a cor em cada ponto é proporcional à distância armazenada neste ponto. Fig. 6. Transformação 2 para um ponto (x, y). Para calcular a distância do ponto (x, y): (1º) considere toda a coluna a qual ele pertence, ou seja, a coluna y (na figura esta coluna é destacada em serrilhados); (2º) some em cada ponto desta coluna a distância euclidiana quadrada deste ponto até o ponto (x, y) (isto corresponde à (x i) 2 ); (3º) entre os resultados de todas as somas, escolha o de menor valor (na figura o menor é 2); este é o valor da distância que deve ser armazenada em (x, y). Não descreveremos aqui detalhes da implementação do algoritmo (transformação 1 + transformação 2) de Saito e Toriwaki; maiores detalhes podem ser encontrados em [16]. Apenas é importante comentar que, o algoritmo da transformação 1 é aplicado em cada linha da imagem, uma após a outra, e que não existe dependência entre os dados de linhas diferentes. Portanto, em principio, seria possível fazer a transformação 1 em todas as linhas da imagem Fig. 7 Estratégia de paralelismo V. RESULTADOS Nesta seção descrevemos com maiores detalhes o ambiente computacional utilizado na implementação do algoritmo paralelo e os resultados obtidos. 489

5 A. O ambiente computacional O algoritmo foi implementado em um SMP Sun Fire 3800 com sistema operacional Solaris 5.8, quatro processadores UltraSPARC III 750MHz e 4GB de memória RAM. Tanto o programa POSIX Threads quanto o programa OpenMP foram compilados com o compilador C (cc) do pacote Sun Workshop 6 update 2. B. Os resultados Os programas foram executados com imagens 2D de diferentes tamanhos, , , , , Executamos o programa seqüencial, o programa paralelo POSIX Threads e o programa paralelo OpenMP cinco vezes com cada imagem. Obtivemos então a média dos tempos de execução com cada imagem e calculamos os speedups (5) que são apresentados no gráfico em Fig. 8. Ts speedup = (5) T onde, T s é o tempo do programa seqüencial e T p é o tempo do programa paralelo. p Fig. 8. Resultados POSIX Threads OpenMP Os resultados mostram o desempenho superior da biblioteca POSIX Threads. VI. CONCLUSÃO Utilizando a biblioteca POSIX Threads e o compilador OpenMP cc disponíveis no sistema operacional Solaris 5.8, POSIX Threads apresentou melhor desempenho que OpenMP. Vale lembrar que tanto POSIX Threads quanto o OpenMP são apenas especificações e que, se forem utilizadas implementações diferentes das empregadas neste trabalho (por exemplo, outro compilador OpenMP), ou mesmo outro sistema operacional, os resultados podem ser diferentes. REFERÊNCIAS BIBLIOGRÁFICAS [1] R. Duncan, "A Survey of Parallel Computer Architectures," IEEE Computer, v. 23, n. 2, pp. 5-16, [2] W. Stallings, Arquitetura e organização de computadores: projeto para o desempenho, 5ed. São Paulo: Prentice Hall, [3] D. E. Culler, J. P. Singh e A. Gupta, Parallel computer architecture: a hardware/software approach. San Francisco: Morgan Kaufmann Publishers, [4] D. A. Patterson, J. L. Hennessy e D. Goldberg, Computer architecture: a quantitative approach. San Francisco: Morgan Kaufmann Publishers, [5] The National Center for Supercomputing Applications. (27 março 2004). Multilevel Parallel Programming. [Online]. Disponível em: [6] A. S. Tanenbaum, Modern Operating Systems, 2ed. Upper Saddle River, N.J.: Prentice Hall, [7] K. Hwang, Advanced computer architecture: parallelism, scalability, programmability. New York: Mcgraw-Hill, [8] G. S. Almasi e A. Gottlieb, Highly parallel computing, 2ed. Redwood City: Benjamin/Cummings, [9] A. S. Tanenbaum e J. R. Goodman, Structured computer organization, 4ed. Upper Saddle River, N.J.: Prentice Hall, [10] Laurence Livemore National Laboratory (29 março 2004). POSIX Threads. [Online] Disponível em: [11] The National Center for Supercomputing Applications. (17 agosto 2003). Introduction to OpenMP. [Online]. Disponível em: [12] Laurence Livemore National Laboratory (29 março 2004). OpenMP. [Online].Disponível em: [13] IEEE Computer Society (01 outubro 2003). A Backgrounder on IEEE Std , 2003 Edition. [Online]. Disponível em: [14] O. Cuisenaire, Distance Transformations: fast algorithms and applications to medical imaging, Tese (Doutorado), Laboratoire de telecommunications et teledetection, Université catholique de Louvain, Louvain-la-Neuve (Bélgica), [15] Q. Z. Ye, The signed euclidean distance transform and its applications, in Proc Int. Conference on Pattern Recognition, pp [16] T. Saito e J. I. Toriwaki, New Algorithms for Euclidean Distance Transformation of an n-dimensional Digitized Picture with applications, Pattern Recognition, v. 27, n. 11, pp , [17] A. Zeilinsky, A Mobile Robot Navigation Exploration Algorithm, IEEE Transactions of Robotics and Automation, v. 8, n. 6, pp , [18] J. Russ, The image processing handbook, 4ed. Boca Raton, FL: CRC Press, [19] F. Y. Shih e C. C. Pu, A Skeletonization Algorithm by Maxima Tracking on Euclidean distance transform, Pattern Recognition, v. 28, n. 3, pp , 1995 [20] L. Vicente e P. Soille, Watersheds in digital spaces: an efficient algorithm based on immersion simulations, IEEE Transactions on Pattern Analysis and Machine Intelligence, v. 13, n. 6, pp , [21] C. Tricot, Curves and Fractal Dimension. New York: Springer-Verlag, [22] L. F. Costa e A. G. C. Bianchi, A dimensão da dimensão Fractal, Ciência Hoje, v. 31, n. 183, pp , [23] P. E. Danielsson, Euclidean distance mapping, Computer Graphics and Image Processing, v. 14, pp , BIOGRAFIAS Julio Cesar Torelli recebeu o título de técnico em processamento de dados pelo Colégio Técnico Industrial da Universidade Estadual Paulista (CTI-UNESP) em Em 2002 graduou-se em tecnologia em informática pela Faculdade de Tecnologia de Jaú (FATEC-Jaú) e atualmente é aluno de mestrado no programa de pós-graduação em ciências de computação e matemática computacional do Instituto de Ciências Matemáticas e de Computação da Universidade de São Paulo (ICMC-USP), onde trabalha na 490

6 paralelização de algoritmos de transformada de distância euclidiana em agregados de computadores (clusters) e multiprocessadores simétricos. Odemir Martinez Bruno atua como professor e pesquisador no Instituto de Ciências Matemáticas e de Computação da Universidade de São Paulo (ICMC-USP) desde Ele graduou como bel. em Ciência da Computação em Recebeu o título de mestre em física aplicada em 1995, trabalhando com instrumentação eletrônica junto ao Instituto de Física de São Carlos da Universidade de São Paulo (IFSC-USP). Em 2000 concluiu o doutorado em física aplicada estudando paralelismo em visão natural e artificial, na área de visão cibernética do IFSC-USP. Seus principais interesses em pesquisa são: visão natural e artificial, análise de imagens, reconhecimento de padrões, biotecnologia, bioinformática e computação paralela. 491

OpenMP: Variáveis de Ambiente

OpenMP: Variáveis de Ambiente Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de

Leia mais

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel OpenMP Slides baseados em tutorial de Tim Mattson da Intel O que é OpenMP? Uma especificação para um conjunto de diretivas de compilação, rotinas de biblioteca e variáveis de sistema que podem ser utilizadas

Leia mais

Introdução OpenMP. Nielsen Castelo Damasceno

Introdução OpenMP. Nielsen Castelo Damasceno Introdução OpenMP Nielsen Castelo Damasceno Computação de auto desempenho Processamento Paralelo Memória Distribuída e Compartilhada Modelo de programação OpenMP Métricas de Desempenho Computação de auto

Leia mais

UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1

UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1 UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1 Eldair F. Dornelles 2, Henrique A. Richter 3, Miquéias F. M. Trennepohl 4, Taís T. Siqueira

Leia mais

Bibliografia. OpenMP. Disponibilidade de OpenMP. Abordagem SPMD. Nicolas Maillard

Bibliografia. OpenMP. Disponibilidade de OpenMP. Abordagem SPMD. Nicolas Maillard Bibliografia Nicolas Maillard nicolas@inf.ufrgs.br Instituto de Informática Universidade Federal do Rio Grande do Sul home-page: http://www.openmp.org/presentations Parallel Programming in. R. Chandra

Leia mais

Sistemas Distribuídos e Paralelos

Sistemas Distribuídos e Paralelos Sistemas Distribuídos e Paralelos Aula #6: Programação paralela em sistemas de memória compartilhada. ISUTIC - 2016 Eng. Alexander Rodríguez Bonet Aula de hoje Regiões paralelas. Cláusulas de âmbito. Partilha

Leia mais

SSC510 Arquitetura de Computadores. 6ª aula

SSC510 Arquitetura de Computadores. 6ª aula SSC510 Arquitetura de Computadores 6ª aula PARALELISMO EM NÍVEL DE PROCESSOS PROFA. SARITA MAZZINI BRUSCHI Tipos de Paralelismo Instrução (granulosidade fina) Paralelismo entre as instruções Arquiteturas

Leia mais

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

Programação de Alto Desempenho - 2. Prof: Carla Osthoff Programação de Alto Desempenho - 2 Prof: Carla Osthoff E-mail: osthoff@lncc.br 3- Modelos de programação paralela Shared Memory/Threads Posix Win32 treads OpenMP Message Passing MPI Data Parallel OpenCL/Cuda

Leia mais

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

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA

Leia mais

SSC0611 Arquitetura de Computadores

SSC0611 Arquitetura de Computadores SSC0611 Arquitetura de Computadores 1ª Aula Apresentação e Introdução da disciplina Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br 1 Objetivos Familiarização dos estudantes com arquiteturas paralelas

Leia mais

Disciplina de. Organização de Computadores Digitais

Disciplina de. Organização de Computadores Digitais USP - ICMC - SSC SSC 0511 - Sist. Informação - 2o. Semestre 2014 Disciplina de Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

Disciplina de. Organização de Computadores Digitais

Disciplina de. Organização de Computadores Digitais USP - ICMC - SSC SSC 0511 - Sist. Informação - 2o. Semestre 2014 Disciplina de Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

Introdução ao OpenMP

Introdução ao OpenMP Introdução ao OpenMP Threads em CPU multicore Rogério A. Gonçalves 1,2 Alfredo Goldman 2 1 Departamento de Computação (DACOM) Universidade Tecnológica Federal do Paraná (UTFPR) 2 Departamento de Ciência

Leia mais

Disciplina de Organização de Computadores Digitais

Disciplina de Organização de Computadores Digitais USP - ICMC - SSC SSC 0511 - Sist. Informação - 2o. Semestre 2015 Disciplina de Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

Paralelismo em Computadores com Tecnologia Multicore

Paralelismo em Computadores com Tecnologia Multicore IFRN - Pau dos Ferros Pau dos Ferros/RN, 25 de fevereiro de 2016 O minicurso Descrição: Para se utilizar os vários núcleos de processamento disponíveis nos computadores atuais de forma eficiente, faz necessário

Leia mais

Análise do desempenho da transformada de Hough paralela em arquiteturas de memória compartilhada

Análise do desempenho da transformada de Hough paralela em arquiteturas de memória compartilhada Análise do desempenho da transformada de Hough paralela em arquiteturas de memória compartilhada CHRISTIAN CESAR BONES 1 ODEMIR MARTINEZ BRUNO 1 USP - Universidade de São Paulo ICMC - Instituto de Ciências

Leia mais

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMÁTICA

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMÁTICA PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMÁTICA DEPARTAMENTO: Fundamentos da Computação CURSO: Ciência da Computação DISCIPLINA: Organização e Arquitetura de Computadores

Leia mais

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

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES João Ricardo Kohler Abramoski (PAIC/FUNDAÇÃO ARAUCÁRIA), Sandra Mara Guse Scós Venske (Orientadora), e-mail: ssvenske@unicentro.br

Leia mais

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

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1 COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1 Márcia Da Silva 2, Igor Gamste Haugg 3, Eliézer Silveira Prigol 4, Édson L. Padoin 5, Rogério S. M. Martins

Leia mais

Implementação paralela da transformada de distância euclidiana exata. Julio Cesar Torelli

Implementação paralela da transformada de distância euclidiana exata. Julio Cesar Torelli Implementação paralela da transformada de distância euclidiana exata Julio Cesar Torelli Implementação paralela da transformada de distância euclidiana exata Julio Cesar Torelli Orientador: Prof. Dr. Odemir

Leia mais

for(int x=0; x < width; x++) { for(int y=0; y < height; y++) { finalimage[x][y]=renderpixel(x,y, &scenedata); } }

for(int x=0; x < width; x++) { for(int y=0; y < height; y++) { finalimage[x][y]=renderpixel(x,y, &scenedata); } } Paralelização em OpenMP Identifique os loops pesados ; Distribua-os: Versão sequencial double res[10000]; calculo_pesado(&res[i]); Versão paralela double res[10000]; for calculo_pesado(&res[i]); OMP for

Leia mais

Disciplina de Arquitetura de Computadores

Disciplina de Arquitetura de Computadores USP - ICMC - SSC SSC 0510 - Informática - 2o. Semestre 2010 Disciplina de Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

ANÁLISE DE DESEMPENHO COM A PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PERFEITOS 1

ANÁLISE DE DESEMPENHO COM A PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PERFEITOS 1 ANÁLISE DE DESEMPENHO COM A PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PERFEITOS 1 Éder Paulo Pereira 2, Gilberto Przygoda Marmitt 3, Emilio Hoffmann De Oliveira 4, Edson Luiz Padoin 5, Carlos Eduardo Das Chagas

Leia mais

Programação em Paralelo OpenMP

Programação em Paralelo OpenMP Programação em Paralelo OpenMP N. Cardoso & P. Bicudo Física Computacional - MEFT 2012/2013 N. Cardoso & P. Bicudo Programação em Paralelo: OpenMP 1 / 15 Introdução Potencial do GPU vs CPU Cálculo: 367

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO Prof. Bosco 1. Sockets - Indicar (Verdade/Falso): (a) (Verdade/Falso) Sockets são abstrações utilizadas nos protocolos de comunicação

Leia mais

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

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot Bruno Pereira dos Santos Dany Sanchez Dominguez Esbel Tomás Evalero Orellana Universidade Estadual de Santa Cruz Roteiro Breve introdução

Leia mais

Multiprogramação leve em arquiteturas multi-core

Multiprogramação leve em arquiteturas multi-core Multiprogramação leve em arquiteturas multi-core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas Sumário Arquiteturas multi-core Programação multithread Ferramentas de programação

Leia mais

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD Universidade Federal do Rio de Janeiro Informática DCC/IM Arquitetura de Computadores II Arquiteturas MIMD Arquiteturas MIMD As arquiteturas MIMD dividem-se em dois grandes modelos: Arquiteturas MIMD de

Leia mais

Arquitetura de Computadores. Processamento Paralelo

Arquitetura de Computadores. Processamento Paralelo Arquitetura de Computadores Processamento Paralelo 1 Multiprogramação e Multiprocessamento Múltiplas organizações de computadores Single instruction, single data stream - SISD Single instruction, multiple

Leia mais

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

SSC PROGRAMAÇÃO CONCORRENTE. Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella SSC- 0143 PROGRAMAÇÃO CONCORRENTE Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella Créditos Os slides integrantes deste material foram construídos a par4r dos conteúdos relacionados

Leia mais

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação MULTIPROCESSADORES

Leia mais

Construtores de Sicronização em OpenMP

Construtores de Sicronização em OpenMP Construtores de Sicronização em OpenMP Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Classificação de Flynn Fonte: Professoras. Sarita UFRJ e Thais V. Batista - UFRN Arquiteturas Paralelas Computação Paralela Conceitos Permite a execução das tarefas em menor tempo,

Leia mais

Sistemas Digitais INE 5406

Sistemas Digitais INE 5406 Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Sistemas Digitais INE 5406 Aula 10-P Refinamento das especificações

Leia mais

Disciplina de Arquitetura de Computadores

Disciplina de Arquitetura de Computadores USP - ICMC - SSC SSC 0510 - Informática - 2o. Semestre 2009 Disciplina de Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (a) (Verdade/Falso) A comunicação entre processos consiste em transmitir uma mensagem entre o

Leia mais

XV ESCOLA REGIONAL DE ALTO DESEMPENHO ERAD 2015

XV ESCOLA REGIONAL DE ALTO DESEMPENHO ERAD 2015 XV ESCOLA REGIONAL DE ALTO DESEMPENHO ERAD 2015 Impacto das Interfaces de Programação Paralela e do Grau de Paralelismo no Consumo Energético de uma Aplicação Thayson R. Karlinski, Arthur F. Lorenzon,

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de

Leia mais

Ferramentas para Programação em Processadores Multi-Core

Ferramentas para Programação em Processadores Multi-Core Ferramentas para Programação em Processadores Multi-Core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas Sumário Introdução Arquiteturas multi-core Ferramentas de programação Prática

Leia mais

Introdução à OpenMP (Dia 1) Prof. Guido Araujo

Introdução à OpenMP (Dia 1) Prof. Guido Araujo Introdução à OpenMP (Dia ) Prof. Guido Araujo www.ic.unicamp.br/~guido Roteiro Escrevendo programas usando OpenMP Usando OpenMP para paralelizar laços seriais com pequenas mudanças no código fonte Explorar

Leia mais

Arquitetura de Sistemas Digitais

Arquitetura de Sistemas Digitais Universidade Federal do Amazonas Faculdade de Tecnologia Departamento de Eletrônica e Computação Arquitetura de Sistemas Digitais Lucas Cordeiro lucascordeiro@ufam.edu.br Notas de Aula Os slides deste

Leia mais

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

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core RSS-Verão-01/08 p.1/36 Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7 Escola de Verão 2008 Arquiteturas Multi-Core Renato S. Silva LNCC - MCT Janeiro de 2008 RSS-Verão-01/08 p.2/36 Objetivo:

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (a) (Verdade/Falso) Sockets são abstrações utilizadas nos protocolos de comunicação UDP e TCP,

Leia mais

CIC Organização e Arquitetura de Computadores. Prof. Ricardo Jacobi Notas de Aula: Prof. Gerson Henrique Pfitscher

CIC Organização e Arquitetura de Computadores. Prof. Ricardo Jacobi Notas de Aula: Prof. Gerson Henrique Pfitscher CIC - 116394 Organização e Arquitetura de Computadores Prof. Ricardo Jacobi Notas de Aula: Prof. Gerson Henrique Pfitscher Entender o funcionamento interno dos computadores não é uma tarefa simples para

Leia mais

1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador

1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador 1 Introdução 1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador possa resolver problemas de forma automática

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores Arquitetura de Computadores Prof. Eduardo Simões de Albuquerque Instituto de Informática UFG 1o. Semestre / 2006 Adaptado do material do prof. Fábio Moreira Costa Programa e Introdução Assunto do curso

Leia mais

PLANO DE ENSINO. Disciplina

PLANO DE ENSINO. Disciplina PLANO DE ENSINO PERÍODO LETIVO/ANO: 2007 ANO DO CURSO: 3 O. ano Curso:Ciência da Computação Modalidade:Bacharelado Centro: Engenharias e Ciências Exatas Campus: Foz do Iguaçu Turno:Integral Código Disciplina

Leia mais

OpenMP. Adaptado do Material do Calebe de Paula Bianchini

OpenMP. Adaptado do Material do Calebe de Paula Bianchini OpenMP Adaptado do Material do Calebe de Paula Bianchini calebe.bianchini@mackenzie.br HelloWorld #pragma omp parallel // Code inside this region runs in parallel. printf("hello!\n"); 2 O que é OpenMP*?

Leia mais

What is? Eduardo Viola Nicola Disciplina de IPPD

What is? Eduardo Viola Nicola Disciplina de IPPD What is? Eduardo Viola Nicola evnicola@inf.ufpel.edu.br Disciplina de IPPD Sumário 1)Introdução 2)Princípio Geral de Funcionamento 3)Exemplos de Aplicações 4)Modelo de Programação 5)Linguagens Suportadas

Leia mais

Organização de Computadores II. Arquiteturas MIMD

Organização de Computadores II. Arquiteturas MIMD Organização de Computadores II Arquiteturas MIMD Arquiteturas UMA Arquiteturas com memória única global. Tempo de acesso uniforme para todos os nós de processamento. Nós de processamento e memória interconectados

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (a) (Verdade/Falso) A comunicação entre processos consiste em transmitir uma mensagem entre o

Leia mais

Intel Thread Building Blocks (TBB)

Intel Thread Building Blocks (TBB) Intel Thread Building Blocks (TBB) MCZA020-13 - Programação Paralela Emilio Francesquini e.francesquini@ufabc.edu.br 2019.Q1 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Disclaimer

Leia mais

Agenda. O que é OpenMP? Regiões Paralelas Construtores para Compartilhamento de

Agenda. O que é OpenMP? Regiões Paralelas Construtores para Compartilhamento de Programando OpenMP Agenda O que é OpenMP? Regiões Paralelas Construtores para Compartilhamento de Trabalho Montando um escopo de dados para proteger de condições de corrida Cláusulas de agendamento O que

Leia mais

PARALELIZAÇÃO DE ALGORITMO DE INSPEÇÃO DE ROTAS UTILIZANDO PERMUTAÇÃO LEXICOGRÁFICA 1

PARALELIZAÇÃO DE ALGORITMO DE INSPEÇÃO DE ROTAS UTILIZANDO PERMUTAÇÃO LEXICOGRÁFICA 1 PARALELIZAÇÃO DE ALGORITMO DE INSPEÇÃO DE ROTAS UTILIZANDO PERMUTAÇÃO LEXICOGRÁFICA 1 Jessica De Almeida Berlezi 2, Janiel Ceretta Foletto 3, Edson Luiz Padoin 4, Rogério S. M. Martins 5. 1 Trabalho realizado

Leia mais

Introdução à Computação: Sistemas de Computação

Introdução à Computação: Sistemas de Computação Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,

Leia mais

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Filipo Mór WWW.FILIPOMOR.COM - REVISÃO ARQUITETURAS PARALELAS Evolução das Arquiteturas Evolução das Arquiteturas Entrada CPU Saída von

Leia mais

Computação Paralela (CUDA)

Computação Paralela (CUDA) Universidade Federal do Amazonas Faculdade de Tecnologia Departamento de Eletrônica e Computação Computação Paralela (CUDA) Hussama Ibrahim hussamaibrahim@ufam.edu.br Notas de Aula Baseado nas Notas de

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (a) (Verdade/Falso) Sockets são abstrações utilizadas nos protocolos de comunicação UDP e TCP,

Leia mais

SSC0611 Arquitetura de Computadores

SSC0611 Arquitetura de Computadores SSC0611 Arquitetura de Computadores 20ª Aula Arquiteturas Paralelas Arquitetura MIMD com Memória Compartilhada Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Arquiteturas MIMD As arquiteturas MIMD dividem-se

Leia mais

INE5645 PROGRAMAÇAO PARALELA E DISTRIBUÍDA PROVA 1 18/09/2017 ALUNO: Prof. Bosco

INE5645 PROGRAMAÇAO PARALELA E DISTRIBUÍDA PROVA 1 18/09/2017 ALUNO: Prof. Bosco INE5645 PROGRAMAÇAO PARALELA E DISTRIBUÍDA PROVA 1 18/09/2017 ALUNO: Prof. Bosco 1. a. (Verdade/Falso) Threads ou processos são programas sequenciais. Programação concorrente é aquela onde diversos processos/threads

Leia mais

EXECUÇÃO DE SISTEMAS DE EQUAÇÕES LINEARES EM PROCESSADORES MULTI-CORE 1

EXECUÇÃO DE SISTEMAS DE EQUAÇÕES LINEARES EM PROCESSADORES MULTI-CORE 1 EXECUÇÃO DE SISTEMAS DE EQUAÇÕES LINEARES EM PROCESSADORES MULTI-CORE 1 Henrique Bespalhuk Facci 2, Ronaldo Augusto de Lara Gonçalves UEM Universidade Estadual de Maringá Departamento de Informática Avenida

Leia mais

Arquiteturas para Alto Desempenho CES-25

Arquiteturas para Alto Desempenho CES-25 Arquiteturas para Alto Desempenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Objetivos Gerais da Matéria Aprofundar o conhecimento interno sobre o funcionamento interno

Leia mais

Introdução aos Conceitos de Computação Paralela através da estimativa de Pi

Introdução aos Conceitos de Computação Paralela através da estimativa de Pi Introdução aos Conceitos de Computação Paralela através da estimativa de Pi Diego da Silva Pereira 1 1 Professor de Redes de Computadores IFRN Câmpus Currais Novos. e-mail: diego.pereira@ifrn.edu.br Resumo:

Leia mais

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional Sistemas Operacionais Prof. Pedro Luís Antonelli Anhanguera Educacional ARQUITETURA E IMPLEMENTAÇÃO Pacote de Threads Conjunto de rotinas disponíveis para que uma aplicação utilize as facilidades dos threads.

Leia mais

Programação Concorrente e Paralela

Programação Concorrente e Paralela projeto de programas paralelos 2016 PCAM problema particionamento comunicacao aglomeracao mapeamento desenhada para memória distribuída mas muitas idéias em comum Particionamento idéia é expor oportunidades

Leia mais

Introdução à Computação

Introdução à Computação Introdução à Computação Jordana Sarmenghi Salamon jssalamon@inf.ufes.br jordanasalamon@gmail.com http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda

Leia mais

USO DE PARALELISMO DE DADOS PARA MAIOR EFICIÊNCIA DE ALGORITMOS DE PROCESSAMENTO DE IMAGENS

USO DE PARALELISMO DE DADOS PARA MAIOR EFICIÊNCIA DE ALGORITMOS DE PROCESSAMENTO DE IMAGENS Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM USO DE PARALELISMO DE DADOS PARA MAIOR EFICIÊNCIA DE ALGORITMOS DE PROCESSAMENTO

Leia mais

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

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER COMPARAÇÃO DE DESEMPENHO NA PROGRAMAÇÃO PARALELA HÍBRIDA (MPI + OPENMP) NA BUSCA DE TEXTO EM ARQUIVOS 1 COMPARISON OF PERFORMANCE IN HYBRID PARALLEL PROGRAMMING (MPI + OPENMP) IN SEARCH OF TEXT IN FILES

Leia mais

Arquitetura para Transformada de Distância e sua aplicação. para o cálculo da Dimensão Fractal

Arquitetura para Transformada de Distância e sua aplicação. para o cálculo da Dimensão Fractal Arquitetura para Transformada de Distância e sua aplicação Abstract para o cálculo da Dimensão Fractal Maximiliam Luppe, Angelo Cesar Colombini Unifran Universidade de Franca Av. Dr. Armando Sales Oliveira,

Leia mais

SIST706 Sistemas Distribuídos

SIST706 Sistemas Distribuídos Slide02 Arquiteturas de SD SIST706 Sistemas Distribuídos 2013/1 Prof. Jéfer Benedett Dörr @: prof.jefer@gmail.com profjefer.wordpress.com Notícias Cultura Livre Fontes de Notícias itil LPI Transistores:

Leia mais

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática. Introdução. Gabriel P. Silva. Gabriel P. Silva

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática. Introdução. Gabriel P. Silva. Gabriel P. Silva Universidade Federal do Rio de Janeiro Pós-Graduação em Informática Microarquiteturas de Alto Desempenho Introdução Introdução Bibliografia: Computer Architecture: A Quantitative Approach. John L. Hennesy,

Leia mais

Arquiteturas Paralelas

Arquiteturas Paralelas ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Arquiteturas Paralelas Medidas de desempenho Alexandre Amory Edson Moreno Índice 2 1. Introdução 2. Medidas de Desempenho Introdução 3 Aumento de desempenho dos

Leia mais

Aplicação de Processamento Paralelo com GPU a Problemas de Escoamento Monofásico em Meios Porosos. Bruno Pereira dos Santos Dany Sanchez Dominguez

Aplicação de Processamento Paralelo com GPU a Problemas de Escoamento Monofásico em Meios Porosos. Bruno Pereira dos Santos Dany Sanchez Dominguez Aplicação de Processamento Paralelo com GPU a Problemas de Escoamento Monofásico em Meios Porosos Bruno Pereira dos Santos Dany Sanchez Dominguez 1 Roteiro 1. Introdução 2. Five-Spot Problem 3. Modelagem

Leia mais

OpenMP: Uma Introdução

OpenMP: Uma Introdução Instituto de Informática OpenMP: Uma Introdução Cláudio Geyer Fonte! Fontes! Slides inicialmente baseados em palestra de Ruud van der Pas! Janeiro de 2009! Na Nanyang Technological University, Singapore!

Leia mais

OpenMP: Variáveis de Ambiente

OpenMP: Variáveis de Ambiente Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de

Leia mais

Introdução à programação paralela em Fortran usando OpenMP e MPI

Introdução à programação paralela em Fortran usando OpenMP e MPI Introdução à programação paralela em Fortran usando OpenMP e MPI Henrique Gavioli Flores,Alex Lima de Mello, Marcelo Trindade Rebonatto Universidade de Passo Fundo 5 de Abril de 2018 1/28 1 / 28 Sumário

Leia mais

Organização de Computadores Sistema de entrada e saída (I/O) e computação paralela. Professor: Francisco Ary

Organização de Computadores Sistema de entrada e saída (I/O) e computação paralela. Professor: Francisco Ary Organização de Computadores Sistema de entrada e saída (I/O) e computação paralela Professor: Francisco Ary Computação Paralela Capacidade de um sistema computacional ser executado de forma simultânea,

Leia mais

Paralela e Distribuída. com o MPI e o OpenMP

Paralela e Distribuída. com o MPI e o OpenMP Programação Paralela e Distribuída Programação Híbrida com o e o OpenMP e OpenMP Uma forma de executar um programa em paralelo num cluster multiprocessor é criar um processo por cada processador. Nesse

Leia mais

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 07: PROGRAMANDO COM THREADS EM LINGUAGEM C

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 07: PROGRAMANDO COM THREADS EM LINGUAGEM C ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 07: PROGRAMANDO COM THREADS EM LINGUAGEM C Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMANDO

Leia mais

COMPUTADORES. Arquiteturas de Computadores Paralelos. Prof.: Agostinho S. Riofrio

COMPUTADORES. Arquiteturas de Computadores Paralelos. Prof.: Agostinho S. Riofrio PROJETO LÓGICO DE COMPUTADORES Arquiteturas de Computadores Paralelos l Prof.: Agostinho S. Riofrio Agenda 1. Introdução 2. Memória Virtual 3. Paginação 4. Segmentação 5. Instruçoes virtuais de E/S 6.

Leia mais

Unidade 12: Introdução ao Paralelismo:

Unidade 12: Introdução ao Paralelismo: Arquitetura e Organização de Computadores 1 Unidade 12: Introdução ao Paralelismo: Processadores Superescalares Prof. Daniel Caetano Objetivo: Apresentar os conceitos fundamentais da arquitetura superescalar

Leia mais

Programação Concorrente e Paralela

Programação Concorrente e Paralela 2010.2 Objetivos princípios e técnicas de programação paralela multiprocessadores memória compartilhada troca de mensagens arquiteturas alternativas multicomputadores troca de mensagens obs: Essa troca

Leia mais

JAVA CÁ & LÁ Um Middleware para Computação Paralela e Distribuída

JAVA CÁ & LÁ Um Middleware para Computação Paralela e Distribuída Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM JAVA CÁ & LÁ Um Middleware para Computação Paralela e Distribuída Aluno: Antonio

Leia mais

Micro-Arquiteturas de Alto Desempenho. Introdução. Ementa

Micro-Arquiteturas de Alto Desempenho. Introdução. Ementa DCC-IM/NCE UFRJ Pós-Graduação em Informática Micro-Arquiteturas de Alto Desempenho Introdução Gabriel P. Silva Ementa Revisão de Organização de Computadores Hierarquia de Memória Memória Virtual Memória

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais CAP 2: Conceitos de Hardware e Software Prof. MSc. Diego R. Moraes diegorm@anhanguera.com Download de todo conteúdo da disciplina https://sites.google.com/site/diegorafaelmoraes/downloads

Leia mais

Bibliografia em processamento paralelo

Bibliografia em processamento paralelo Bibliografia em processamento paralelo Andrews, Concurrent Programming: Principles and Practice Foster, Designing and Building Parallel Programs Wolfe, High Performance Compilers for Parallel Computing

Leia mais

SSC0112 Organização de Computadores Digitais I - Turma 2

SSC0112 Organização de Computadores Digitais I - Turma 2 SSC0112 Organização de Computadores Digitais I - Turma 2 1ª Aula Apresentação e Introdução da disciplina Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Apresentada pelo Prof. Paulo Sergio Lopes de Souza

Leia mais

ÍNDICE PARTE I INTRODUÇÃO... 6

ÍNDICE PARTE I INTRODUÇÃO... 6 Edição 1, 03/2008 A documentação apresentada a seguir foi elaborada pelos embaixadores Joseanderson Caldas e Maria Cecília Sena, membros do Laboratório de Computação Científica e Visualização (LCCV-UFAL)

Leia mais

Modelos para Concorrência

Modelos para Concorrência Modelos para Concorrência Modelos para descrição de concorrência Programa Interdisciplinar de Pós Graduação em Computação Aplicada Universidade do Vale do Rio dos Sinos Gerson Cavalheiro Processamento

Leia mais

Aula 06 - Máquina Multinível e Von Neumann

Aula 06 - Máquina Multinível e Von Neumann Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Campus Currais Novos Instalação e Organização de Computadores Aula 06 - Máquina Multinível e Von Neumann Prof. Diego Pereira

Leia mais

Laboratório de Programação Paralela. Introdução. Prof. Carlos Bazilio

Laboratório de Programação Paralela. Introdução. Prof. Carlos Bazilio Laboratório de Programação Paralela Introdução Prof. Carlos Bazilio Motivação Máquinas paralelas eram arquiteturas raras antigamente Este quadro se modificou por, pelo menos, 2 razões: Barateamento dos

Leia mais

Conceitos básicos sobre computadores (continuação)

Conceitos básicos sobre computadores (continuação) SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Conceitos básicos sobre computadores (continuação) Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário O que é um computador e

Leia mais

Relatório Trabalho 1 Programação Paralela

Relatório Trabalho 1 Programação Paralela Relatório Trabalho 1 Programação Paralela Gustavo Rissetti 1 Rodrigo Exterckötter Tjäder 1 1 Acadêmicos do Curso de Ciência da Computação Universidade Federal de Santa Maria (UFSM) {rissetti,tjader@inf.ufsm.br

Leia mais

Carlos Eduardo Batista Centro de Informática - UFPB

Carlos Eduardo Batista Centro de Informática - UFPB Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Motivação Arquitetura de computadores modernos Desafios da programação concorrente Definição de concorrência Correr junto Disputa por

Leia mais

Apresentar aos alunos conceitos básicos de sistemas de automação de forma a capacita-los a desenvolver trabalhos de pesquisa na área.

Apresentar aos alunos conceitos básicos de sistemas de automação de forma a capacita-los a desenvolver trabalhos de pesquisa na área. UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL ESCOLA DE ENGENHARIA DEPARTAMENTO DE ENGENHARIA ELÉTRICA PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA PLANO DE ENSINO PERÍODO LETIVO 2008/1 DISCIPLINA: ELE00002

Leia mais

Variáveis em OpenMP. Esbel Tomás Valero Orellana

Variáveis em OpenMP. Esbel Tomás Valero Orellana Variáveis em OpenMP Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br 31 de Maio de 2010

Leia mais

Faculdade de Computação 3 a Prova de Arquitetura e Organização de Computadores 2 Parte I Prof. Cláudio C. Rodrigues

Faculdade de Computação 3 a Prova de Arquitetura e Organização de Computadores 2 Parte I Prof. Cláudio C. Rodrigues Faculdade de Computação 3 a Prova de Parte I Prof. Cláudio C. Rodrigues Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Problemas: P1. Qual o

Leia mais

de petróleo. Um novo domínio chamado computação de propósito geral em processadores gráficos (GPGPU) surgiu quando os pipelines de gráficos de

de petróleo. Um novo domínio chamado computação de propósito geral em processadores gráficos (GPGPU) surgiu quando os pipelines de gráficos de 12 1 1.1. Motivações Dentre os tipos de técnicas de Inteligência Artificial existentes, as técnicas de Programação Genética (PG) continuam mudando rapidamente conforme os pesquisadores e profissionais

Leia mais

MODOS DE ENDEREÇAMENTO E CONJUNTO DE INSTRUÇÕES

MODOS DE ENDEREÇAMENTO E CONJUNTO DE INSTRUÇÕES MODOS DE ENDEREÇAMENTO E CONJUNTO DE INSTRUÇÕES Alexandre Lucas Chichosz Discente do curso Engenharia da Computação Calwann de Souza Freire Discente do curso Engenharia da Computação Myke Albuquerque Pinto

Leia mais

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações Arquitetura de Computadores Introdução ao Pipeline PIPELINE Linha de Montagem A produção é dividida em várias etapas Produtos em etapas distintas podem ser desenvolvidos separadamente Pode ser Aplicado

Leia mais