Vous êtes sur la page 1sur 11

XVII Encontro de Modelagem Computacional

V Encontro de Cincia e Tecnologia de Materiais


Universidade Catlica de Petrpolis (UCP), Petrpolis/RJ, Brasil. 15-17 out. 2014

PARALELIZAO DE UM ALGORITMO HBRIDO PARA SOLUO DE


SISTEMAS NO LINEARES COM RAZES MLTIPLAS
Dalmo Stutz stutz@iprj.uerj.br
Universidade do Estado do Rio de Janeiro, Instituto Politcnico, 28630-050 Nova Friburgo,
RJ, Brasil

Resumo. Este trabalho apresenta uma estratgia de implementao paralela de um algoritmo


hbrido para a soluo de sistemas no lineares com mltiplas solues (razes), cujo modelo
construdo a partir de dois mtodos: Luus-Jaakola - usado para a gerao de pontos
iniciais como possveis candidatos a soluo do sistema - e Hooke-Jeeves, usado para
produzir uma soluo mais refinada (tima) obtida a partir desses pontos.
Palavras-chave: Otimizao, algoritmo hbrido, programao paralela
1.

INTRODUO

Nas ltimas dcadas, a contnua evoluo do hardware tem proporcionado melhorias


significativas nos desempenhos dos computadores e uma oferta maior de recursos
computacionais. Essa evoluo teve incio na dcada de 60 com a miniaturizao dos
computadores e a produo dos primeiros circuitos integrados e se estende at os dias atuais,
apresentando uma taxa de crescimento exponencial que dobra o nmero de transistores dentro
de um chip de computador a cada dois anos aproximadamente (Fig.1). Essa tendncia ficou
conhecida na literatura como Lei de Moore (1965).

Figura 1- Grfico da evoluo da quantidade de transistores integrados em um


microprocessador (McCool, Robinson e Reinders. 2012).
Ao longo dos anos, esse crescimento possibilitou, consequentemente, o desenvolvimento
de microprocessadores cada vez mais complexos com avanos significativos na frequncia
dos relgios (clocks), que controlam os tempos de execuo das instrues em um
processador. Apesar da velocidade dos relgios no ter seguido a mesma taxa de crescimento
dos transistores, no entanto, ela apresentou aumentos considerveis. No perodo

XVII Encontro de Modelagem Computacional


V Encontro de Cincia e Tecnologia de Materiais
Universidade Catlica de Petrpolis (UCP), Petrpolis/RJ, Brasil. 15-17 out. 2014

compreendido entre 1973 e 2003, por exemplo, a velocidade dos relgios teve um aumento de
, partindo de 1MHz em 1973 e chegando a 1GHz em 2003.
Apesar dos avanos, no entanto, essa taxa de crescimento no infinita, uma vez que as
condies (aumento da velocidade do clock, paralelismo em baixo nvel, velocidade de acesso
memria, consumo de energia, etc.) que tornaram isso possvel comearam a atingir os seus
limites (Fig. 2). S para citar um exemplo, por volta de 2005, a velocidade dos clocks parou
de crescer e estabilizou-se em torno da faixa 3GHz. Os motivos para isso ficou conhecido
como "Three Walls": i) Power wall - medida que a frequncia do clock aumenta, o consumo
de energia para mant-la cresce de forma desproporcional em nveis inaceitveis,
principalmente, para dispositivos mveis que dependem de baterias, tais como: notebooks,
celulares, tablets, etc.; ii) Instruction-level parallelism wall (ILP) - o processo de paralelismo
automtico de instrues em baixo nvel, realizado pelos atuais processadores, j atingiu o seu
limite mximo de capacidade e eficincia; iii) Memory wall - aumento na discrepncia entre a
velocidade do processador e a velocidade de acesso memria (tempo de latncia), que tem
crescido a uma taxa bem menor que a dos processadores.

Figura 2- Avanos nos microprocessadores Intel (Sutter, 2005).


