• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
8
0
0

Texto

(1)

ALGORITMO PARALELO DE PROCESSAMENTO DE

IMAGENS DIGITAIS COM HYPER-THREADING E

MULTICORE COM PTHREAD

Leandro Takeshi Hattori1, Henrique Yoshikazu Shishido1

1Coordenac¸˜ao de Engenharia de Computac¸˜ao

Campus Corn´elio Proc´opio

Universidade Tecnol´ogica Federal do Paran´a - UTFPR Av. Alberto Carazzai, 1640 - Corn´elio Proc´opio - PR leandrotakeshihattori@gmail.com, shishido@utfpr.edu.br

Resumo - Esse trabalho descreve uma experiˆencia da implementac¸˜ao de um algoritmo paralelo de procesamento de imagens. A biblioteca usada ´e a pThread que permite explorar o desempenho oferecido por arquiteturas mul-tithread como multicore e hyper-threading. Essa biblioteca ´e aplicada para comparar essas diferentes arquiteturas para apresentar o quanto os processadores multicore s˜ao mais r´apidos que a tecnologia hyper-thread. Os resulta-dos apresentaresulta-dos aqui indicam que processadores hyper-threading melhoram 16% do desempenho enquanto um processadores quad-core atingiu um desempenho 3.98 vezes maior que a aplicac¸˜ao sequencial.

Palavras-chave: Hyperthreading, Multicore, Processamento, Imagem, Paralelo.

Abstract - This paper describes a experience of the implementation of a parallel algorithm of image proces-sing. 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.

INTRODUC¸ ˜AO

Para melhorar o desempenho de processadores com apenas um n´ucleo era preciso aumen-tar os recursos dispon´ıveis como mem´oria cache, otimizar o pipeline de execuc¸˜ao e o clock. Entretanto, as limitac¸˜oes f´ısicas acabaram restringindo o avanc¸o dessas t´ecnicas [2], [3]. Diante dessas circunstˆancias, tecnologias alternativas foram desenvolvidas para oferecer maior desem-penho a aplicac¸˜oes que demandam alto processamento. Dentre essas arquiteturas, pode-se citar os processadores multicore e hyper-threading.

As arquiteturas hyper-threading e multicore s˜ao classificadas como arquiteturas de mem´oria compartilhada. A organizac¸˜ao para acesso a mem´oria ´e realizado mediante referˆencias diretas a uma mem´oria global [1]. A vantagem de seu uso ´e a minimizac¸˜ao de overheads exter-nos como a qualidade de transmiss˜ao de rede em sistemas distribu´ıdos. Outro fator que conta a favor de sistemas de mem´oria compartilhada ´e a facilidade de comunicac¸˜ao de dados entre diferentes fluxos de processamento.

(2)

Alguns trabalhos exploram a an´alise comparativa do uso de bibliotecas multithread e OpenMP [5], englobando o processamento de imagens digitais [6]. Contudo, encontra-se pou-cas comparac¸˜oes entre a tecnologia hyper-threading e arquiteturas multicore. Nesse sentido, este trabalho apresenta a paralelizac¸˜ao de um algoritmo de processamento de imagens digitais por meio da criac¸˜ao de m´ultiplas threads.

Dentro do contexto apresentado, alguns questionamentos podem ser levantados com o intuito de verificar a viabilidade da aplicac¸˜ao de arquiteturas multicore e hyper-threading em aplicac¸˜oes multithreads:

