ALGORITMO PARALELO DE PROCESSAMENTO DE IMAGENS DIGITAIS COM HYPER-THREADING E MULTICORE COM PTHREAD

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

OpenMP: Variáveis de Ambiente

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

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

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

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

Paralelismo em Computadores com Tecnologia Multicore

The future is parallel but it may not be easy

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

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

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

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

Introdução ao OpenMP

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

A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES

Programação Concorrente

XV ESCOLA REGIONAL DE ALTO DESEMPENHO ERAD 2015

Carlos Eduardo Batista Centro de Informática - UFPB

Computadores e Programação (DCC/UFRJ)

Organização de Computadores Computação paralela; Sistema de entrada e saída (I/O); Suporte a Sistema operacional. Professor: Francisco Ary

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

Sistemas Distribuídos

Sistemas Operacionais. Prof. Fabio Augusto Oliveira

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

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

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

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Programação Paralela e Distribuída

Sistemas Distribuídos

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

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

Sistemas Operacionais. Processos e Threads

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

Sistemas Distribuídos e Paralelos

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

Arquitetura de Computadores. Processamento Paralelo

ARQUITETURA DE COMPUTADORES

SSC0611 Arquitetura de Computadores

Avaliação de Desempenho

Chapter 4: Threads. Operating System Concepts 8th Edition

Concorrência em Processos

SSC PROGRAMAÇÃO CONCORRENTE. Aula 03 Terminologia Geral de Computação Paralela Prof. Jó Ueyama

Exemplo Amdahl. O speedup total é dado por:

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Sistemas Computacionais e Hardware. Disciplina: Informática Prof. Higor Morais

Sistemas Operacionais

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

Arquiteturas Paralelas

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

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

Introdução OpenMP. Nielsen Castelo Damasceno

Intel Thread Building Blocks (TBB)

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

Estruturas de Sistemas Operacionais

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula

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

Ferramentas para Programação em Processadores Multi-Core

Sistemas Operacionais

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Multiprogramação leve em arquiteturas multi-core

Sistemas Operacionais. Visão Geral

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

Ferramentas para Programação em Processadores Multi-Core

Computação Paralela (CUDA)

Paralelização do Método de Jacobi em Memória Compartilhada 1

Sistemas Operacionais

Análise de Desempenho da Paralelização do Problema de Caixeiro Viajante

Chamadas de Sistema (SYSCALL)

Análise de Desempenho de Aplicações Paralelas do Padrão Pipeline em Processadores com Múltiplos Núcleos

Ruby e JRuby em... Paralelos e Distribuídos. Felipe Barden Lucas Fialho Zawacki

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

Organização de Computadores 2005/2006 Processamento Paralelo

Multiprocessamento. Patterson & Hennessy Capítulo 9. Arquitetura e Organização de Computadores Juliano M. Vieira (c) 2011

SSC510 Arquitetura de Computadores. 6ª aula

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

SIST706 Sistemas Distribuídos

Sistemas Multiprogramáveis/Multitarefa

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

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.

Arquitetura de Sistemas Digitais

Organização e Arquitetura de Computadores I

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Processos Concorrentes

Sistemas Distribuídos

Instituto de Matemática e Estatística - USP MAC Organização de Computadores EP1. Experimentos com o cache. Tiago Andrade Togores

Sistema Operacional. Prof. Leonardo Barreto Campos. 1/30

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Organização de Sistemas de Computadores

Desenvolvimento de um Escalonador de Cenas para motores de jogos

Aula 2: Tipos de Sistemas Operacionais. Instituto Federal da Bahia Campus Salvador INF009 - Sistemas Operacionais Profª Flávia Maristela

Caracterização de Sistemas Distribuídos

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

UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012

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

Sistemas Distribuídos Aula 3

Universidade Federal de Ouro Preto

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads

Transcrição:

ALGORITMO PARALELO DE PROCESSAMENTO DE IMAGENS DIGITAIS COM HYPER-THREADING E MULTICORE COM PTHREAD Leandro Takeshi Hattori 1, Henrique Yoshikazu Shishido 1 1 Coordenação de Engenharia de Computação Campus Cornélio Procópio Universidade Tecnológica Federal do Paraná - UTFPR Av. Alberto Carazzai, 1640 - Cornélio Procópio - PR leandrotakeshihattori@gmail.com, shishido@utfpr.edu.br Resumo - Esse trabalho descreve uma experiência da implementação de um algoritmo paralelo de procesamento de imagens. A biblioteca usada é a pthread que permite explorar o desempenho oferecido por arquiteturas multithread como multicore e hyper-threading. Essa biblioteca é aplicada para comparar essas diferentes arquiteturas para apresentar o quanto os processadores multicore são mais rápidos que a tecnologia hyper-thread. Os resultados apresentados aqui indicam que processadores hyper-threading melhoram 16% do desempenho enquanto um processadores quad-core atingiu um desempenho 3.98 vezes maior que a aplicação sequencial. Palavras-chave: Hyperthreading, Multicore, Processamento, Imagem, Paralelo. Abstract - This paper describes a experience of the implementation of a parallel algorithm of image processing. The library used is pthread that permits explore the performance provided by multithread architectures such as multicore and hyper-threading. This library is applied to compare this different architectures to show how much multicore processors can be faster than hyper-thread technology. The results presented here indicates that hyper-threading processors improves 16% of speedup and, otherhand, a quad-core processor can achieve a 3.98 of speedup factor than the sequential code. Keywords: Hyperthreading, Multicore, Image, Processing, Parallel. INTRODUÇÃO Para melhorar o desempenho de processadores com apenas um núcleo era preciso aumentar os recursos disponíveis como memória cache, otimizar o pipeline de execução e o clock. Entretanto, as limitações físicas acabaram restringindo o avanço dessas técnicas [2], [3]. Diante dessas circunstâncias, tecnologias alternativas foram desenvolvidas para oferecer maior desempenho a aplicações que demandam alto processamento. Dentre essas arquiteturas, pode-se citar os processadores multicore e hyper-threading. As arquiteturas hyper-threading e multicore são classificadas como arquiteturas de memória compartilhada. A organização para acesso a memória é realizado mediante referências diretas a uma memória global [1]. A vantagem de seu uso é a minimização de overheads externos como a qualidade de transmissão de rede em sistemas distribuídos. Outro fator que conta a favor de sistemas de memória compartilhada é a facilidade de comunicação de dados entre diferentes fluxos de processamento.

Alguns trabalhos exploram a análise comparativa do uso de bibliotecas multithread e OpenMP [5], englobando o processamento de imagens digitais [6]. Contudo, encontra-se poucas comparações entre a tecnologia hyper-threading e arquiteturas multicore. Nesse sentido, este trabalho apresenta a paralelização de um algoritmo de processamento de imagens digitais por meio da criação de múltiplas threads. Dentro do contexto apresentado, alguns questionamentos podem ser levantados com o intuito de verificar a viabilidade da aplicação de arquiteturas multicore e hyper-threading em aplicações multithreads: 1. A tecnologia hyper-threading oferece desempenho equivalente à multicore? 2. Qual o ganho de desempenho oferecido por ambas as tecnologias? 3. Quais vantagens da programação em processadores multicore em relação a arquiteturas distribuídas? Este trabalho está organizado em cinco seções, além desta introdução. O Referencial Teórico apresenta um breve referencial teórico relativo ao conceito de hyper-threading, multicore e o embasamento teórico do algoritmo a ser paralelizado. A seção Métodos apresenta os instrumentos de pesquisa utilizados para realizar os experimentos, e os métodos de paralelização utilizados. A seção Modelo Paralelo descreve o modelo do algoritmo paralelo em thread. Na seção de Resultados e Discussão são apresentados os resultados obtidos com a execução da versão paralela em threads em hardware multicore e hyper-threading. E, por fim, a seção Conclusões faz as considerações finais pertinentes a este trabalho. REFERENCIAL TEÓRICO Hyper-threading: a tecnologia hyper-threading (HT) cria a visão de dois processadores lógicos em um único núcleo físico de um chip, compartilhando os demais recursos logicamente. O objetivo é diminuir o tempo ocioso do processador em até 16%, dirigindo tarefas para cada estado do pipeline [4]. Para usufruir dessa arquitetura, os sistemas operacionais necessitam reconhecer e suportar tal tecnologia reconhecendo dois processadores no ambiente. O sistema operacional é encarregado de gerenciar as tarefas aos núcleos lógicos [7]. Internamente, processadores com tecnologia HT possuem filas de execução para diferentes tipos de instruções das etapas do pipeline. Assim, diminui-se a ociosidade de cada etapa. Multicore A tecnologia multicore é uma unidade de processamento que consiste em dois ou mais núcleos físicos. Cada núcleo é tratado como um único processador e, geralmente, possui seus próprios recursos como registradores, memória cache e pipeline. Igualmente em ambientes multiprocessados, processadores multicore permitem que processos e threads possam ser executados paralelamente. No entanto, para que uma única aplicação explore os recursos dessa arquitetura, é preciso reescrevê-la no utilizando alguma biblioteca que permite explorar o paralelismo do processador, como por exemplo, a biblioteca pthread que será apresentada nas próximas seções. Outra alternativa ao pthread é a programação de aplicações através do conceito de processos na qual a comunicação é realizada por meio de passagem de mensagens utilizando padrões como o PVM ou MPI. Dentro desse contexto, cada processo possui a sua memória exclusiva, necessitando do envio e recebimento de mensagens para que haja a comunicação de dados entre processos. ConvoluçãoO algoritmo alvo para proporcionar a comparação das duas arquiteturas exploradas nesse trabalho é fundamentado no processo de convolução aplicado no processamento de ima-