Em suma, para se alcanar maiores desempenhos de processamento hoje em dia no se
pode mais contar com aumentos nas frequncias do relgio, incrementos nas taxas de
transferncias de dados de/para a memria, paralelismos de baixo nvel, etc., preciso
escrever programas paralelos, levando-se em considerao no s um bom algoritmo, mas
tambm pensando em diversos outros aspectos to importantes quanto e que interferem de
alguma forma nos tempos de processamento, tais como: reduo nos custos de comunicao
entre processos e unidades de processamento, acesso compartilhado memria, distribuio e
compartilhamento de dados, processamento distribudo, balanceamento de cargas, entre
outros.

XVII Encontro de Modelagem Computacional


V Encontro de Cincia e Tecnologia de Materiais
Universidade Catlica de Petrpolis (UCP), Petrpolis/RJ, Brasil. 15-17 out. 2014

3.1. O algoritmo hbrido


Desenvolvido por Silva (2009, 2011), o algoritmo hbrido para soluo de problemas no
lineares com mltiplas razes um mtodo composto por dois outros mtodos concatenados:
Luus-Jaakola (1973) e Hooke-Jeeves (1961).
A ideia central do algoritmo (Fig.3) utilizar o mtodo Luus-Jaakola para a gerao de
pontos iniciais, dentro dos limites de uma dada regio de busca, como possveis candidatos a
soluo do sistema e, ento, usar esses pontos para alimentar o mtodo de Hooke-Jeeves de
modo que se produza uma soluo mais refinada (mais prxima do timo) do problema que
est sendo avaliado.
Como o algoritmo Luus-Jaakola localiza apenas um ponto a cada execuo, para se
identificar outras possveis solues e para que outros candidatos possam ser encontrados
dentro da regio de busca, faz-se necessrio que o algoritmo hbrido seja executado em um
processo iterativo, repetidas vezes. A cada iterao, o algoritmo hbrido produz uma possvel
soluo para o problema e, medida que so gerados, esses valores vo sendo armazenados
dentro de um vetor de razes ( ).
Ao longo das execues, esse procedimento acaba produzindo algumas razes repetidas
ao encontrar um mesmo conjunto de pontos. A soluo para esse problema , ento, resolvido
filtrando-se os resultados encontrados, selecionando valores distintos e produzindo um
conjunto soluo ( ) com todas as diferentes razes localizadas pelo algoritmo hbrido dentro
do espao de busca, soluo final do problema.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:

Defina um nmero total de iteraes


Defina = vetor de razes
Defina = vetor soluo
Para k=1 at
faa
Execute a rotina
Faa
Execute a rotina
Faa
Fim_para
Filtre as razes repetidas em , classificando-as por aproximao
Minimize cada classe de vetores, gerando um valor por classe (razes distintas)
Copie as razes distintas de em
Imprima o vetor soluo

Figura 3 - Algoritmo hbrido (Silva, 2011).


A estrutura do mtodo hbrido, alm de apresentar as boas caractersticas dos mtodos de
otimizao estocstico (Luus-Jaakola) e determinstico (Hooke-Jeeves), consome um nmero
menor de avaliaes da funo-objetivo (melhor desempenho), exigindo um menor tempo
computacional.

XVII Encontro de Modelagem Computacional


V Encontro de Cincia e Tecnologia de Materiais
Universidade Catlica de Petrpolis (UCP), Petrpolis/RJ, Brasil. 15-17 out. 2014

2.

DESENVOLVIMENTO DE ALGORITMOS PARALELOS

O desenvolvimento de algoritmos um componente crucial na soluo de problemas