1. A tecnologia hyper-threading oferece desempenho equivalente `a multicore? 2. Qual o ganho de desempenho oferecido por ambas as tecnologias?

3. Quais vantagens da programac¸˜ao em processadores multicore em relac¸˜ao a arquiteturas distribu´ıdas?

Este trabalho est´a organizado em cinco sec¸˜oes, al´em desta introduc¸˜ao. O Referencial Te´orico apresenta um breve referencial te´orico relativo ao conceito de hyper-threading, multi-core e o embasamento te´orico do algoritmo a ser paralelizado. A sec¸˜ao M´etodos apresenta os instrumentos de pesquisa utilizados para realizar os experimentos, e os m´etodos de paralelizac¸˜ao utilizados. A sec¸˜ao Modelo Paralelo descreve o modelo do algoritmo paralelo em thread. Na sec¸˜ao de Resultados e Discuss˜ao s˜ao apresentados os resultados obtidos com a execuc¸˜ao da vers˜ao paralela em threads em hardware multicore e hyper-threading. E, por fim, a sec¸˜ao Con-clus˜oes faz as considerac¸˜oes finais pertinentes a este trabalho.

REFERENCIAL TE ´ORICO

Hyper-threading: a tecnologia hyper-threading (HT) cria a vis˜ao de dois processadores l´ogicos em um ´unico n´ucleo f´ısico de um chip, compartilhando os demais recursos logicamente. O objetivo ´e diminuir o tempo ocioso do processador em at´e 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 ´e encarre-gado de gerenciar as tarefas aos n´ucleos l´ogicos [7]. Internamente, processadores com tecno-logia HT possuem filas de execuc¸˜ao para diferentes tipos de instruc¸˜oes das etapas do pipeline. Assim, diminui-se a ociosidade de cada etapa.

Multicore A tecnologia multicore ´e uma unidade de processamento que consiste em dois ou mais n´ucleos f´ısicos. Cada n´ucleo ´e tratado como um ´unico processador e, geralmente, possui seus pr´oprios recursos como registradores, mem´oria cache e pipeline. Igualmente em ambientes multiprocessados, processadores multicore permitem que processos e threads possam ser executados paralelamente. No entanto, para que uma ´unica aplicac¸˜ao explore os recursos dessa arquitetura, ´e preciso reescrevˆe-la no utilizando alguma biblioteca que permite explorar o paralelismo do processador, como por exemplo, a biblioteca pThread que ser´a apresentada nas pr´oximas sec¸˜oes.

Outra alternativa ao pThread ´e a programac¸˜ao de aplicac¸˜oes atrav´es do conceito de proces-sos na qual a comunicac¸˜ao ´e realizada por meio de passagem de mensagens utilizando padr˜oes como o PVM ou MPI. Dentro desse contexto, cada processo possui a sua mem´oria exclusiva, necessitando do envio e recebimento de mensagens para que haja a comunicac¸˜ao de dados entre processos.

Convoluc¸˜aoO algoritmo alvo para proporcionar a comparac¸˜ao das duas arquiteturas exploradas nesse trabalho ´e fundamentado no processo de convoluc¸˜ao aplicado no processamento de

(3)

ima-gens digitais. A convoluc¸˜ao ´e um m´etodo de reconhecimento de padr˜oes e auxilia na obtenc¸˜ao de padr˜oes em imagens [8], [9]. Esse tipo de algoritmo possui parˆametros que influenciam o tempo de execuc¸˜ao.

Considerando uma imagem de dimens˜ao L linhas e C colunas, ´e calculado a variabilidade da regi˜ao de cada pixel(l,c). A regi˜ao que ´e calculada a variabilidade do pixel ´e chamada de janela ou m´ascara e ´e definido por dimens˜oes NxN. A convoluc¸˜ao ´e definida por:

A convoluc¸˜ao consiste em determinar um pixel(l,c) da imagem, coletando a variabilidade dos pixels vizinhos que est˜ao contidos na ´area abrangida pela m´ascara. De acordo com o coefi-ciente de cada elemento da janela ´e classificado o valor de um pixel, em uma escala de valores entre 0 e 1. Ap´os definido o ´ındice de variabilidade, ´e poss´ıvel determinar um tom de cor para ser expressada em uma nova imagem de sa´ıda.

Algoritmo sequencial Para melhor compreens˜ao do algoritmo a ser paralelizado em thre-ads, o Algoritmo 1 demonstra a l´ogica do processamento sequencial com ˆenfase as principais instruc¸˜oes e estruturas.

Algoritmo 1 Algoritmo sequencial

begin

Load image(P ath);

Allocate Buf f er Results(); Split intervals();

Do Convolution() ≡

f or l := 1to HEIGHT step 1 f or c := 1to W IDT H step 1

Set mask();

F ind pixel interval(); Compute new pixel(); Set mapped values(); Save results();

end

A sub-rotina da convoluc¸˜ao ´e 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 iterac¸˜oes feitas pelos lac¸os s˜ao diretamente influenciadas de acordo com o tamanho da imagem de entrada. Os resultados obtidos pelo resultado de convoluc¸˜ao s˜ao armazenados em uma nova matriz alocada dinamicamente. Ap´os o t´ermino das iterac¸˜oes, a nova imagem ´e gravada.

M ´ETODOS

Esta sec¸˜ao descreve os equipamentos e softwares utilizados para a execuc¸˜ao dos experi-mentos deste trabalho. Al´em disso, apresenta o m´etodo de paralelizac¸˜ao 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

(4)

em cada n´ucleo f´ısico, constituindo 2 n´ucleos f´ısicos e 2 n´ucleos l´ogicos. 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˜ao possui a tecnologia hyper-threading. Entretanto o processador possui os 4 n´ucleos f´ısicos.

Software O sistema operacional utilizado para a execuc¸˜ao da aplicac¸˜ao o foi Linux Cento OS 5 com kernel 2.6.18 x86. A biblioteca utilizada foi a pThread, a qual ´e um padr˜ao para sistema operacionais derivados do UNIX.

A biblioteca pThread ´e baseada no padr˜ao UNIX, ou seja, apenas ´e suportado por sistemas operacionais baseados no UNIX como Linux, Mac OS X, Solaris, entre outros [10]. Al´em disso, oferece um conjunto de bibliotecas contendo procedimentos em linguagem C/C++ padronizada pelo ´org˜ao IEEE. Esta biblioteca possui funcionalidades para o gerenciamento de algoritmos multithread como sincronizac¸˜ao e controle da execuc¸˜ao de m´ultiplas threads.

M´etodo O m´etodo empregado na paralelizac¸˜ao do algoritmo de convoluc¸˜ao em thread ´e apre-sentado na Figura . Um processo ´e respons´avel por inicializar as threads que executar˜ao os procedimentos paralelamente.

Os experimentos paralelos s˜ao executados tanto no processador Intel Quad Core, utili-zando os quatro n´ucleos dispon´ıveis da arquitetura, quanto no processador Intel Core i3, de-vido o mesmo possuir dois n´ucleos f´ısicos. Entretanto, a concorrˆencia do processador Core i3 tamb´em foi explorada atrav´es da tecnologia hyper-threading, totalizando 2 n´ucleos + 2 unidades l´ogicas de processamento com hyper-threading.

A imagem utilizada para o execuc¸˜ao possui dimens˜ao de 8039 pixels de largura por 6852 pixels de altura. O arquivo possui extens˜ao Tagged Image File (TIF).

A partir do retorno do n´umero de elementos de processamento de uma func¸˜ao dispon´ıvel no pThread, s˜ao inicializadas N threads. A imagem de entrada ´e segmentada em um n´umero igual ao n´umero de threads. O algoritmo de convoluc¸˜ao em imagens digitais n˜ao possui de-pendˆencia de dados de pixels vizinhos, assim os segmentos podem ser computados sem nenhum problema de vari´aveis compartilhadas ou quaisquer sincronizac¸˜oes.

Figura 1. Modelo em threads

O segmento incumbido por cada thread ´e determinado de acordo com a ordem de sua inicializac¸˜ao. Utilizando o compartilhamento de mem´oria a thread pode ter acesso a fatia de-signada a ela e executar todo o processo de convolac¸˜ao. Ap´os a execuc¸˜ao das tarefas pelas threads o processo que as originou ´e respons´avel por finaliz´a-las.

(5)

Os experimentos em cada arquitetura foram executados variando a quantidade de threads de 1 a 4. E, cada variac¸˜ao de thread em cada experimento iterou-se 3 vezes. Em raz˜ao de ambos os processadores serem multicore explorou-se o uso de todos os n´ucleos 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 aplicac¸˜ao paralela consiste em carregar a imagem que ser´a processada, alocar espac¸o em mem´oria, na qual ser´a inserida os valores dos pixles convolucionados, a inicializac¸˜ao das threads, divis˜ao da imagem em N partes de acordo com N threads inicializadas, para que cada thread processe a mesma quantia e a finalizac¸˜ao das threads.

Cada thread aplica o processo de convoluc¸˜ao no seu segmento. Consequentemente os dados processados s˜ao inseridos na matriz de resultados. Em raz˜ao das threads compartilharem a mesma mem´oria, o delay de comunicac¸˜ao entre o processador e a mem´oria ´e extremamente r´apido, se comparado a comunicac¸˜oes 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); J oin 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´oria dessa arqui-tetura ´e compartilhada, n˜ao h´a a necessidade de realizar a redundˆancia de dados entre as threads vizinhas.

RESULTADOS E DISCUSS ˜AO

O resultado dos tempos do modelo em thread utilizando o algoritmo de convoluc¸˜ao ´e apresentado na Figura . Os experimentos com hyper-threading e quad-core foram inseridos no mesmo gr´afico para facilitar a comparac¸˜ao do desempenho. Percebe-se a superioridade de desempenho do algoritmo executado em no Intel Core i3 na maioria dos experimentos at´e duas threads. O fator de maior influˆencia no desempenho desta arquitetura est´a ligada a cada n´ucleo do processador Intel Core i3 possuir maior frequˆencia em relac¸˜ao 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 func¸˜ao de que o hyper-threading n˜ao oferece eficiˆencia igual a um n´ucleo 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 mudanc¸a de rendimento mostra que mesmo ativada a tecnologia hyper-threading o processador Intel Core i3 sofre com a ineficiˆencia da tecnologia HT conforme a m´edia dos tempos apresentados pela

(6)

Figura 2. Tempo de execuc¸˜ao da vers˜ao 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 execuc¸˜ao do algoritmo paralelo em multicore e hyper-threading A Figura apresenta o speedup alcanc¸ado pelas execuc¸˜oes dos experimentos em paralelo das arquiteturas hyper-threading e quad-core.

Figura 3. Speedup das execuc¸˜oes em multicore e hyper-threading

Analisando o gr´afico percebe-se claramente a melhora das vers˜oes paralelas em relac¸˜ao `a vers˜ao sequencial. Entretanto, h´a a discreta melhora de desempenho da arquitetura em hyper-threading no experimento com 3 e 4 threads. Comparando ao experimento com quad-core, a execuc¸˜ao com hyper-threading mostra-se uma queda de 49% e 82%. O aspecto que influencia o desempenho do experimento do processador Intel Core i3 ´e a disponibilidade de apenas 2 n´ucleos f´ısicos, tendo a execuc¸˜ao a utilizac¸˜ao de n´ucleos l´ogicos em execuc¸˜oes a partir de trˆes threads.