gens digitais. A convolução é um método de reconhecimento de padrões e auxilia na obtenção de padrões em imagens [8], [9]. Esse tipo de algoritmo possui parâmetros que influenciam o tempo de execução. Considerando uma imagem de dimensão L linhas e C colunas, é calculado a variabilidade da região de cada pixel(l,c). A região que é calculada a variabilidade do pixel é chamada de janela ou máscara e é definido por dimensões NxN. A convolução é definida por: A convolução consiste em determinar um pixel(l,c) da imagem, coletando a variabilidade dos pixels vizinhos que estão contidos na área abrangida pela máscara. De acordo com o coeficiente de cada elemento da janela é classificado o valor de um pixel, em uma escala de valores entre 0 e 1. Após definido o índice de variabilidade, é possível determinar um tom de cor para ser expressada em uma nova imagem de saída. Algoritmo sequencial Para melhor compreensão do algoritmo a ser paralelizado em threads, o Algoritmo 1 demonstra a lógica do processamento sequencial com ênfase as principais instruções e estruturas. Algoritmo 1 Algoritmo sequencial begin Load image(p ath); Allocate Buf f er Results(); Split intervals(); Do Convolution() for l := 1 to HEIGHT step 1 for c := 1 to W IDT H step 1 Set mask(); F ind pixel interval(); Compute new pixel(); Set mapped values(); Save results(); end A sub-rotina da convolução é inicializada percorrendo a matriz, fazendo L x C chamadas para o calculo de todos os valores dos pixels. Este procedimento tem como objetivo de percorrer toda a matriz determinando um coeficiente para cada pixel. A quantidade de iterações feitas pelos laços são diretamente influenciadas de acordo com o tamanho da imagem de entrada. Os resultados obtidos pelo resultado de convolução são armazenados em uma nova matriz alocada dinamicamente. Após o término das iterações, a nova imagem é gravada. MÉTODOS Esta seção descreve os equipamentos e softwares utilizados para a execução dos experimentos deste trabalho. Além disso, apresenta o método de paralelização em thread. Hardware Para executar o experimento com hyper-threading foi utilizado o processador Intel Core i3 (2.93ghz, 128kb de cache L1 e 4096kb cache L2) com suporte ao hyper-threading

em cada núcleo físico, constituindo 2 núcleos físicos e 2 núcleos lógicos. E, para executar o experimento quadcore utilizou-se o processador Intel Quad Core (2.66ghz, 96kb de cache L1 e 4096kb de cache L2), o qual não possui a tecnologia hyper-threading. Entretanto o processador possui os 4 núcleos físicos. Software O sistema operacional utilizado para a execução da aplicação o foi Linux Cento OS 5 com kernel 2.6.18 x86. A biblioteca utilizada foi a pthread, a qual é um padrão para sistema operacionais derivados do UNIX. A biblioteca pthread é baseada no padrão UNIX, ou seja, apenas é suportado por sistemas operacionais baseados no UNIX como Linux, Mac OS X, Solaris, entre outros [10]. Além disso, oferece um conjunto de bibliotecas contendo procedimentos em linguagem C/C++ padronizada pelo órgão IEEE. Esta biblioteca possui funcionalidades para o gerenciamento de algoritmos multithread como sincronização e controle da execução de múltiplas threads. Método O método empregado na paralelização do algoritmo de convolução em thread é apresentado na Figura. Um processo é responsável por inicializar as threads que executarão os procedimentos paralelamente. Os experimentos paralelos são executados tanto no processador Intel Quad Core, utilizando os quatro núcleos disponíveis da arquitetura, quanto no processador Intel Core i3, devido o mesmo possuir dois núcleos físicos. Entretanto, a concorrência do processador Core i3 também foi explorada através da tecnologia hyper-threading, totalizando 2 núcleos + 2 unidades lógicas de processamento com hyper-threading. A imagem utilizada para o execução possui dimensão de 8039 pixels de largura por 6852 pixels de altura. O arquivo possui extensão Tagged Image File (TIF). A partir do retorno do número de elementos de processamento de uma função disponível no pthread, são inicializadas N threads. A imagem de entrada é segmentada em um número igual ao número de threads. O algoritmo de convolução em imagens digitais não possui dependência de dados de pixels vizinhos, assim os segmentos podem ser computados sem nenhum problema de variáveis compartilhadas ou quaisquer sincronizações. Figura 1. Modelo em threads O segmento incumbido por cada thread é determinado de acordo com a ordem de sua inicialização. Utilizando o compartilhamento de memória a thread pode ter acesso a fatia designada a ela e executar todo o processo de convolação. Após a execução das tarefas pelas threads o processo que as originou é responsável por finalizá-las.