computacionais. Um algoritmo serial basicamente uma sequncia estruturada e finita de
passos (instrues), ordenados logicamente, para se resolver uma determinada tarefa ou
solucionar um dado problema computacional, usando um computador serial.
Similarmente, um algoritmo paralelo tambm um conjunto de passos para se resolver
um dado problema, porm, usando mltiplos processadores.
Especificar um algoritmo paralelo, no entanto, envolve mais do que simplesmente
especificar esses passos, preciso pensar na concorrncia e no conjunto de passos que podem
ser executados simultaneamente. Na prtica, a especificao de um algoritmo paralelo tpico
deve incluir algumas (se no todas!) das seguintes etapas: i) identificar pores do algoritmo
que podem ser executadas concorrentemente; ii) mapear as partes de trabalho concorrente em
mltiplos processos rodando em paralelo; iii) distribuir os dados de entrada e sada; iv)
gerenciar o acesso aos dados compartilhados em mltiplos processadores; v) sincronizar os
processos nos vrios estgios da execuo do programa em paralelo; etc. (Grama et.al., 2003).
Uma outra caracterstica que se procura quando se desenvolve programas em paralelo a
escalabilidade. Esse atributo compreende a habilidade de uma sistema se adaptar a uma
demanda crescente de dados ou trabalho, seja processando volumes maiores de trabalho de
maneira uniforme e/ou estar preparado para crescer (Bondi, 2000).
Uma forma de tornar o algoritmo hbrido um programa escalvel permitindo que um
mesmo problema seja executado em um tempo menor ou permitindo que um volume maior de
trabalho possa ser executado em um mesmo tempo. Isso pode ser resolvido, por exemplo,
distribuindo-se a carga de trabalho, que seria executada serialmente (algoritmo hbrido serial)
por um nico processador, para
unidades de processamento rodando em paralelo
(algoritmo hbrido paralelo).
Assim, podemos distribuir a carga de trabalho para mais de um processador, de forma
que o mtodo hbrido em paralelo possa executar o processo em um tempo menor, ou, ento,
de modo a podemos aumentar a carga de trabalho, estendendo a rea de busca ou processando
funes-objetivo mais complexas, por exemplo, de forma que a execuo do programa em
paralelo leve um mesmo tempo de execuo, porm, usando mais processadores.
3.

ESTRATGIA DE IMPLEMENTAO PARALELA

Em uma rpida anlise do algoritmo hbrido (Fig.3), pode-se verificar que a cada iterao
uma nova soluo obtida e que cada uma delas uma soluo independente das outras. Isso
significa que, para uma primeira abordagem de paralelizao do algoritmo serial, podemos
aproveitar essa independncia para distribuir o nmero total de execues ( ) do algoritmo
hbrido (carga) entre vrias unidades de processamento, fazendo:
(1)
onde
o nmero de iteraes individuais executadas em cada unidade de processamento,
o nmero total de iteraes do algoritmo hbrido dado a priori e
o nmero de unidades
de processamento envolvidas na execuo do algoritmo hbrido paralelo.
No caso em que
no for divisvel por , j que o nmero de iteraes uma valor
inteiro, teramos uma situao em que existiriam algumas unidades de processamento

XVII Encontro de Modelagem Computacional


V Encontro de Cincia e Tecnologia de Materiais
Universidade Catlica de Petrpolis (UCP), Petrpolis/RJ, Brasil. 15-17 out. 2014

executando um nmero de iteraes maior do que outras. Isso acabaria fazendo com que
algumas unidades executassem mais rpido do que outras e ficassem esperando (idle time) por
aquelas que ainda no tivessem terminado o seu trabalho.
Afim de evitar que haja uma distribuio desigual da carga de trabalho
(desbalanceamento de carga) entre as unidades de processamento envolvidas na execuo do
programa em paralelo, podemos redefinir a Eq.(1) de forma que o nmero total de iteraes
( ) no seja mais informado, mas sim obtido indiretamente em funo de um nmero de
iteraes individuais ( ) dado a priori, de modo que todas as unidades de processamento
executem um mesmo nmero de iteraes.
(2)
3.1. Algoritmo hbrido paralelo
Em uma primeira abordagem, o algoritmo hbrido paralelo pode ser implementado
utilizando a troca de mensagens - tcnica computacional paralela que permite a transferncia
de dados, distribuio de trabalhos e sincronizao de aes entre processos paralelos,
realizados atravs da chamada de funes de envio (Send) e de recebimento (Receive) de
mensagens -, utilizando a biblioteca MPI (Message Passing Interface) (Pacheco, 1997 e 1998;
Snir et al., 1996).
O modelo de programao utilizado na implementao paralela do algoritmo hbrido o
SPMD (Single Program Multiple Data), em que um conjunto de unidades de processamento
so reunidas atravs de um canal de comunicao fsico (p.ex. barramento, cabo de rede, etc.),
onde cada uma das unidades recebe uma cpia de um mesmo programa (Single Program)
mais os dados necessrios para o seu processamento, que so divididos entre os processadores
(Multiple Data).
Quando o programa paralelo executado, as unidades de processamento recebem um
nmero de processo, ou rank, que as identifica e, to logo podem, iniciam a execuo do
programa em paralelo, independente dos demais processadores. Quando necessrio, as
unidades podem parar a execuo normal do programa para fazerem trocas de dados e/ou
controles com as outras unidades de processamento.
Para que haja um controle centralizado das aes e um ponto de distribuio e coleta de
dados, elege-se uma das unidades de processamento, tambm conhecida como root, para
executar essa tarefa. Normalmente, a unidade escolhida aquela cujo rank igual a zero
(rank=0).
De modo a minimizar os impactos causados pelo tempo de comunicao gasto com a
troca de dados (overhead de comunicao) entre as unidades de processamento e o root, ao
invs de transmitir todas as razes encontradas em cada unidade de processamento, pode-se
diminuir a quantidade de dados a serem enviados, retirando-se as razes repetidas do conjunto
de solues obtidas em cada unidade de processamento, reduzindo-as para um conjunto
menor de razes distintas, que dever ser transmitido para o root, onde se reuniro todas as
solues para serem selecionadas (retira-se as razes repetidas do conjunto completo e,
escolhe-se aquela que minimiza a funo-objetivo) e, finalmente, ser apresentado como o
conjunto de razes soluo do algoritmo hbrido paralelo (Fig.4).