Analisando o experimento executado na arquitetura quadcore observa-se que o speedup se manteve linear. Tal comportamento se deve a ausˆencia de sincronismo e de vari´aveis

(7)

compar-tilhadas no algoritmo de convoluc¸˜ao, evitando assim, a ociosidade dos elementos de processa-mento. Outro motivo desse bom desempenho, ´e a exclusividade de cada thread por cada n´ucleo de processamento seja real com processador quad-core ou virtual com hyper-threading.

Pode-se observar na Figura a eficiˆencia dos algoritmos executados. Observamos que a partir do experimento com 3 threads a eficiˆencia do algoritmo de convoluc¸˜ao executado no processador Intel Core i3 cai 33% em relac¸˜ao ao algoritmo executado no Intel Quad Core. Ajustando a quantidade de threads para 4 a eficiˆencia do Intel Core i3 com tecnologia hyper-threading cai aproximadamente 46%. Todavia, considerando a concorrˆencia entre as threads pelos n´ucleos virtuais o experimento com hyper-threading ofereceu uma consider´avel ajuda no processamento.

Figura 4. Eficiˆencia das execuc¸˜oes em multicore e hyper-threading

CONCLUS ˜OES

O objetivo deste trabalho foi mostrar a an´alise do impacto do desempenho entre arquitetu-ras de mem´oria 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 convoluc¸˜ao com o objetivo avaliar ambas arquiteturas e responder os questionamentos le-vantados na introduc¸˜ao desse trabalho.