Os experimentos em cada arquitetura foram executados variando a quantidade de threads de 1 a 4. E, cada variação de thread em cada experimento iterou-se 3 vezes. Em razão de ambos os processadores serem multicore explorou-se o uso de todos os núcleos e hyper-threading no Intel Core i3. ALGORITMO PARALELO Algoritmo paralelo em thread O algoritmo paralelo baseado em threads tem o objetivo de dividir a imagem de acordo com a quantidade de threads, conforme demonstrado no Algoritmo 2. A aplicação paralela consiste em carregar a imagem que será processada, alocar espaço em memória, na qual será inserida os valores dos pixles convolucionados, a inicialização das threads, divisão da imagem em N partes de acordo com N threads inicializadas, para que cada thread processe a mesma quantia e a finalização das threads. Cada thread aplica o processo de convolução no seu segmento. Consequentemente os dados processados são inseridos na matriz de resultados. Em razão das threads compartilharem a mesma memória, o delay de comunicação entre o processador e a memória é extremamente rápido, se comparado a comunicações realizadas em uma rede de computadores. Algoritmo 2 Algoritmo paralelo em threads begin Load image(); Allocate buf f er results(); Split image(num threads); F or each thread do : startt hread(thread id, image segment); Join threads(); Save results(); end Em geral, o processamento paralelo de imagens geralmente envolve o tratamento das bordas superiores e inferiores dos segmentos. No entanto, uma vez que a memória dessa arquitetura é compartilhada, não há a necessidade de realizar a redundância de dados entre as threads vizinhas. RESULTADOS E DISCUSSÃO O resultado dos tempos do modelo em thread utilizando o algoritmo de convolução é apresentado na Figura. Os experimentos com hyper-threading e quad-core foram inseridos no mesmo gráfico para facilitar a comparação do desempenho. Percebe-se a superioridade de desempenho do algoritmo executado em no Intel Core i3 na maioria dos experimentos até duas threads. O fator de maior influência no desempenho desta arquitetura está ligada a cada núcleo do processador Intel Core i3 possuir maior frequência em relação ao Intel Quad Core. Quando a CPU Intel Core i3 passa a executar mais que 2 threads, nota-se a queda do desempenho do experimento em função de que o hyper-threading não oferece eficiência igual a um núcleo real. Ao executar o teste com quatro threads o experimento com o processador Intel Core i3 se mostra menos eficiente que o processador Intel Quad Core. Esta mudança de rendimento mostra que mesmo ativada a tecnologia hyper-threading o processador Intel Core i3 sofre com a ineficiência da tecnologia HT conforme a média dos tempos apresentados pela

Figura 2. Tempo de execução da versão paralela Tabela. Threads Intel Core i3 (s) Intel Quadcore (s) 1 15996.33 26406.33 2 7995.33 13227.00 3 7969.00 8812.33 Tabela 1. Tempos de execução do algoritmo paralelo em multicore e hyper-threading A Figura apresenta o speedup alcançado pelas execuções dos experimentos em paralelo das arquiteturas hyper-threading e quad-core. Figura 3. Speedup das execuções em multicore e hyper-threading Analisando o gráfico percebe-se claramente a melhora das versões paralelas em relação à versão sequencial. Entretanto, há a discreta melhora de desempenho da arquitetura em hyperthreading no experimento com 3 e 4 threads. Comparando ao experimento com quad-core, a execução com hyper-threading mostra-se uma queda de 49% e 82%. O aspecto que influencia o desempenho do experimento do processador Intel Core i3 é a disponibilidade de apenas 2 núcleos físicos, tendo a execução a utilização de núcleos lógicos em execuções a partir de três threads. Analisando o experimento executado na arquitetura quadcore observa-se que o speedup se manteve linear. Tal comportamento se deve a ausência de sincronismo e de variáveis compar-