XVII Encontro de Modelagem Computacional


V Encontro de Cincia e Tecnologia de Materiais
Universidade Catlica de Petrpolis (UCP), Petrpolis/RJ, Brasil. 15-17 out. 2014

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:

Defina um nmero de iteraes individuais


Defina = vetor de razes obtidas pelo processo de rank=i
Para k=1 at faa
Execute a rotina
Faa
Execute a rotina
Faa
Fim_para
Filtre as razes repetidas em , classificando-as por aproximao
Minimize cada classe de vetores, gerando um valor por classe (razes distintas)
Envie as razes distintas para o processo root
Se root ento
Defina = vetor soluo
Para i=0 at np faa
Receba as razes distintas do processo i
Fim_para
Filtre as razes repetidas, selecionando aquelas que
apresentam um melhor resultado
18:
Copie as razes distintas de em
19:
Imprima o vetor soluo
20: Fim_se

Figura 4 - Algoritmo hbrido paralelo.


4. TESTES E ANLISE DE RESULTADOS
4.1. Arquitetura empregada
Os testes e os resultados apresentados nesse trabalho foram realizados e obtidos em uma
estao de trabalho instalada no Laboratrio de Experimentao e Simulao Numrica em
Transferncia de Calor e Massa (LEMA) do Campus Regional Nova Friburgo, IPRJ/UERJ.
O equipamento um Dell Precision Workstation T7400, com dois processadores Intel
Xeon Quad-Core E5405 2 GHz, 2x6 MB L2 cache, 1333 MHz FSB - totalizando oito
unidades de processamento -, Memria de 4 Gb DDR2 SDRAM 667MHz.
As aplicaes em paralelo foram processadas sob o sistema operacional Linux (Ubuntu
14-02 LTS), usando o pacote MPICH (verso 3.0.4).
4.2. Funes-teste
Para os teste de execuo do programa em paralelo, foram usados as mesmas funesteste empregadas na tese de Silva (2009), apresentadas na Tabela-1 dada abaixo.

XVII Encontro de Modelagem Computacional


V Encontro de Cincia e Tecnologia de Materiais
Universidade Catlica de Petrpolis (UCP), Petrpolis/RJ, Brasil. 15-17 out. 2014

Tabela 1 - Funes-teste.
No

Funo-teste

Sistemas de equao

No de razes
da funo

Bini e Mourrain (BM)


8

1
(Bini e Mourrain, 2004)

Himmelblau (HIMM)
9

2
(More et al., 1981)

Sistema Quase Linear de Brown


(PQL)
12

3
(Grosan e Abraham, 2008)

Sistema Polinomial de Alto Grau


(SPAG)
12

4
(Kearfott, 1987)

Sistema trigonomtrico (ST)


13

5
(Hirsch et al., 2006)

Para que os sistemas de equaes (Tab.1) possam ser resolvidos pelo mtodo hbrido,
preciso transformar as equaes das funes-teste em um problema de minimizao, elevando
cada equao ao quadrado e convertendo-as em parcelas de uma soma, de modo a formar uma
funo-objetivo no negativa.