Para observar a diferenc¸a de desempenho utilizou-se os tempos de execuc¸˜ao de cada expe-rimento. Apesar de melhores tempos de execuc¸˜ao, a tecnologia hyper-threading do processador Intel Core i3 n˜ao consegue acompanhar a escalabilidade dos n´ucleos do processador Intel Quad Core, o qual possui 4 n´ucleos reais. O speedup m´aximo alcanc¸ado pelo processador Intel Quad Core ´e de 3,98, enquanto a CPU Intel Core i3 atingiu o ´ındice pr´oximo 2,2. Com a execuc¸˜ao de 3 threads, a eficiˆencia do Intel Core i3 com tecnologia hyper-threading cai aproximadamente 46% em relac¸˜ao a 3 n´ucleos reais.

Apesar da perda de eficiˆencia nos experimentos durante o acr´escimo do n´umero de threads executadas pelo hyper-threading, mesmo assim os n´ucleos l´ogicos atingiram melhor eficiˆencia em relac¸˜ao a vers˜ao sequencial.

Pode-se notar que em aplicac¸˜oes com independˆencia de dados e tarefas, cada n´ucleo da arquitetura quad-core obteve aproximadamente 99% de eficiˆencia na execuc¸˜ao de uma thread. A tecnologia hyper-threading apresentou a discreta melhora de 9,2% com a adic¸˜ao de cada n´ucleo virtual.

