Programação paralela em SMPs com OpenMP e POSIX Threads: um estudo comparativo
|
|
- Suzana de Vieira Bonilha
- 7 Há anos
- Visualizações:
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
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 maisOpenMP. 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 maisIntroduçã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 maisUM 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 maisBibliografia. 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 maisSistemas 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 maisSSC510 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 maisProgramaçã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 maisAULA 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 maisSSC0611 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 maisDisciplina 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 maisDisciplina 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 maisIntroduçã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 maisDisciplina 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 maisParalelismo 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 maisAná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 maisPONTIFÍ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 maisDESENVOLVIMENTO 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 maisCOMPARAÇÃ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 maisImplementaçã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 maisfor(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 maisDisciplina 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 maisANÁ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 maisProgramaçã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 maisINE 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 maisTé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 maisMultiprogramaçã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 maisUniversidade 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 maisArquitetura 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 maisSSC 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 maisAULA 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 maisConstrutores 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 maisSistemas 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 maisSistemas 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 maisDisciplina 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 maisINE 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 maisXV 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 maisOrganizaçã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 maisFerramentas 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 maisIntroduçã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 maisArquitetura 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 maisParalelizaçã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 maisINE 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 maisCIC 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 mais1.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 maisArquitetura 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 maisPLANO 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 maisOpenMP. 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 maisWhat 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 maisOrganizaçã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 maisINE 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 maisIntel 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 maisAgenda. 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 maisPARALELIZAÇÃ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 maisIntroduçã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 maisBacharelado 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 maisComputaçã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 maisINE 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 maisSSC0611 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 maisINE5645 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 maisEXECUÇÃ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 maisArquiteturas 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 maisIntroduçã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 maisSistemas 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 maisProgramaçã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 maisIntroduçã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 maisUSO 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 maisAluno 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 maisArquitetura 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 maisSIST706 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 maisUniversidade 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 maisArquiteturas 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 maisAplicaçã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 maisOpenMP: 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 maisOpenMP: 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 maisIntroduçã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 maisOrganizaçã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 maisParalela 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 maisORGANIZAÇÃ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 maisCOMPUTADORES. 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 maisUnidade 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 maisProgramaçã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 maisJAVA 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 maisMicro-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 maisSistemas 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 maisBibliografia 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 maisSSC0112 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
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 maisModelos 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 maisAula 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 maisLaborató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 maisConceitos 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 maisRelató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 maisCarlos 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 maisApresentar 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 maisVariá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 maisFaculdade 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 maisde 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 maisMODOS 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 maisPIPELINE. 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