(3)
Cada um dos sistemas de equaes , ento, transformado em um problema de
minimizao, onde os mnimos globais nulos da funo-objeto (Eq.3) passam a representar as
solues do sistema original. Dessa forma, o problema assume o seguinte formato:

(4)

XVII Encontro de Modelagem Computacional


V Encontro de Cincia e Tecnologia de Materiais
Universidade Catlica de Petrpolis (UCP), Petrpolis/RJ, Brasil. 15-17 out. 2014

4.3. Resultados
Na avaliao de desempenho, os tempos de execuo apresentados (Fig.5) foram obtidos
atravs da mdia aritmtica simples dos tempos alcanados em trs execues completas do
programa paralelo para cada uma das funes-teste apresentadas na Tabela-1.
Em cada execuo, foram realizadas 840 avaliaes (
=840). Esse nmero foi utilizado
por produzir quantidade inteiras de avaliaes individuais ( ={480, 280, 210, 168, 140, 120,
105}) nos arranjos das unidades de processamento executando em paralelo
( ={2,3,4,5,6,7,8}).

Figura 5 - Tempos de processamento (seg.).


Nos grficos de tempos de processamento (Fig.5), observa-se que o desempenho do
programa paralelo foi particularmente ruim para o grupo de funes que apresentam tempos
computacionais muito pequenos (< 2seg.) quando executados serialmente. Para esses casos, o
emprego do programa serial o mais indicado.
Esse desempenho ruim explica-se em razo do overhead (sobrecarga) introduzido pelo
tempo gasto no processamento das funes MPI e, principalmente, pelo tempo consumido
com a comunicao de dados realizado entre as unidades de processamento.
No entanto, quando as funes-teste demandam um tempo maior para serem processadas,
os overheads do programa paralelo so compensados com os ganhos do paralelismo. Assim,

XVII Encontro de Modelagem Computacional


V Encontro de Cincia e Tecnologia de Materiais
Universidade Catlica de Petrpolis (UCP), Petrpolis/RJ, Brasil. 15-17 out. 2014

quanto maiores so os tempos de processamento das funes-teste, maiores so os ganhos do


programa paralelo, justificando o seu uso nesses casos.
O valor da acelerao (speedup), apresentado nos grficos da Figura-6, foi obtido atravs
da Equao-5, tambm conhecida como acelerao absoluta (absolute speedup), que usa o
tempo de processamento
alcanado pelo programa serial e o tempo obtido pela
execuo do programa paralelo
, empregando
unidades de processamento.

(5)

Figura 6 - Speedups.
Aqui mais uma vez, verifica-se que o desempenho do programa paralelo maior nos
casos em que as funes-objetivo demandam um esforo computacional maior para serem
processadas.

XVII Encontro de Modelagem Computacional


V Encontro de Cincia e Tecnologia de Materiais
Universidade Catlica de Petrpolis (UCP), Petrpolis/RJ, Brasil. 15-17 out. 2014

5. CONCLUSO
Em uma primeira abordagem de paralelizao do algoritmo hbrido, o programa paralelo
mostrou-se promissor. Nos casos em que a funo-objetivo demande um pequeno esforo
computacional para ser processada, aconselha-se o uso do programa serial, visto que este
apresenta um desempenho melhor nesses casos.
Para as situaes em que a funo-objetivo demande maiores esforos computacionais,
consumindo maiores tempos de processamento, o programa paralelo apresenta um melhor
desempenho em relao verso serial, justificando o seu emprego para estes casos.
Longe de esgotar as possibilidades e a aplicao de outras abordagens de paralelizao
para se alcanar nveis maiores de paralelismo e, portanto, melhores desempenhos
computacionais, essa primeira verso do programa paralelo do algoritmo hbrido uma
ferramenta til para a soluo de problemas que exijam um nvel maior de esforo
computacional, com uma caracterstica intrnseca muito importante, que a escalabilidade do
programa paralelo. O programa foi desenvolvido de forma a permitir o aumento do nmero de
unidades de processamento envolvidas na execuo do algoritmo hbrido em paralelo.