A programac¸˜ao em arquiteturas fortemente acopladas como as exploradas nesse trabalho, apresentam maior facilidade, pois n˜ao ´e necess´aria a passagem de mensagens entre os elementos

(8)

de processamento. Al´em disso, o desempenho dessas arquiteturas mostrou ser expressivo em virtude do tr´afego entre os elementos de processamento ser o pr´oprio processador ao inv´es de uma rede de computadores.

TRABALHOS FUTUROS

Como trabalhos futuros recomenda-se:

1. O desenvolvimento e avaliac¸˜ao do desempenho de arquiteturas quad-core em clusters de computadores, uma vez mais de um processo pode ser alocado em cada n´o de processa-mento, levando assim a considerac¸˜ao do gargalo de comunicac¸˜ao entre os processos de uma aplicac¸˜ao paralela distribu´ıda.

2. Avaliac¸˜ao e comparac¸˜ao entre aplicac¸˜oes quad-core utilizando a biblioteca OpenMP e pThread.

REFER ˆENCIAS

[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 microarchitecture. 14th HotR Chips, 2002.

[5] PENHA, D.; CORR ˆEA, J.; MARTINS, C. An´alise comparativa do uso de multi-thread e openmp aplicados a operac¸˜oes de convoluc¸˜ao 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´os Graduac¸˜ao em Ciˆencias Geod´esicas, Universidade Federal do Paran´a, 2004.

[10] DREPPER, U.; MOLNAR, I. The native posix thread library for linux. White Paper, Red Hat, 2003.

Referências

Documentos relacionados

A par disso, analisa-se o papel da tecnologia dentro da escola, o potencial dos recursos tecnológicos como instrumento de trabalho articulado ao desenvolvimento do currículo, e

Promovido pelo Sindifisco Nacio- nal em parceria com o Mosap (Mo- vimento Nacional de Aposentados e Pensionistas), o Encontro ocorreu no dia 20 de março, data em que também

nesta nossa modesta obra O sonho e os sonhos analisa- mos o sono e sua importância para o corpo e sobretudo para a alma que, nas horas de repouso da matéria, liberta-se parcialmente

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

No entanto, maiores lucros com publicidade e um crescimento no uso da plataforma em smartphones e tablets não serão suficientes para o mercado se a maior rede social do mundo

3.3 o Município tem caminhão da coleta seletiva, sendo orientado a providenciar a contratação direta da associação para o recolhimento dos resíduos recicláveis,

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Se você vai para o mundo da fantasia e não está consciente de que está lá, você está se alienando da realidade (fugindo da realidade), você não está no aqui e