tilhadas no algoritmo de convolução, evitando assim, a ociosidade dos elementos de processamento. Outro motivo desse bom desempenho, é a exclusividade de cada thread por cada núcleo de processamento seja real com processador quad-core ou virtual com hyper-threading. Pode-se observar na Figura a eficiência dos algoritmos executados. Observamos que a partir do experimento com 3 threads a eficiência do algoritmo de convolução executado no processador Intel Core i3 cai 33% em relação ao algoritmo executado no Intel Quad Core. Ajustando a quantidade de threads para 4 a eficiência do Intel Core i3 com tecnologia hyperthreading cai aproximadamente 46%. Todavia, considerando a concorrência entre as threads pelos núcleos virtuais o experimento com hyper-threading ofereceu uma considerável ajuda no processamento. Figura 4. Eficiência das execuções em multicore e hyper-threading CONCLUSÕES O objetivo deste trabalho foi mostrar a análise do impacto do desempenho entre arquiteturas de memória compartilhada, o hyper-threading e quad-core, utilizando threads. Para explorar o paralelismo, foi adotada a biblioteca pthread para o desenvolvimento do algoritmo paralelo de convolução com o objetivo avaliar ambas arquiteturas e responder os questionamentos levantados na introdução desse trabalho. Para observar a diferença de desempenho utilizou-se os tempos de execução de cada experimento. Apesar de melhores tempos de execução, a tecnologia hyper-threading do processador Intel Core i3 não consegue acompanhar a escalabilidade dos núcleos do processador Intel Quad Core, o qual possui 4 núcleos reais. O speedup máximo alcançado pelo processador Intel Quad Core é de 3,98, enquanto a CPU Intel Core i3 atingiu o índice próximo 2,2. Com a execução de 3 threads, a eficiência do Intel Core i3 com tecnologia hyper-threading cai aproximadamente 46% em relação a 3 núcleos reais. Apesar da perda de eficiência nos experimentos durante o acréscimo do número de threads executadas pelo hyper-threading, mesmo assim os núcleos lógicos atingiram melhor eficiência em relação a versão sequencial. Pode-se notar que em aplicações com independência de dados e tarefas, cada núcleo da arquitetura quad-core obteve aproximadamente 99% de eficiência na execução de uma thread. A tecnologia hyper-threading apresentou a discreta melhora de 9,2% com a adição de cada núcleo virtual. A programação em arquiteturas fortemente acopladas como as exploradas nesse trabalho, apresentam maior facilidade, pois não é necessária a passagem de mensagens entre os elementos

de processamento. Além disso, o desempenho dessas arquiteturas mostrou ser expressivo em virtude do tráfego entre os elementos de processamento ser o próprio processador ao invés de uma rede de computadores. TRABALHOS FUTUROS Como trabalhos futuros recomenda-se: 1. O desenvolvimento e avaliação do desempenho de arquiteturas quad-core em clusters de computadores, uma vez mais de um processo pode ser alocado em cada nó de processamento, levando assim a consideração do gargalo de comunicação entre os processos de uma aplicação paralela distribuída. 2. Avaliação e comparação entre aplicações quad-core utilizando a biblioteca OpenMP e pthread. REFERÊNCIAS [1] TANENBAUM, A. Modern operating systems. Prentice Hall New Jersey, 1992. v. 2. [2] HILL, M.; MARTY, M. Amdahl s law in the multicore era. Computer, v. 41, n. 7, p. 33 38, 2008. [3] ZHIRNOV, V.; CAVIN III, R.; HUTCHBY, J.; BOURIANOFF, G. Limits to binary logic switch scaling-a gedanken model. Proceedings of the IEEE, v. 91, n. 11, p. 1934 1939, 2003. [4] MARR, D. Hyper-threading technology in the netburst R microarchitecture. 14th Hot Chips, 2002. [5] PENHA, D.; CORRÊA, J.; MARTINS, C. Análise comparativa do uso de multi-thread e openmp aplicados a operações de convolução de imagem. In:. c2002. [6] LIU, Y.; GAO, F. Parallel implementations of image processing algorithms on multi-core. In:. c2010. p. 71 74. [7] GEER, D. Chip makers turn to multicore processors. Computer, v. 38, n. 5, p. 11 13, 2005. [8] TURNER, M. Landscape ecology: the effect of pattern on process. Annual review of ecology and systematics, v. 20, p. 171 197, 1989. [9] CENTENO, J. Sensoriamento remoto e processamento de imagens digitais. Curitiba: Curso de Pós Graduação em Ciências Geodésicas, Universidade Federal do Paraná, 2004. [10] DREPPER, U.; MOLNAR, I. The native posix thread library for linux. White Paper, Red Hat, 2003.