Agradecimentos
O autor agradece ao apoio do Prof. Antnio Jos da Silva Neto pela cesso do
equipamento do laboratrio LEMA (Laboratrio de Ensaios Mecnicos) localizado no
Instituto Politcnico (IPRJ/UERJ), Campus Nova Friburgo, usado na realizao dos testes
computacionais apresentados nesse trabalho.

REFERNCIAS
Bini, D.A.; Mourrain, B. Cyclo, from polynomial test suite.
Disp. em: http://www-sop.inria.fr/saga/POL/BASE/2.multipol/cyclohexan.html. Acesso em: 2014.
Bondi, A.B. Characteristics of Scalability and Their Impact on Performance. Proceedings of the 2nd
International Workshop on Software and Performance,Ottawa, Ontrio, Canad, 2000, p. 195-203. ISBN 158113-195-X.
Grama, A.; Gupta, A.; Karypis, G.; Kumar, V. Introdution to Parallel Computing. 2ed. Pearson. 2003.
Grosan C.; Abraham A. Multiple solutions for a system of nonlinear equations. International Journal of
Innovative Computing, Information and Control, v. 4, n. 9, sept. 2008.
Hirsch M. J.; Meneses C. N.; Pardalos P. M.; Resende M.G.C. Global optimization by continuous grasp. Mar. 8,
2006. Disp. em: http://www.optimization-online.org/DB_FILE/2006/03/1344.pdf. Acesso em: 2014.
Hooke, R.; Jeeves, T.A. (1961) "direct search solution of numerical and statistical problems", Journal of the
Association for Computing Machinery, v. 8, p. 212-229.
Kearfott, R. B. Abstract generalized bisection and a cost bound. Math. Comput. v. 49, n.179,
1987.
Luss, R.; Jaakola, T. (1973) "Optimization by direct search and systematic reduction of the size of search
region", AIChE Journal, vol. 19.
McCool, M.; Robinson, A.D.; Reinders, J. Structured Parallel Programming: Patterns for Efficient
Computation. Morgan Kaufmann Pub. 2012.
More J.J.; Garbow, B.S.; Hillstrom, K.E. Testing Unconstrained Optimization Software, ACM Transactions on
Mathematical Software, 7, 136, 1981
Moore, G.E. (1965). "Cramming more components onto integrated circuits". Electronics Magazine. p.4. 19 April
1965.
Pacheco, P.S. Parallel Programming with MPI. Morgan Kaufmann Pub. 1997. ISBN: 1-55860-339-5.

XVII Encontro de Modelagem Computacional


V Encontro de Cincia e Tecnologia de Materiais
Universidade Catlica de Petrpolis (UCP), Petrpolis/RJ, Brasil. 15-17 out. 2014

Pacheco, P.S. A User's Guide to MPI. 1998. Disp. em: ftp://math.usfca.edu/pub/MPI/mpi.guide.ps. Acesso em:
19/08/2014.
Silva, M. R. (2011) "Um novo mtodo hbrido aplicado soluo de sistemas no-lineares com razes
mltiplas", XLIII Simpsio Brasileiro de Pesquisa Operacional, Ubatuba/SP.
Silva, M. R. "Um novo mtodo hbrido aplicado soluo de sistemas no-lineares com razes mltiplas", Tese
de Doutorado, UERJ, Nova Friburgo, RJ, 2009.
Snir, M.; Otto, S.; Huss-Lederman, S.; Walker, D.E.; Dongarra, J. MPI: The Complete Reference. Cambridge:
The MIT Press, 1996.
Sutter. H. The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software. Dr. Dobb's Journal,
30(3), March 2005. Disp. em: http://www.gotw.ca/publications/concurrency-ddj.htm. Acesso em:
26/08/2014.

PARALLELIZATION OF A HYBRID ALGORITHM FOR A SOLUTION OF


NONLINEAR SYSTEMS WITH MULTIPLE ROOTS
Abstract. This paper presents a strategy for parallel implementation of a hybrid algorithm for
the solution of nonlinear systems with multiple (roots) solutions, the model is constructed
from two methods: Luus-Jaakola - used to generate initial points as possible candidates the
system solution - and Hooke-Jeeves, used to produce a more refined solution (optimum)
obtained from these points.
Keywords: Optimization,hybrid algorithms , parallel programming

Vous aimerez peut-être aussi