Vous êtes sur la page 1sur 76

Pontifcia Universidade Catlica do Rio Grande do Sul Faculdade de Informtica Ps-Graduao em Cincia da Computao

Estudo sobre a aplicao da Computao Paralela na resoluo de sistemas lineares

Aluno: Cleber Roberto Milani

Orientador: Prof. Dr. Luiz Gustavo Leo Fernandes

Introduo Pesquisa I Porto Alegre, junho de 2008

Contedo
LISTA DE FIGURAS LISTA DE SMBOLOS E ABREVIATURAS iv v

Captulo 1: Introduo
1.1 1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Organizao do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
3 3

Captulo 2: lgebra Linear e Equaes Diferenciais


2.1 2.2 2.3 Equaes Diferenciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4
5 6 8 9 12 15 16 16 17 18

Sistemas de Equaes Lineares Algbricas . . . . . . . . . . . . . . . . . . . . Soluo de Sistemas de Equaes Lineares . . . . . . . . . . . . . . . . . . . . 2.3.1 2.3.2 Mtodos Diretos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mtodos Iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4

Aplicaes prticas de modelagem baseada em EDs e SELAs . . . . . . . . . . 2.4.1 2.4.2 2.4.3 Mtodo dos Elementos Finitos aplicado Odontologia . . . . . . . . . EDs e Mtodo dos Elementos Finitos aplicados Engenharia . . . . . . EDs aplicadas Fsica e Matemtica . . . . . . . . . . . . . . . . . . .

2.5

Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Captulo 3: Computao paralela


3.1 3.2 3.3 Contextualizao Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelagem de programas paralelos . . . . . . . . . . . . . . . . . . . . . . . Medidas em Computao Paralela . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 3.3.2 3.3.3 3.3.4 3.4 Complexidade de tempo em algoritmos especicados por um DAG . . Encontrando um DAG timo . . . . . . . . . . . . . . . . . . . . . . . SpeedUP e Ecincia . . . . . . . . . . . . . . . . . . . . . . . . . . . Granulosidade e Escalabilidade . . . . . . . . . . . . . . . . . . . . .

19
20 20 24 25 26 26 29 30 30 34 37 37 38 39 39 39 40

Classicao das arquiteturas paralelas . . . . . . . . . . . . . . . . . . . . . . 3.4.1 3.4.2 Classicaes Acadmicas . . . . . . . . . . . . . . . . . . . . . . . . Classicaes Comerciais . . . . . . . . . . . . . . . . . . . . . . . .

3.5

Paradigmas de programao paralela . . . . . . . . . . . . . . . . . . . . . . . 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 Task-Farming (ou Master/Slave) . . . . . . . . . . . . . . . . . . . . . Single Program Multiple Data (SPMD) . . . . . . . . . . . . . . . . . Data Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Divide and Conquer . . . . . . . . . . . . . . . . . . . . . . . . . . . Speculative Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . .

3.6

Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Captulo 4: Computao Paralela aplicada os Mtodos Numricos


4.1 Paralelizao de algoritmos numricos simples . . . . . . . . . . . . . . . . . 4.1.1 4.1.2 4.1.3 4.1.4 4.2 Adio de escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . Produto Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adio e Multiplicao de Matrizes . . . . . . . . . . . . . . . . . . . Potncia de uma Matriz . . . . . . . . . . . . . . . . . . . . . . . . .

41
42 43 44 44 45 46 46 49 54

Paralelizao dos Mtodos Iterativos para resoluo de SELAs . . . . . . . . . 4.2.1 4.2.2 Paralelizao do Mtodo de Jacobi . . . . . . . . . . . . . . . . . . . . Paralelizao de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . .

4.3

Implementao da paralelizao dos mtodos iterativos clssicos . . . . . . . . ii

4.4

Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

Captulo 5: Bibliotecas e pacotes para resoluo numrica de SELAs com alto desempenho
5.1 5.2 5.3 5.4 5.5 BLAS Basic Linear Algebra Subprograms . . . . . . . . . . . . . . . . . . . LINPACK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LAPACK Linear Algebra PACKage . . . . . . . . . . . . . . . . . . . . . . scaLAPACK - Scalable LAPACK . . . . . . . . . . . . . . . . . . . . . . . . HPL - High Performance Linpack . . . . . . . . . . . . . . . . . . . . . . . .

57
57 59 61 62 63

Captulo 6: Concluso
BIBLIOGRAFIA

64
65

iii

Lista de Figuras
3.1 DAG de um algoritmo para avaliao da expresso (x1 + x2)(x2 + x3). Fonte: [8]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 DAG de outro algoritmo para avaliao da expresso (x1+ x2)(x2+ x3). Fonte: [8]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Classicao segundo o compartilhamento de memria. Fonte: [Hwa98] apud [19]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 4.2 4.3 4.4 DAG para soma de 16 escalares utilizando 8 processadores. Fonte: [8]. . . . . DAG para soma de 16 escalares com 4 processadores. Fonte: [8]. . . . . . . . Computao paralela da potncia de uma matriz n x n. Fonte: [8]. . . . . . . . Em (a) Grafo de dependncias e (b) DAG para funo com o grafo de dependncias denido por (a). Fonte: Adaptao de [8]. . . . . . . . . . . . . . . . . . 4.5 4.6 DAG para possveis iteraes de Gauss-Seidel Fonte: Adaptao de [8]. . . . . Grafo para iteraes Gauss-Seidel com colorao. Fonte: Adaptao de [8]. . . 48 50 54 34 43 44 46 27 22

iv

Lista de Smbolos e Abreviaturas


ED SELA EDO EDP MDF MEF SOR ED SISD SIMD MISD MIMD PVM MPI UMA NUMA NORMA RPC SPMD Equao Diferencial Sistema de Equaes Lineares Algbricas Equao Diferencial Ordinria Equao Diferencial Parcial Mtodo das Diferenas Finitas Mtodo dos Elementos Finitos Sucessive Overrelaxation Equao Diferencial Single Instruction Stream Single Data Stream Single Instruction Stream Multiple Data Streams Multiple Instruction Streams Single Data Stream Multiple Instruction Streams Multiple Data Streams Parallel Virtual Machine Message Passing Interface Uniform Memory Access Non-Uniform Memory Access Non-Remote Memory Access Remote Procedure Call Single Program Multiple Data v 4 4 4 4 6 6 14 16 30 31 31 31 32 32 32 33 33 37 37

SPMD BLAS

Single Program Multiple Data Basic Linear Algebra Subprograms

38 57

vi

Resumo Diversos problemas das mais variadas reas podem ser modelados atravs de Equaes Diferenciais (EDs) e Sistemas de Equaes Lineares. Uma equao diferencial denida em um conjunto innito de pontos (espao contnuo), entretanto, para que ela possa ser resolvida computacionalmente, necessrio discretiz-la (criar um espao discreto e nito), processo esse que implica na soluo de sistemas de equaes lineares. Um sistema linear tipicamente composto por "n"equaes com "n"variveis, sendo que quando empregados para discretizao de EDs ou modelagem de problemas, os sistemas resultantes costumam apresentar um nmero elevado de variveis, o que torna seu processo de soluo bastante complexo. Nesse contexto, a computao de alto desempenho surge como ferramenta essencial para viabilizar a execuo em tempo vivel dos algoritmos que resolvem tais sistemas. Neste trabalho feita, inicialmente, uma reviso dos conceitos da lgebra Linear envolvidos na soluo de sistemas lineares. Na seqncia apresentada uma reviso dos diversos aspectos da computao paralela, desde as arquiteturas at os paradigmas de programao existentes. Feita essa contextualizao discutese a aplicao da computao paralela nos mtodos numricos e, ao nal, so apresentadas as bibliotecas e pacotes de software mundialmente mais utilizados e que representam o estado da arte na soluo de sistemas lineares por mtodos numricos.

Introduo
Nos ltimos anos tem-se observado que os processadores disponveis no mercado atingiram

freqncias de clock bastante prximas do limite suportado pelas atuais tecnologias, o que tem dicultado crescimentos maiores de sua velocidade. Os fatores que levam a esse cenrio de diculdade so diversos, destacando-se, dentre eles, o aumento do consumo de energia e seus respectivos efeitos colaterais, como dissipao trmica e fenmenos de capacitncia e indutncia parasitas, por exemplo. Tal situao faz com que o aumento da freqncia dos clocks seja um esforo com custos muito elevados e ganhos, proporcionalmente, muito baixos [20]. Alm disso, importante observar que o crescimento da freqncia do clock, isoladamente, no proporciona aumento considervel no desempenho do computador. Outros aspectos, como a ecincia no acesso memria, devem acompanhar o crescimento do clock. O comportamento conhecido como Gargalo de von Neumann dene que o poder de processamento disponibilizado limitado em funo da taxa de transferncia de dados e instrues entre a memria e o processador. Assim, o uso de paralelismo nas arquiteturas uma estratgia para superar essas limitaes [34]. Nesse contexto, a soluo encontrada pelas fabricantes tem sido empacotar diversos processadores em um nico processador, criando os chamados processadores multi-core [20]. Esse processo deu incio popularizao das arquiteturas paralelas entre os usurios domsticos. Em complemento a isso, sabe-se que os fenmenos naturais so inerentemente paralelos, logo, nada mais natural que expressar as computaes pertinentes aos mesmos de forma paralela. Em algumas situaes a ordem de execuo importante para o melhor entendimento do problema real, mesmo que em outras ela seja irrelevante [32]. Todavia, na computao seqencial no possvel trabalhar com essa exibilidade, pois faz-se sempre necessrio denir uma

ordem para a execuo das aes. De fato, o nicho original da computao paralela a computao cientca, dado que, alm das caractersticas de paralelismo inerente, o estudo desses fenmenos exige grande poder de processamento para resoluo dos mais diversos algoritmos numricos. A necessidade original da computao de alto desempenho na computao numrica veio de uma srie de contextos envolvendo equaes diferenciais parciais, como dinmicas de udos, previso do tempo, processamento de imagens entre outros. Nessas aplicaes existe uma quantidade massiva clculos a serem realizados, os quais podem ser facilmente decompostos, tornando-os, portanto, candidatos naturais paralelizao [8]. Nos ltimos anos tem crescido tambm o interesse em outros tipos de computao de larga escala, como, por exemplo, anlise, simulao e otimizao de sistemas de larga escala interconectados, simuladores de las, dentre outros. Outra categoria de problemas abrange a soluo de sistemas de equaes gerais, programao matemtica e problemas de otimizao. Em alguns casos desses problemas, eles podem ser decompostos, porm, a quantidade de subtarefas obtidas na decomposio tende a ser menor e as tarefas mais complexas do que aquelas obtidas no contexto das equaes diferenciais parciais. Conseqentemente, tende-se a utilizar um nmero menor de processadores mais poderosos, coordenados por um mecanismo de controle mais complexo. Em ambas as classes de aplicao, a preocupao principal a mesma, a relao entre custo e velocidade. O hardware no deve ser caro a ponto de se tornar proibitivo, entretanto a computao deve terminar em um tempo que seja aceitvel para uma determinada aplicao [8]. Cabe observar que, mesmo com o crescimento da velocidade dos processadores, a computao paralela possibilita muitas vezes uma relao custo/benefcio melhor que a obtida ao utilizar equipamentos com processadores de ltima gerao. Isso porque, agrupar em um equipamento paralelo processadores mais antigos prove uma alternativa computacional com custo menor e suporte natural a tcnicas de tolerncia a falhas (caracterstica inerente redundncia de hardware) [34]. Atualmente, decorridos diversos anos de ampla utilizao dos sistemas de computao paralela, pode-se ter uma melhor compreenso do potencial e limitaes da rea. Em muitos casos, a computao paralela representa as melhores esperanas de resolver problemas maiores do que aqueles que se consegue resolver nos dias de hoje [8]. Nesse contexto, este trabalho prope um

estudo sobre o paralelismo aplicado aos algoritmos numricos para resoluo de sistemas de equaes lineares, problema esse que est presente na grande maioria dos cenrios envolvendo computao em larga escala.

1.1 Objetivos
Os objetivos desse trabalho consistem em: revisar os conceitos de lgebra linear e computao numrica para resoluo de sistemas lineares; revisar tpicos em geral da computao paralela; relacionar a aplicao da computao paralela com sua aplicao para soluo de problemas da computao numrica; investigar pacotes e bibliotecas largamente utilizados para resoluo de sistemas lineares com computao paralela.

1.2 Organizao do trabalho


Este trabalho est dividido em seis captulos, sendo o primeiro deles a presente introduo. O Captulo 2 apresenta uma reviso sobre equaes diferenciais e lgebra linear, focando, principalmente, na soluo de sistemas de equaes lineares. No Captulo 3 feita uma contextualizao geral sobre a computao paralela, apresentando modelos de hardware e software para sua explorao e algumas medidas que auxiliam na avaliao do paralelismo. O Captulo 4 faz a relao entre os dois anteriores, apresentando a aplicao dos conceitos da computao paralela para otimizao dos algoritmos numricos. No Captulo 5 feito um estudo de caso de bibliotecas e aplicaes que utilizam a computao de alto desempenho para resoluo de sistemas lineares. Por m, o Captulo 6 apresenta as concluses resultantes do trabalho.

lgebra Linear e Equaes

Diferenciais
A Computao Cientca sempre teve como uma de suas grandes aplicaes possibilitar, atravs de tcnicas de modelagem e simulao, um melhor entendimento dos problemas e fenmenos fsicos. Tais fenmenos dependem de variveis contnuas, ou seja, so funes dessas variveis, e podem ser representados por Equaes Diferenciais (ED). A varivel contnua independente e geralmente corresponde a parmetros como tempo, velocidade, distncia, entre outros. J a funo uma varivel dependente e deve descrever da maneira mais el possvel o fenmeno que se propunha reproduzir. Essa representao matemtica recebe o nome de modelagem [11]. As equaes diferenciais so denidas em um conjunto innito de pontos (espao contnuo), entretanto, para que possam ser resolvidas computacionalmente, necessrio discretiz-las (criar um espao discreto e nito), processo esse que implica na soluo de sistemas de equaes lineares algbricas (SELAs) [17, 12]. Esses sistemas, alm de serem utilizados para discretizar as EDs, tambm podem ser utilizados para modelagem de problemas variados. Um sistema linear tipicamente composto por n equaes com n variveis, sendo que na modelagem de problemas reais o nmero de variveis costuma ser bastante elevado, resultando em sistemas bastante complexos. Este captulo apresenta inicialmente conceitos bsicos sobre as Equaes Diferenciais Ordinrias (EDOs) e Equaes Diferenciais Parciais (EDPs), que so, em geral, aquelas que modelam os fenmenos ou problemas. Na seqncia, feita uma reviso sobre os sistemas de

equaes lineares e alguns mtodos para resoluo dos mesmos. Ao nal, so apresentados alguns casos que exemplicam o uso da modelagem e simulao computacional em problemas de reas variadas do conhecimento.

2.1 Equaes Diferenciais


Uma Equao Diferencial aquela cujas incgnitas so funes que aparecem na equao sob a forma das respectivas derivadas. As equaes diferenciais podem ser de dois tipos [11, 17]: Equaes Diferenciais Ordinrias: envolvem uma funo desconhecida e algumas de suas derivadas. As incgnitas dependem de apenas uma varivel independente e a equao contm apenas derivadas totais. Podem ser escritas na forma:

F (x, y (x), y (x), y (x), y 3 (x), ..., y n1 (x), y n (x)) = 0, n 1

(2.1)

Equaes Diferenciais Parciais: envolvem funes com mais de uma varivel independente, ou seja, estabelecem relaes entre uma varivel dependente de duas ou mais variveis independentes. Nesse caso as derivadas so parciais. Uma equao que descreve uma varivel dependente u em termos de duas variveis x e t escrita na forma: ( u u 2u 2u 2u , , u, D ) = A 2 + B +C 2 x x x xt t (2.2)

onde A, B, C e D podem ser constantes ou funes das variveis independentes. Uma derivada parcial de uma funo com dois ou mais argumentos a sua derivada em relao a uma daquelas variveis, mantendo as demais constantes. Considerando como exemplo a frmula para clculo do volume de um cone [11], tem-se que ela depende da altura h e do raio r : V = r 2 h 3 (2.3)

a derivada parcial de V com relao a r dene a taxa com que o volume do cone cresce conforme seu raio aumenta mantendo-se a altura constante. Pode ser escrita como:

2rh V = r 3

(2.4)

A soluo de uma ED uma funo que, alm de satisfazer a equao dada, no contm derivadas nem diferenciais e pode existir ou no e, ainda, caso exista, pode ser nica ou no. Existem trs tipos de solues para EDs: a geral (soluo que contm tantas constantes arbitrrias quantas forem as unidades da ordem de integrao), a particular (soluo deduzida da soluo geral atribuindo-se valores particulares s constantes) e a soluo singular (soluo no deduzida da soluo geral e que s existe em alguns casos). A equao 2.1 possui uma famlia de solues, para especicar uma das curvas que formam a famlia de solues precisamos impor condies adicionais na funo Y, as quais so chamadas condies iniciais. O problema com as condies iniciais chamado de problema de valor inicial ou problema de condies iniciais. Alm dos problemas de valores iniciais, podemos ter problemas com condies de contorno, isto , alm da condio no incio do fenmeno, temos tambm uma condio a atingir no m do fenmeno [17]. A soluo analtica de equaes diferenciais , em geral, impraticvel, o que leva grande utilizao de mtodos numricos que, por sua vez, substituem a soluo exata analtica por uma soluo aproximada. Porm, para que as EDs possam ser resolvidas computacionalmente, faz-se necessrio discretiz-las, uma vez que elas so denidas em um conjunto innito de pontos. Existem vrios mtodos que podem ser utilizados para esse propsito, dentre os quais se destacam o Mtodo das Diferenas Finitas (MDF) e Mtodo dos Elementos Finitos (MEF) , cada um apresenta vantagens e desvantagens, cabendo ao usurio denir qual ser utilizado. Entretanto, os mtodos tm em comum o fato de que implicam na resoluo de sistemas de equaes algbricas lineares [12, 18, 30], que o foco do presente trabalho.

2.2 Sistemas de Equaes Lineares Algbricas


Diversos problemas da Matemtica Numrica so modelados em termos de um Sistema de Equaes Lineares Algbricas. Isso vale em geral para o tratamento numrico de equaes funcionais lineares que ocorrem, entre outras, como equaes diferenciais parciais ou ordinrias 6

e equaes integrais. Um sistema linear tipicamente composto por n equaes com n variveis e pode ser escrito da seguinte forma [17]:

Ax = y

(2.5)

onde A uma matriz formada pelos coecientes, x o vetor das incgnitas do sistema, as quais devero ser encontradas, e y o vetor dos termos independentes. A teoria sobre SELAs oriunda da lgebra linear e no ser aprofundada neste trabalho, uma vez que o foco do mesmo o tratamento numrico que a resoluo desses sistemas requer. Dado que a soluo numrica dos SELAs baseia-se em conceitos de matrizes, algumas denies bsicas, as quais sero usadas no decorrer do trabalho, so rapidamente revisadas a seguir [17, 33]: 1. Uma matriz que possui o mesmo nmero de linhas m e colunas n dita matriz quadrada; 2. Uma matriz em que todos os elementos que no compem a diagonal principal valem zero ((i, j ), i = j aij = 0) e os elementos da diagonal principal tm valor diferente de zero ((i, j ), i = j aij = 0) dita matriz diagonal; 3. Uma matriz onde os elementos da diagonal principal e os acima dela so diferentes de zero ((i, j ), i < j aij = 0) e aqueles abaixo da diagonal principal so iguais a zero ((i, j ), i > j aij = 0) dita matriz triangular superior; 4. Uma matriz onde os elementos da diagonal principal e os abaixo dela so diferentes de zero ((i, j ), i > j aij = 0) e aqueles acima da diagonal principal so iguais a zero ((i, j ), i < j aij = 0) dita matriz triangular inferior; 5. Se a diagonal principal tiver seus elementos nulos ((i, j ), i = j aij = 0), as matrizes denidas nos itens 3 e 4 so ditas estritamente superior e estritamente inferior, respectivamente; 6. As matrizes quadradas tm um determinante denido por uma frmula recursiva: det(A) ou |A| = a11 M11 a12 M12 + a12 M13 . . . onde M1k o determinante da matriz obtida de A1 eliminando sua linha 1 e coluna k; 7

7. Uma matriz cujo determinante diferente de 0 dita matriz regular ou no singular; 8. Chama-se tranposta de A matriz AT obtida convertendo-se as linhas de A em colunas e as colunas em linhas; 9. Se A = AT , ento A dita matriz simtrica; 10. Uma matriz que possui aproximadamente 80% ou mais de seus elementos nulos dita matriz esparsa. Esse tipo de matriz ocorre freqentemente nos problemas prticos, principalmente naqueles modelados por EDPs; 11. Uma matriz na qual todos os elementos no nulos concentram-se na vizinha da diagonal principal dita matriz banda;

2.3 Soluo de Sistemas de Equaes Lineares


Os mtodos para resolver sistemas de equaes lineares so divididos em duas classes: mtodos diretos e indiretos. Um mtodo dito direto quando, atravs da aplicao de um nmero nito de operaes aritmticas, chega-se a uma soluo exata, ou seja, com preciso innita. J os mtodos indiretos, mais conhecidos como iterativos, baseiam-se na repetio de uma seqncia nita de repetio de operaes que objetivam aproximar a soluo. A soluo de sistemas lineares em uma mquina apresenta erro tanto ao utilizar os mtodos diretos como utilizando os iterativos. Nos algoritmos diretos a soluo apresenta erros causados pelo arredondamento, o erro total composto pela soma do erro de entrada, ou seja, aquele resultante da representao do SELA no sistema de ponto utuante da mquina, com o erro de aritmtica, tambm devido representao no sistema de ponto utuante. No caso dos sistemas iterativos, alm desses dois erros, soma-se ainda o erro de discretizao que advm do fato de truncarmos (cortarmos) a seqncia innita de repeties aps um nmero nito de iteraes [17].

2.3.1 Mtodos Diretos


Os mtodos diretos so aqueles que aps a aplicao de um nmero nito de operaes aritmticas elementares obtm uma soluo exata. Existem diversos mtodos desse tipo, e em geral eles aplicam-se mais ecientemente a matrizes (ou sistemas lineares) densas. Sero abordados apenas apenas os mtodos de Gauss, com algumas alteraes do mesmo, e a Fatorao LU. Os algoritmos que implementam computacionalmente esses mtodos no sero apresentados neste trabalho e podem ser encontrados em [17] e [7]. Eliminao de Gauss o mtodo direto mais utilizado para resolver SELAs densos de pequeno (matrizes de ordem at 30) e mdio (ordem at 50) porte. Para os sistemas densos de grande porte, bem como para os sistemas esparsos de qualquer porte, existem outras tcnicas mais ecientes. O algoritmo bsico de Gauss, em essncia, nada mais do que a aplicao esquemtica das propriedades fundamentais da lgebra linear. Pode ser dividido em duas etapas: triangularizao da matriz e retrosubstituio das variveis [17]. A triangularizao consiste em transformar a matriz A em uma matriz triangular superior U aplicando para isso as seguintes operaes: adio de uma linha com um mltiplo de outra linha e substituio de uma dessas linhas pelo resultado da adio; multiplicao de uma linha por uma constante; troca de linhas. A cada passo o elemento de diagonal da primeira linha da matriz-resto chamado piv. O segundo passo, a retrosubstituio, consiste no clculo do vetor x, soluo de Ax = y atravs da substituio do ltimo componente de x nas equaes anteriores [17, 33]. Eliminao de Gauss com Pivotamento Dependendo do sistema, o algoritmo bsico de Gauss pode apresentar problemas no que diz respeito aos resultados. Esses problemas consistem em erros causados pelos erros de arredondamento, sendo que, nos casos em que o elemento piv for muito pequeno o erro aumenta. Visando a minimiz-lo, surge a idia do algoritmo de Gauss com pivotamento, o qual nada mais do que

o mesmo algoritmo anterior, porm com uma troca sistemtica das linhas [17]. A idia do algoritmo com pivotamento buscar sempre colocar na posio de piv o elemento com maior valor absoluto. Para isso, deve-se freqentemente trocar linhas e colunas no somente quando o piv tem valor zero, mas tambm quando seu valor for muito pequeno. Quando a escolha do piv considera apenas determinada coluna, diz-se que o algoritmo de Pivotamento Parcial, e, nos casos em que escolha do piv considera toda a matriz resto, diz-se que o algoritmo de Pivotamento Total. Cabe observar, porm, que a melhora de preciso proporcionada por este mtodo costuma no ser vantajosa quando considerada em conjunto com o aumento que o mtodo introduz na complexidade do algoritmo [17], cando a cargo de que desenvolve a aplicao decidir o que mais vantajoso em cada caso. Condicionamento de uma matriz Um problema dito mal condicionado quando pequenas alteraes nos valores de entrada acarretam em grandes erros no resultado nal. No caso de SELAs de ordem 2 esse condicionamento pode ser visualizado gracamente de maneira simples, entretanto, em sistemas de ordem maior o procedimento de traar e analisar o grco muito difcil. Assim, necessrio um meio de medir o condicionamento [17]. O condicionamento dado por:

cond(A) = A . A1

(2.6)

onde A a norma da matriz A. Quanto maior o valor de cond(A), mais sensvel o sistema. O condicionamento uma medida interessante porque mtodos como o de Gauss, mesmo com pivotamento, no produzem nenhuma estimativa sobre a exatido da soluo quando executados em uma mquina. Com o condicionamento pode-se determinar o quo convel a soluo do SELA. O condicionamento um nmero do qual interessa a ordem de grandeza e, alm disso, est relacionado com a preciso de mquina usada. Se cond(A) = 105 mas a preciso decimal da mquina for de 17 casas, ento no h problema em se perder os ltimos cinco dgitos. Porm, se a preciso decimal for de apenas 6 casas decimais, ento o resultado ser convel apenas at a primeira casa decimal [17].

10

Existem alguns mtodos que so particularmente teis no caso de matrizes mal condicionadas, porm no sero abordados neste trabalho. Um exemplo o Mtodo de Kaczmarz, o qual pode ser encontrado em [9]. Mtodo de Gauss-Jordan um mtodo direto complementar ao mtodo de Gauss. Consiste em transformar a matriz A em uma matriz diagonal, o que feito em 3 passos: transformao de Ay em uma matriz triangular superior; transformar o resultado em uma matriz triangular inferior; soluo do sistema diagonal resultante. Esse mtodo requer um nmero maior de operaes que a eliminao de Gauss sendo, portanto, menos eciente para resolver sistemas do tipo Ax = y [17]. Decomposio LU Tambm conhecido como Fatorao LU, esse mtodo consiste em transformar a matriz A em um produto de duas outras matrizes L e U , onde L a matriz triangular inferior e U a matriz triangular superior. um dos mtodos mais empregados para resoluo de SELAs, principalmente para sistemas densos de grande porte. Algumas vantagens dos processos de fatorao que eles permitem resolver qualquer sistema que tenha A como matriz de coecientes e no caso de o vetor y ser alterado, a resoluo do novo sistema quase imediata. Em princpio seria necessrio realizar clculos com matrizes inversas para encontrar as matrizes L e U , entretanto, na prtica, pode-se calcular L e U com a simples aplicao da denio de produto e de igualdade de matrizes, ou seja, impondo que LU = A. Para resoluo de SELAs Ax = y de ordem n, se A satisfaz as condies para fatorao LU , ento o sistema pode ser escrito na forma LU x = y . Faz-se ento U x = b e a equao ca reduzida a Lb = y . Resolve-se o sistema triangular inferior Lb = y para obter o vetor b. Na seqncia b substitudo em U x = b e obtm-se o sistema triangular superior cuja soluo o vetor x. Logo, a soluo de SELAs atravs de fatorao LU consiste na soluo de dois sistemas triangulares [7].

11

2.3.2 Mtodos Iterativos


Os mtodos iterativos consistem em arbitrar valores iniciais para x0 e, a partir deles, repetir uma seqncia de passos em que, a cada passo, a aproximao inicial modicada para se aproximar da soluo. Essas modicaes so chamadas passos de relaxao. O processo interrompido quando o vetor de solues chegar a uma vizinhana sucientemente prxima da soluo exata, o que denido atravs de um parmetro chamado critrio de parada. Assim, o nmero de iteraes que sero executadas desconhecido e a soluo do sistema ser dada pelo vetor encontrado na ltima iterao [30, 17]. Os mtodos iterativos so mais indicados do que os diretos para resolver sistemas esparsos, pois os algoritmos diretos no levam em conta uma propriedade importante desses sistemas que o fato de que muitas operaes no precisam ser feitas ao resolv-los, fator esse que considerado nos mtodos iterativos [17]. A idia mais simples de um algoritmo iterativo para resolver Ax = y obtida, resolvendo-se a primeira equao para x1 , a segunda para x2 e assim sucessivamente. Generalizando temos [17]:

xi =

1 (yi ai1 x1 ai2 x2 ai,i1 xi1 ai,i+1 xi+1 ain xn ) aii

(2.7)

onde so conhecidos os valores x1 , x2 , . . . , xi1 , xi+1 , . . . , xn usados no lado direito. Assim, os mtodos iterativos podem ser facilmente deduzidos dividindo-se a matriz A da equao Ax = y em uma soma de duas matrizes mais simples. Se A = S T ento Ax = y ser o mesmo que Sx = T x + y . Dessa forma podemos experimentar a seguinte iterao [33]:

Sxk+1 = T xk + y

(2.8)

Naturalmente apenas isso no garante que o mtodo seja adequado. Para o resultado ser correto, a diviso da matriz A deve satisfazer dois requisitos: o novo vetor xk+1 deve ser fcil de computar, dessa forma, S deve ser uma matriz simples e invertvel e deve tambm ser diagonal ou triangular; a seqncia xk deve convergir para a soluo verdadeira x. A matriz S tambm chamada de pr-condicionador e sua escolha crucial na anlise numrica, pois dessa escolha dependem os critrios de convergncia e a ecincia do mtodo [33]. Simplicando, pode-se 12

dizer que um pr-condicionador qualquer forma de modicao de um sistema linear original, seja ela implcita ou explcita, que faz com que o sistema possa ser mais facilmente resolvido por um mtodo iterativo [30]. A escolha da matriz S determina o mtodo iterativo que teremos. Existem diversas alternativas para decomposio, as mais populares so os tipos L, D e U , onde L a matriz triangular estritamente inferior; U a matriz triangular estritamente superior; D a matriz diagonal. Cabe observar que a matriz D , por denio, no pode conter zeros na diagonal principal, caso isso acontea, deve-se trocar linhas ou colunas na matriz. Alm disso, o erro contido na soluo ser diretamente proporcional ao tamanho dos coecientes da equao de recorrncia, ou seja, organizando-se a matriz de modo a deixar os maiores elementos na diagonal, tende-se a ter um erro menor [33]. Na seqncia so apresentados os mtodos iterativos mais populares, os quais surgem de acordo com a escolha dos pr-condicionadores citados. Assim como nos mtodos diretos, no sero apresentados os algoritmos que implementam esses mtodos computacionalmente, os quais podem ser encontrados em [17, 30]. Cabe ainda observar que esses mtodos so chamados esquemas de relaxao pontual, pois atualizam um componente por vez, e podem ser generalizados para esquemas de relaxao de blocos, onde atualiza-se um conjunto inteiro de valores a cada passo [30]. Mtodo de Jacobi obtido considerando-se a decomposio A = D L U . Como A = S T pode-se obter S = D e T = L + U que substituindo em (2.8) implica em Dx = (L + U )x + y. Isolando-se o vetor das incgnitas e o reescrevendo de acordo com (2.7) tem-se a equao iterativa do Mtodo de Jacobi, a qual, na forma matricial dada por [33, 30]:

xk+1 = D 1 (L + U )xk + D 1 y Reescrevendo na forma de componentes tem-se o passo: 1 (yi aii


n

(2.9)

+1 xk = i

aij xk j)
j =1;j =i

i = 1, . . . , n.

(2.10)

13

Um inconveniente do mtodo de Jacobi que ele requer que se mantenham armazenados todos os componentes de xk at que o clculo de xk+1 esteja completo, o que dependendo do tamanho das matrizes pode ser um problema. Uma abordagem mais natural e que requer apenas a metade do armazenamento comear a utilizar cada componente do novo vetor xk+1 conforme for computado, deixando ento xk livre para ser destrudo. o que ocorre no mtodo de Gauss-Seidel [33, 17]. Mtodo de Gauss-Seidel Neste mtodo considera-se S = D + L e T = -U. Portanto, a equao na forma matricial do mtodo denida como [33, 30]:

xk+1 = (D L)1 U xk + (D L)1 y Cujo passo iterativo na forma de componentes : 1 ( aii


i1 +1 aij xk i j =1 j =i+1 n

(2.11)

+1 xk = i

aij xk j + yi )

i = 1, . . . , n.

(2.12)

Em geral, o mtodo de Gauss-Seidel converge mais rapidamente do que o mtodo de Jacobi, entretanto, h casos em que isso no acontece, bem como tambm h casos em que um mtodo converge e outro no [33]. Mtodo de Relaxamento Sucessivo O mtodo de Gauss-Seidel obtm o valor de uma incgnita na interao k somando o valor da mesma na interao k 1 com uma correo calculada com base em todas as variveis. Aps anos de utilizao desse mtodo percebeu-se que a convergncia pode ser acelerada com introduo de um fator de relaxamento, ou seja, atribuindo-se um peso a essa correo. Atribuindose o valor 1 para continuamos com Gauss-Seidel, j com valores em que > 1 o mtodo passa a utilizar essa acelerao e conhecido como Mtodo de Relaxamento Successivo (Sucessive Overrelaxation - SOR). A escolha do melhor valor para depende de cada problema, embora nunca seja maior do que 2 e, em geral, ca prximo de 1.9 [33]. 14

Considerando-se novamente a decomposio A = L D U e ponderando a correo com , a equao matricial do mtodo SOR dada por [33, 30]:

(D L)xk+1 = [U + (1 )D ]xk + y Cujo passo iterativo na forma de componentes :

(2.13)

+1 xk = ( i

1 ( aii

i1 +1 aij xk i j =1

n k aij xk j + yi )) + 1(1 )xi j =i+1

i = 1, . . . , n.

(2.14)

A busca do valor timo para foi o foco das pesquisas por diversos anos, em [33] so apresentados os passos que levaram concluso de que a escolha tima aquela que faz com que o maior autovalor de L seja o menor o possvel. Em uma matriz de ordem 21, por exemplo, podese obter com um passo SOR o resultado que o mtodo de Jacobi levaria 30 passos para alcanar e, ainda, com uma reduo do erro em 25%. Esse considerado um resultado muito bom gerado a partir de uma idia bastante simples. Sua aplicao real, entretanto, no em problemas de uma dimenso, pois os sistemas Ax = y nesses casos so simples de serem resolvidos, mas naqueles com mais dimenses, como por exemplo na soluo de equaes diferenciais parciais [33].

2.4 Aplicaes prticas de modelagem baseada em EDs e SELAs


Conforme colocado anteriormente, diversas so as reas que utilizam a modelagem e simulao para resolver e obter uma melhor compreenso dos mais variados problemas. As equaes diferenciais tm inmeras aplicaes prticas em medicina, engenharia, qumica, biologia etc, onde as solues dessas equaes so empregadas no processamento de imagens, projeto de pontes, automveis, avies, dentre outros. Esta seo exemplica brevemente algumas dessas aplicaes.

15

2.4.1 Mtodo dos Elementos Finitos aplicado Odontologia


O desenvolvimento do Mtodo dos Elementos Finitos iniciou-se no nal do sculo XVIII, quando Gauss props a utilizao de funes de aproximao para a soluo de problemas matemticos. Conforme visto anteriormente, consiste na discretizao de um meio contnuo (EDs), mantendo as mesmas propriedades do meio original e seu uso s se tornou vivel com o advento dos computadores para solucionar os enormes SELAs gerados na soluo do MEF [29]. O MEF vem sendo utilizado h alguns anos em experimentos relacionados s mais diversas especialidades da Odontologia, em [29] os autores apontam uma srie desses trabalhos. A utilizao do MEF nesses casos traz diversas vantagens se comparada aos mtodos tradicionais, dentre as quais cabe destacar: no h necessidade de laboratrios super equipados com instrumentos especcos, o que reduz os custos dos experimentos; as formas geomtricas podem ser representadas mais prximas das reais, enquanto mtodos tradicionais costumam trabalhar com formas ideais; os resultados numricos apresentam maior exatido, ao contrrio das abordagens analticas que costumam trazer resultados simplicados; os experimentos so mais fceis de conduzir e reproduzir do que aqueles que utilizam seres vivos e tendem a ter resultados mais exatos devido ao maior controle da situao [29]. O MEF aplicado na Ortodontia para: estudo da distribuio das tenses durante o movimento dentrio; estudo do efeito de foras ortopdicas no complexo craniofacial; avaliao da resistncia de base de braquetes e do desempenho de molas para fechamento de espaos, dentre outros. Esses estudos obtm informaes, por exemplo, sobre o comportamento dos tecidos e movimentos do complexo maxilar, o que permite otimizaes no uso de aparelhos e em implantes dentrios [29].

2.4.2 EDs e Mtodo dos Elementos Finitos aplicados Engenharia


Em todas as reas da engenharia uma srie de situaes podem ser simuladas atravs de equaes diferenciais. Um problema freqente na engenharia civil e engenharia mecnica anlise das tenses e deformaes de materiais, o qual facilmente modelado por EDPs. Na engenharia geotcnica um fenmeno muito conhecido o uxo de gua em meios porosos, que

16

analisado, por exemplo, em casos de barragens de terra com uxo e enchimento estacionrios, ou seja, em que a carga hidrulica no varia com o tempo. Outra aplicao a anlise das barragens de terra com uxo transiente, ou seja, em que o nvel de gua pode variar em condies rpidas, levando a uma variao na umidade do material e, conseqentemente, da condutividade eltrica do mesmo. Nesse caso, a modelagem dada por uma equao diferencial em que so denidas condies de contorno e condies iniciais [12]. A engenharia eltrica tambm aplica equaes diferenciais em diversos estudos, dentre eles, pode-se citar a anlise de capacitncia, indutncia e diferenas de potencial dos circuitos eltricos. J na Engenharia Qumica, um procedimento bastante comum efetuar balanceamentos de massa, volume ou energia em um determinado sistema, como um reator qumico, por exemplo, modelagem que pode ser feita atravs de uma EDO [11].

2.4.3 EDs aplicadas Fsica e Matemtica


Diversas frmulas bastante conhecidas da Fsica e Matemtica so oriundas de ou podem ser vistas como equaes diferenciais, a segunda Lei de Newton (F = ma) um exemplo. Outra lei de Newton que consiste em uma ED a Lei de Resfriamento, a qual diz que a taxa de variao da temperatura de um corpo em resfriamento proporcional diferena entre sua temperatura atual e a temperatura constante do meio ambiente. Clculos de trajetrias, escoamento de udos, a Lei de Hooke, a Equao da Onda, Equaes de Maxwell, Equao do Calor, Lei de Torricelli, enm, grande parte dos problemas cotidianos da fsica podem ser modelados por EDs [11]. No contexto da matemtica essa situao se repete. O estudo das dinmicas de populaes baseia-se em equaes diferenciais que modelam o crescimento ou decaimento da populao ao longo do tempo (modelos de Malthus e Verhulst). Um exemplo da matemtica nanceira modelada por EDPs o clculo de juros e investimentos. Considerando uma caderneta de poupana que recebe um investimento inicial, o crdito dos juros mensais e tambm depsitos adicionais contnuos, podem-se relacionar esses parmetros por uma ED para obter informaes do tipo: qual deve ser o valor dos depsitos adicionais para atingir o objetivo de acumular um determinado valor em um perodo de tempo [11].

17

2.5 Concluso
As equaes diferenciais so uma das principais ferramentas dos cientistas nas mais variadas reas do conhecimento. Entretanto, a soluo analtica dessas equaes bastante complicada. A alternativa, que a soluo numrica, era impraticvel no passado mas tornou-se vivel graas aos avanos da computao, principalmente, nas ltimas duas dcadas, o que tem possibilitado diversos avanos na simulao e otimizao de problemas. A soluo numrica das EDs exige uma discretizao a qual feita, em geral, pelos Mtodos das Diferenas Finitas e Mtodos dos Elementos Finitos, em ambos os casos o processo resulta na necessidade de resolver sistemas de equaes lineares algbricas. Alm disso, muitos problemas podem ser modelados diretamente na forma de sistemas lineares, assim como a resoluo de outros tipos de equaes e modelos tericos passa por passos em que necessrio resolver SELAs. Essas realidades demonstram a importncia de pesquisar constantemente maneiras para otimizar os mtodos de soluo tanto em termos de ecincia como de preciso.

18

Computao paralela
A perspectiva da explorao do paralelismo nos sistemas computacionais to antiga quanto

os primeiros computadores. Trabalhos desenvolvidos por von Neumann, na dcada de 40, j ponderavam a possibilidade de utilizar algoritmos paralelos. Registros apontam que no perodo de 1944 a 1947 Stibitz e Williams teriam desenvolvido, nos laboratrios da Bell Telephone, aquele que considerado um dos primeiros trabalhos envolvendo paralelismo com implementao em hardware, o sistema MODEL V. Esse sistema era formado por dois processadores e trs canais de entrada e sada, possibilitando a execuo simultnea de dois programas distintos [34]. Durante essa trajetria, o emprego do paralelismo j passou por fases de extremo otimismo, quando era visto como nica e promissora soluo para as mais complexas aplicaes computacionais, bem como por fases pessimistas, nas quais foi encarado como um nicho de mercado decadente [32]. Nos ltimos anos a computao paralela avanou muito e, atualmente, est presente em todos os nveis da computao indo desde o paralelismo de instrues em um pipeline, passando pelos processadores multi-core, colocados como soluo para os problemas de limitao no crescimento do clock, at sistemas distribudos de larga escala como as grades computacionais. Neste captulo sero inicialmente abordados aspectos gerais da computao paralela e denidos alguns conceitos fundamentais da rea. Na seqncia, discute-se a necessidade de modelos para desenvolvimento de software e algumas medidas utilizadas na computao paralela so descritas. Feito isso, so apresentadas as classicaes dos sistemas paralelos em relao arquitetura de hardware. Por m, so abordados os paradigmas de programao utilizados para explorao desses sistemas.

19

3.1 Contextualizao Geral


Muitas vezes os termos computao paralela e computao distribuda so utilizados em conjunto, importante, no entanto, saber que podem tratar-se de sistemas diferentes. Uma distino inicial dizer que os sistemas de computao paralela so aqueles compostos por um conjunto de processadores sicamente prximos, os quais tm como objetivo trabalhar conjuntamente para resolver um problema e se comunicam de forma convel e previsvel. Os sistemas distribudos, por outro lado, seriam aqueles cujos processadores podem estar geogracamente distribudos e entre os quais a comunicao uma questo mais problemtica, dado que mensagens podem ser perdidas ou serem entregas com atraso desconhecido. A topologia do sistema distribudo pode ser alterada em tempo de execuo, seja devido a problemas de comunicao como links quebrados ou ns que deixam de funcionar ou pela adio/remoo de processadores. Alm disso, os sistemas distribudos apresentam pouco ou nenhum controle centralizado, cada processador pode estar executando suas prprias atividades ao mesmo tempo que coopera com o SD [8]. Assim, pode-se dizer que os sistemas paralelos so aqueles cujo hardware dedicado e tende a ser homogneo, enquanto na computao distribuda o hardware mais heterogneo e a computao distribuda em si pode ser apenas uma atividade secundria do sistema. Essa diferenciao importante, pois, embora no exista uma linha clara dividindo os dois, ajuda a perceber que cada caso possui questes prprias, mesmo que muitas delas sejam compartilhadas e possuam, inclusive, solues semelhantes [8].

3.2 Modelagem de programas paralelos


A compreenso do inter-relacionamento entre as caractersticas de um algoritmo paralelo e as da arquitetura em que ele ir executar fundamental, pois para que o processamento possa ter desempenho otimizado em uma arquitetura paralela necessrio haver equilbrio entre as caractersticas do hardware e software. Entretanto, as arquiteturas para processamento paralelo esto em constante evoluo e, portanto, nenhuma arquitetura pode ter a expectativa de se manter como soluo ideal por mais do que alguns anos. Assim, buscando contornar o problema da falta 20

de portabilidade e curto tempo de vida til do software paralelo, surgiu a idia da criao de modelos sucientemente abstratos que possibilitem ocultar os aspectos da arquitetura e manter o desempenho da aplicao quando houver mudanas do hardware [34, 32]. Os autores de [32] argumentam que um modelo desse tipo pode ser construdo da seguinte forma: adota-se uma mquina abstrata para a qual o software desenvolvido e a mquina, por sua vez, emulada pelas diferentes arquiteturas paralelas. Dessa forma, os aspectos do projeto de software podem ser desassociados daqueles de sua implementao. Argumentam ainda que um modelo ideal deve atender algumas necessidades mnimas: oferecer facilidade e metodologias para o desenvolvimento de software, ser independente de arquitetura, ser de fcil compreenso, apresentar garantias de desempenho e medidas de custo. Uma classicao dos modelos para desenvolvimento de software paralelo, utilizando como critrio o nvel de abstrao com que o paralelismo pode ser explorado, sugerida em [32]. As categorias apresentadas so as seguintes: Modelos nos quais o paralelismo explorado de forma totalmente implcita; Modelos com assinalamento do paralelismo explcito; Modelos com assinalamento e decomposio do paralelismo explcitos; Modelos com assinalamento, decomposio e mapeamento do paralelismo explcitos; Modelos com assinalamento, decomposio, mapeamento e comunicao explcitos; Modelos em que o paralelismo explorado de forma totalmente explcita [32]; Os esforos da comunidade cientca tm sido direcionados para os modelos de mais alto nvel, os quais buscam facilitar a programao [34]. O OpenMP, API para desenvolvimento de aplicaes paralelas em arquiteturas de memria compartilhada, embora no seja um modelo, pode tambm ser visto como um esforo no sentido de facilitar a programao. O programador OpenMP precisa apenas delimitar, atravs de diretivas de compilao, os trechos paralelizveis do cdigo, sem se preocupar com aspectos de sincronizao e comunicao. Feito isso, os compiladores geram automaticamente o cdigo paralelo [20]. Entretanto, at os dias de hoje nenhum modelo que atendesse as necessidades propostas por [32] foi desenvolvido. Neste trabalho os algoritmos sero apresentados gracamente atravs de DAGs (Directed Acyclic Graphs ou Grafos Dirigidos Acclicos), uma modelagem independente de hardware e das questes de comunicao que permite a visualizao do problema em um alto grau de abstrao.

21

Um grafo acclico dirigido um grafo dirigido sem ciclos, isto , para qualquer vrtice v , no h nenhum caminho dirigido comeando e acabando em v . Seja G = (N, A) um DAG, onde N = {1, . . . , N } o conjunto de ns e A o conjunto dos arcos dirigidos, cada n representa uma operao que pode ser feita pelo algoritmo e os arcos as dependncias de dados. Em particular, um arco (i, j ) A indica que a operao correspondente ao n j usa o resultado da operao correspondente ao n i. As operaes podem ser elementares, como a adio de dois escalares, ou operaes de alto nvel, como a execuo de uma subrotina. A Figura 3.1 exemplica essa modelagem, o algoritmo representado corresponde expresso (x1 + x2)(x2 + x3). O smbolo dentro de cada n ilustra a operao por ele realizada, sendo que S corresponde a operao elevao ao quadrado (square) [8].

Figura 3.1: DAG de um algoritmo para avaliao da expresso (x1 + x2)(x2 + x3). Fonte: [8]. Um n i N dito predecessor de outro n j N se (i, j ) A. Dene-se como grau de entrada de um n i N o nmero de predecessores desse n e como grau de sada o nmero de ns dos quais i predecessor. Os ns com grau zero de entrada so chamados ns de entrada e os ns com grau zero de sada so ditos ns de sada. O conjunto de todos os ns de entrada representado por N0 . Um caminho positivo uma seqncia i0 , . . . , ik de ns tais que (ik , ik+1 ) A para k = 0, . . . , K 1, onde K dito o tamanho do caminho. Denota-se por D a profundidade de um DAG, a qual dada pelo tamanho do maior caminho positivo. Considerando xi o resultado da operao correspondente ao i-simo n do DAG, ento o DAG

22

pode ser visto como uma representao de dependncias funcionais na forma [8]:

xi = fi ({xj /j precede i})

(3.1)

Nessa representao, fi uma funo descrevendo a operao correspondente ao i-simo n. Se i um n de entrada, ento xi no depende de outras variveis e visto como uma varivel de entrada externa. Assim, a operao correspondente a um n de entrada i essencialmente o tempo gasto para ler o valor da varivel de entrada xi , o qual assume-se como insignicante. Para um n i que no de entrada (i N0 ), assume-se que a operao correspondente, ou seja, a avaliao da funo fi , demora uma unidade de tempo. Entretanto, essa premissa somente razovel quando cada n representa uma operao aritmtica, pois em algoritmos numricos mais complicados o tempo de execuo em cada n pode ser bastante diferente. Por isso, utilizase a denio auxiliar de escalonamento descrita a seguir [8]. Um DAG uma representao apenas parcial do algoritmo, a qual especica que operaes acontecem sob quais operandos e impe restries de precedncia entre elas. Para representar completamente o algoritmo paralelo preciso ainda especicar qual processador ser responsvel por cada operao e em que tempo isso acontecer. Para isso, assume-se p como sendo o conjunto dos processadores disponveis e tambm que cada processador capaz de fazer qualquer uma das operaes desejadas. Para cada n i que no um n de entrada (i N0 ), representa-se por Pi o processador para o qual foi designada a responsabilidade de realizar a operao i. Tambm para i N0 , assume-se ti como uma varivel inteira positiva que especica o tempo que leva para a operao correspondente ao n i ser completada. Nenhum processador designado para os ns de entrada e utiliza-se a conveno ti = 0 para cada n de entrada i. Existem duas restries que precisam ser impostas [8]: Um processador pode realizar no mximo uma operao por vez, logo (i N0 , j N0 , i = j, ti = tj ) Pi = Pj . (i, j ) A tj ti + 1. Ou seja, se existe uma aresta entre um n i e outro j , a operao correspondente ao j somente pode iniciar aps a operao do n i estar completa.

23

Denidos Pi e ti sujeitos s restries acima, diz-se que o DAG est escalonado para execuo paralela e dene-se como escalonamento o conjunto {(i, Pi , ti )/i N0 }. Essa congurao pode ser aplicada a uma grande variedade de implementaes. Por exemplo, o processador Pi pode armazenar o resultado xi de sua operao em uma memria compartilhada e esse ser recuperado por outros processadores. Alternativamente, em uma implementao por troca de mensagens, o processador Pi envia uma mensagem com o valor de xi para qualquer processador Pj que precise desse valor, ou seja, (i, j ) A. Na prtica, os acessos memria ou transmisses de mensagens demoraram um certo tempo, o qual foi ignorado at ento. Assim, se a transmisso de uma mensagem, por exemplo, requer unidades de tempo, e se (i, j ) A, ento a restrio tj ti + 1 poderia ser modicada para ti ti + 1 se Pi = Pj e ti ti + + 1 se Pi = Pj [8].

3.3 Medidas em Computao Paralela


Existem diversas medidas no contexto da computao paralela, sendo as principais as medidas de complexidade, as quais objetivam quanticar o total de recursos computacionais utilizados por um algoritmo paralelo, e as medidas de desempenho e ecincia. Algumas medidas consideram, por exemplo, o nmero de processadores, o tempo gasto at o algoritmo terminar (complexidade de tempo) ou o nmero de mensagens transmitidas na execuo do algoritmo (complexidade da comunicao). As medidas de complexidade so freqentemente expressas como funes do tamanho do problema a ser resolvido e informalmente denidas como o nmero de entradas da computao. Assim, um algoritmo para somar n inteiros, por exemplo, dito de tamanho n. No caso dos algoritmos distribudos existe uma preocupao adicional para denio da complexidade de tempo: possvel que um algoritmo termine e nem todos os processadores tenham conhecimento disso. Nesses casos natural somar o tempo adicional necessrio para os processadores tomarem conhecimento da terminao [8]. A seguir so discutidas algumas dessas medidas.

24

3.3.1 Complexidade de tempo em algoritmos especicados por um DAG


Seja G = (N, A) um DAG representando um algoritmo paralelo e seja {(i, Pi , ti )/i N0 } um escalonamento deste DAG que usa p processadores, o tempo gasto por esse escalonamento igual a M AXiN ti . Dene-se Tp como sendo o mnimo de M AXiN ti , o qual pego dentre todos os possveis escalonamentos que usam p processadores. Tem-se assim Tp como a complexidade de tempo do algoritmo descrito por G, a qual uma funo do nmero de processadores disponveis [8]. Assume-se:

T = minTp p 1

(3.2)

Dado que Tp um valor inteiro, existe um valor mnimo p tal que Tp = T (p p). Considera-se T como a complexidade de tempo do algoritmo especicado por G quando um nmero sucientemente grande de processadores (pelo menos p) est disponvel, sendo que T igual a profundidade D do DAG. Dene-se T1 como sendo o tempo necessrio para uma execuo seqencial do algoritmo modelado, o qual, naturalmente, ser igual ao nmero de ns do DAG que no so ns de entrada [8]. Dado um valor arbitrrio de p, tem-se T1 Tp T . Em geral, O valor exato de Tp no fcil de ser determinado, porm, esse problema pode ser contornado com a denio de alguns limites para Tp [8]: 1. Supondo que para um n de sada i qualquer existe um caminho positivo de cada n de entrada e que o grau de entrada de cada n no mximo 2, ento: T longn, onde n o nmero de ns de entada; 2. Seja c um inteiro positivo, q = cp Tp cTq ; 3. Para cada p tem-se Tp < T + 4. (a) p (b) p
T1 T T1 T T1 p ;

T1 Tp < 2T . Generalizando: p = ( T ) Tp = O(T ).

T1 p

T1 T1 1 Tp < 2 T p . Generalizando: p = O ( T ) Tp = ( p )

A propriedade (1) dene uma limitao fundamental da velocidade dos algoritmos paralelos enquanto a propriedade (2) expressa o fato de que, se o nmero de processadores reduzido 25

em certo fator, ento o tempo de execuo aumentado at, no mximo, esse mesmo fator. Os dois ltimos resultados so de fundamental importncia, pois estabelecem que, apesar de T ser denido com o pressuposto de um nmero ilimitado de processadores, (T1 /T ) processadores so sucientes para ter um fator constante de T (4a). Dessa forma, pode-se obter um escalonamento simplesmente modicando o escalonamento timo para o caso de um nmero ilimitado de processadores, ao invs de resolver o problema, geralmente difcil, de escalonamento. Isso sugere uma metodologia na qual primeiro desenvolve-se um algoritmo paralelo como se um nmero de processadores ilimitados estivesse disponvel e, ento, faz-se a adaptao do mesmo para o nmero de processadores realmente disponvel. J a propriedade (4b) signica que, conT1 ), a disponibilidade de p processadores permite acelerar a computao em tanto que p = O( T

um fator diretamente proporcional a p, que o melhor possvel. Assim, para um nmero de processadores prximo de algoritmo [8].
T1 T

obtm-se ao mesmo tempo a execuo e acelerao timas do

3.3.2 Encontrando um DAG timo


Em geral, para um mesmo problema computacional existem diferentes algoritmos e, ainda, para cada algoritmo diferentes DAGs. Assim, o objetivo encontrar o DAG para p proces o valor de T correspondente ao sadores com menor Tp , o qual chamado DAG timo. Seja Tp p corresponde ao menor tempo de processamento paralelo, usando p proDAG timo, ento Tp a medida de complexidade do problema, cessadores, para o problema em questo. Assim, Tp

diferentemente de Tp que a medida de complexidade para um algoritmo em particular. Entre , normalmente, muito difcil [8]. A Figura 3.2 apresenta um tanto, a avaliao explcita de Tp

DAG otimizado para o mesmo problema proposto na Figura 3.1. Para o DAG otimizado tem-se T1 = 3 e T = D = 2, enquanto o DAG da Figura 3.1 resolvia o mesmo problema com T1 = 7 e T = D = 3.

3.3.3 SpeedUP e Ecincia


Uma vez que um modelo particular de computao paralela tenha sido escolhido, seja o modelo DAG anteriormente descrito ou outro qualquer, dado um problema computacional parametrizado 26

Figura 3.2: DAG de outro algoritmo para avaliao da expresso (x1 + x2)(x2 + x3). Fonte: [8]. por uma varivel n que representa o tamanho do problema, a complexidade de tempo geralmente dependente de n [8], e, por isso, n incorporada na notao a seguir. Seja um algoritmo paralelo que usa p processadores (p pode depender de n) e termina no tempo Tp (n) e seja T (n) o tempo requerido pelo algoritmo seqencial timo para resolver o mesmo problema, dene-se como speedup a medida relativa entre esses dois tempos. Em outras palavras, speedup a medida, dada pela equao 3.3, que indica o nmero de vezes que o programa paralelo mais rpido que o seqencial [8, 34]. T (n) Tp (n)

Sp (n) =

(3.3)

Ecincia uma medida utilizada em conjunto com o speedup. Demonstra a frao de tempo que os processador esto sendo utilizados e expressa em valores percentuais. O clculo da ecincia dado pela equao 3.4 [8, 34]. Sp (n) T (n) = p pTp (n)

Ep (n) =

(3.4)

Valores ideais de speedup e ecincia so Sp (n) = p e Ep (n) = 1, o que equivalente a dizer que disponibilidade de p processadores aumenta a velocidade da computao p vezes e que todos os processadores so totalmente aproveitados durante todo o tempo. Entretanto, para 27

isso ocorrer, o algoritmo paralelo teria que ser tal que nenhum processador em momento algum zesse trabalho desnecessrio ou casse parado espera de trabalho. Por motivos diversos, essa situao no possvel na prtica e um objetivo mais realista tentar manter o valor de Ep to distante quanto possvel de zero conforme p aumenta. Porm, as denies de speedup e ecincia so relativamente controversas, dado que, no geral, o tempo seqncial timo T (n) desconhecido, mesmo para problemas aparentemente simples. Por essa razo, encontra-se diferentes denies para T (n) , sendo as alternativas mais comuns as seguintes [8]: 1. T (n) o tempo gasto pelo melhor algoritmo seqencial existente; 2. T (n) o tempo gasto por um algoritmo seqencial de teste. Por exemplo, (n3 ) um valor razovel para o problema de multiplicao de duas matrizes densas n x n, mesmo que existam algoritmos para resolver o mesmo problema em menor tempo; 3. T (n) o tempo gasto por um nico processador para executar o algoritmo paralelo que est sendo analisado em particular, ou seja, um nico processador simula a operao de p processadores paralelos. Utilizando a denio (3), a ecincia corresponde ao quo bem o algoritmo em particular foi paralelizado, porm no prov informaes sobre os mritos absolutos do algoritmo, como acontece nas opes (a) e (b). Alm disso, se T (n) denido de acordo com (c) e o algoritmo especicado com o modelo DAG, ento T (n) equivale a T1 (n) [8]. Uma observao importante ao tratar de speedup que mesmo programas com trechos de fcil paralelizao possuem tambm sees inerentemente seqenciais. Dessa forma, em um ambiente com um grande nmero de processadores a parte paralela do cdigo ser rapidamente executada e as sees seqenciais sero o gargalo da aplicao. Essa situao caracterizada pela Lei de Amdahl, a qual dene que todo programa paralelo possui uma frao "f"seqencial que limita seu speedup de acordo com a equao 3.5. Por outro lado, existem numerosos problemas em que, proporcionalmente, o trecho "f"do cdigo tende a zero conforme o problema cresce e, portanto, a Lei de Amdahl deixa de ser uma preocupao [8].

28

Sp (n)

1 f+
(1f ) p

(3.5)

3.3.4 Granulosidade e Escalabilidade


Granularidade, ou granulosidade, a medida que diz respeito quantidade de computao de uma atividade. Diz-se de granulosidade na os problemas em que a quantidade de clculo pequena, ou seja, a comunicao e sincronizao entre os uxos de execuo freqente; de granulosidade grossa aqueles em que a quantidade de clculo grande e, portanto, a freqncia de sincronizao menor; de granularidade mdia aqueles em que a relao mais equilibrada. Quanto maior a granularidade menor sero os custos com criao de processos e com a comunicao entre eles. comum existir abundncia de paralelismo com baixa granulosidade, o qual, via de regra, no pode ser explorado com ecincia. O desempenho da arquitetura paralela obtido atravs de um equilbrio entre granulosidade e comunicao [34]. Na implementao de uma soluo paralela, a opo por explorar granularidade na ou grossa pode depender de vrios aspectos. Por exemplo, na programao por troca de mensagens interessante se reduzir a comunicao entre processos devido ao tempo gasto na comunicao entre os computadores, o que pode sugerir o aumento do nmero de instrues por processo. J na programao com threads os custos com a comunicao podem no ser uma preocupao[34]. Escalabilidade, por sua vez, um termo que pode ser aplicado tanto em relao ao hardware como ao software. No caso do hardware, usado para indicar que a arquitetura permite expanso no seu tamanho fsico, sendo que, isso faz com que seu desempenho tambm aumente. Ou seja, diz-se que uma arquitetura apresenta boa escalabilidade quando possvel adicionar-lhe mais ns de processamento e esse incremento faz aumentar, tambm, a performance. No contexto do software o termo usado para referenciar a capacidade de o mesmo se adaptar s mudanas da arquitetura, ou seja, um software dito escalvel quando consegue explorar ecientemente novos recursos que venham a ser adicionados arquitetura. Uma maneira de fazer isso decompor o algoritmo em mais tarefas do que o nmero de processadores disponveis, assim, medida que o nmero de processadores cresce, as tarefas passam a ser distribudas tambm para os novos processadores, reduzido o nmero de tarefas por processador sem a necessidade de modicar o 29

algoritmo.

3.4 Classicao das arquiteturas paralelas


Em [31] o autor apresenta trs motivos pelos quais importante classicar as arquiteturas: o primeiro entender o que j foi desenvolvido, o segundo que a classicao pode ajudar os projetistas a visualizarem novas conguraes ainda no pensadas e o terceiro que a classicao pode ajudar na construo de modelos de performance. Modelos esses que podem ser utilizados para avaliao de desempenho e tambm ajudar a revelar porque uma dada arquitetura possui maior exibilidade para aumento do desempenho em relao a outras. Alm disso, uma classicao deve agrupar as mquinas existentes de modo que, sabendo a classicao de uma mquina, seja possvel inferir informaes diversas sobre ela. Assim, a escolha do critrio uma tarefa difcil e que acaba por determinar o sucesso ou no da classicao. Um critrio demasiadamente genrico pode no ser suciente para que se obtenha qualquer informao til da classicao, j um critrio muito especco pode torn-la dependente de tecnologias e, portanto, de sua prpria poca, o que certamente a tornar obsoleta precocemente. Classicaes atuais consideram critrios como compartilhamento de memria e o tratamento da coerncia nas memrias cache.

3.4.1 Classicaes Acadmicas


Uma das primeiras classicaes, largamente utilizada at hoje, para arquiteturas paralelas a Taxonomia de Flynn, proposta em [21, 22]. Essa proposta baseia-se na relao entre o uxo de instrues e o uxo de dados, que podem ser nicos ou paralelos. Paralelismo de instrues (ou funcional) ocorre quando cada tarefa executa clculos diferentes para resolver um problema, sejam eles sobre um mesmo conjunto de dados ou sobre dados diferentes. Paralelismo de dados acontece quando um processo executa uma mesma srie de operaes sobre diferentes dados. Como esses uxos so independentes, Flynn combinou-os e props quatro classes possveis [22, 34]: SISD - Single Instruction Stream Single Data Stream (Fluxo nico de Instrues Fluxo 30

nico de Dados): so os computadores seqenciais convencionais, onde uma nica unidade de controle decodica seqencialmente as instrues que operam sobre um nico conjunto de dados; SIMD - Single Instruction Stream Multiple Data Streams (Fluxo nico de Instrues Mltiplos Fluxos de Dados): so os processadores matriciais, nos quais uma nica unidade de controle ativa diversos elementos processadores. A unidade de controle est submetida a um nico programa e repassa suas instrues para os processadores que, por sua vez, as executam concorrentemente sobre os dados em suas memrias locais; MISD - Multiple Instruction Streams Single Data Stream (Mltiplos Fluxos de Instrues Fluxo nico de Dados): costuma-se dizer que essa classe considerada para ns didticos mas que, porm, no existem computadores reais enquadrados nesta categoria. O autor, entretanto, argumenta em [22] que fcil prever e desenvolver processadores desse tipo e que o desinteresse histrico nos mesmos deve-se a fatores relacionados programao. Coloca ainda que um MISD , na verdade, um pipeline com mltiplas unidades funcionais executando independentemente e com adiantamento em um mesmo uxo de dados. Argumenta tambm que no nvel microarquitetural dessa mesma forma que funciona um processador vetorial. No entanto, pode-se tambm considerar que, aps passar por um estgio do pipeline, o dado no mais o mesmo e, portanto, o argumento do autor caria comprometido. Alguns autores consideram que os arranjos sistlicos de processadores se enquadram nesta classe; MIMD - Multiple Instruction Streams Multiple Data Streams (Mltiplos Fluxos de Instrues Mltiplos Fluxos de Dados): a categoria na qual se enquadra a grande maioria dos sistemas paralelos. Os elementos processadores executam de maneira independente instrues independentes sobre dados tambm independentes. Exemplos de classicaes propostas que no obtiveram xito podem ser encontrados em [31] e [27]. No primeiro caso a classicao considera oito critrios: nmero de processadores de instrues; nmero de memrias de instrues; tipo de chaveamento conectando os processadores de instrues s memrias de instrues; nmero de processadores de dados; nmero 31

de memrias de dados; tipo de chaveamento conectando processadores de dados e memrias de dados; tipo de chaveamento conectando processadores de instrues e processadores de dados; e o tipo de chaveamento de dados conectando processadores de dados entre si. J em [27], a proposta subdividir a classe MIMD da Taxonomia de Flynn em quatro novas subclasses de acordo com com a estrutura de memria (global ou distribuda) e com os mecanismos de comunicao/sincronizao (variveis compartilhadas ou troca de mensagem) entre os processos. Entretanto, embora essas propostas tenham cado em desuso ou no tenham sido adotadas, elas serviram para atentar ao fato de que a Taxonomia de Flynn no era suciente para diferenciar adequadamente a diversidade de mquinas paralelas que surgiam j naquela poca. A abordagem atualmente mais usada para classicao das arquiteturas paralelas subdivide a categoria das arquiteturas MIMD considerando critrios relacionados memria. O primeiro nvel da hierarquia baseado no compartilhamento de memria, resultando em duas classes [19]: Multiprocessadores: so as arquiteturas cujos processadores compartilham memria (shared memory). Nesse caso, independentemente da memria estar implementada de forma distribuda (distributed memory) ou centralizada (centralized memory), todos os processadores compartilham um mesmo espao de endereamento e se comunicam atravs de operaes de escrita e leitura em variveis compartilhadas (programao multithread); Multicomputadores: arquiteturas que possuem mltiplos espaos de endereamento privado (multiple private address spaces), ou seja, cada processador possui um espao prprio. A implementao da memria distribuda e os processadores se comunicam por trocas de mensagens. As duas principais bibliotecas para implementao de aplicaes com trocas de mensagens so a PVM (Parallel Virtual Machine) [5] e MPI (Message Passing Interface) [4] . O segundo nvel da hierarquia classica as mquinas de acordo com a latncia de acesso memria, subdividindo os multiprocessadores em UMA e NUMA e os multicomputadores em NORMA [19]: UMA - Uniform Memory Access (Acesso Uniforme Memria): computadores nos quais 32

a latncia de acesso memria igual (uniforme) para todos os processadores que compem o sistema, independentemente da rede de interconexo utilizada ou de as transaes serem nicas ou paralelas. A implementao da memria centralizada, ou seja, encontrase mesma distncia de todos os processadores. NUMA - Non-Uniform Memory Access (Acesso No Uniforme Memria): arquiteturas nas quais a latncia de acesso memria no uniforme. Cada processador diretamente ligado a um mdulo de memria e acessa os demais mdulos do sistema por meio dos outros procesadores. Logo, a implementao da memria distribuda e a latncia de acesso depender de o endereo referenciado estar ou no na memria diretamente ligada ao processador que a referenciou. NORMA - Non-Remote Memory Access (Sem acesso a Variveis Remotas): arquiteturas nas quais cada processador , na verdade, uma arquitetura inteira replicada e possui, portanto, registradorres de endereamento prprios que referenciam apenas sua memria local. Existe ainda um terceiro nvel na hierarquia que classica as mquinas de acordo com o tratamento da coerncia de cache. So quatro as variaes descritas [19]: NCC-NUMA - Non-Cache-Coherent Non-Uniform Memory Access (Acesso No Uniforme Memria Sem Coerncia de cache): mquinas em que a coerncia de cache no garantida por hardware; CC-NUMA - Cache-Coherent Non-Uniform Memory Access (Acesso No Uniforme Memria Sem Coerncia de Cache): arquiteturas onde a coerncia de cache garantida por hardware; SC-NUMA - Software-Coherent Non-Uniform Memory Access (Acesso No Uniforme Memria Com Coerncia de Cache em Software): a alternativa utilizada para garantir a coerncia naquelas mquinas em que o hardware no garante, ou seja, nas arquiteturas NCC-NUMA e NORMA. Essa camada de software, mais conhecida como DSM (Distributed Shared Memory), transparente ao usurio; 33

COMA - Cache Only Memory Architeture (Arquiteturas de memria somente com cache): as memrias locais de cada processador so todas do tipo cache, porm com mais capacidade do que as tradicionais. Existe um hardware de suporte que integra a gerncia das caches e de memria. A Figura 3.3 apresenta uma viso geral dessa classicao baseada em compartilhamento de memria, onde a linha tracejada indica que as classes NCC-NUMA e NORMA podem ser transformadas em mquinas SC-NUMA atravs da incluso da camada de software que implementa coerncia de cache [19].

Figura 3.3: Classicao segundo o compartilhamento de memria. Fonte: [Hwa98] apud [19].

3.4.2 Classicaes Comerciais


Historicamente, as fabricantes de computadores tm criado nomenclaturas prprias para diferenciar suas tecnologias das concorrentes ou descrever diferentes abordagens adotadas para tratar problemas antigos. Uma vez que essas nomenclaturas tornam-se populares, pode-se dizer que formam uma classicao alternativa, embora freqentemente os critrios utilizados no sejam totalmente claros. Em [15] os autores reapresentam critrios, previamente publicados dois anos antes, para diferenciar os tipos de clusters existentes de acordo com a classicao adotada na lista dos 500 computadores mais rpidos [6]. Alm disso, em [15] os autores propem

34

tambm uma classicao acadmica alternativa, a qual, entrentanto, no foi adotada at o momento. Dentre as classicaes comerciais, as mais utilizadas so: PVP - Parallel Vector Processing (Processadores Vetoriais Paralelos): so arquiteturas com poucos processadores, os quais so do tipo vetorial e so desenvolvidos especicamente para estas mquinas. Em geral no possuem memria cache, os blocos de memria so entrelaados e a interconexo feita com redes de alta vazo no bloqueantes, permitindo acessos paralelos memria. O espao de endereamento nico, ou seja, esses processadores podem ser enquadrados na categoria UMA da classicao anterior [19]; SMP - Symmetric Multiprocessors (Multiprocessadores Simtricos): mquinas constitudas por processadores de prateleira (of the shelf). O termo simtrico refere-se ao fato de que todos possuem privilgios equivalentes de acesso memria e ao barramento, diferentemente dos sistemas com processadores mestre-escravo. Os processadores de prateleira costumam utilizar amplamente memrias caches e possuem memria compartilhada, qual se conectam atravs de um barramento de alta velocidade. Assim, o espao de endereamento nico e essas mquinas podem ser classicadas como UMA [19]. Atualmente, essas arquiteturas tem se popularizado tambm entre os usurios domsticos devido aos processadores multi-core; MPP - Massively Parallel Processors (Processadores Maciamente Paralelos): podem ser vistas como arquiteturas alternativas quelas do tipo PVP. A diferena nos MPPs so utilizados milhares de processadores (da o termo maciamente) de prateleira conectados por uma rede proprietria, ao invs de processadores especcos. Os espaos de endereamento so prprios para cada n, logo, se enquandram na classe das mquinas NORMA [19]; NOW - Network of Workstations (Rede de Estaes de Trabalho): so sistemas formados por vrias estaes de trabalhos interligadas atravs de uma rede tradicional. Nessas arquiteturas a execuo da aplicao paralela no so o objetivo principal e diferem em relao aos MPPs em trs fatores: apresentam hierarquia de barramento nas estaes, pre-

35

sena de um disco local nos ns e utilizam redes de interconexo de menor custo e latncia mais alta. So mquinas NORMA [19]; COW - Cluster of Workstations (Mquinas Agregadas): arquiteturas projetadas especicamente para aplicaes paralelas, diferentemente das NOWs, porm, tambm constitudas por vrias estaes de trabalho. Nesse caso as estaes utilizadas como ns de processamento no possuem alguns perifricos (monitor, mouse, teclado etc.) e o sistema operacional otimizado para esse m. Pode-se dizer que COWs so NOWs dedicadas ao processamento paralelo, uma evoluo dessas. Duas estratgias diferentes so adotadas no desenvolvimento de COWs, a primeira interligar milhares de estaes de trabalho atravs de redes de baixo custo, enquanto a segunda utiliza redes de baixa latncia para ligao de um nmero menor de processadores mais poderosos. A primeira resulta em mquinas NORMA, enquanto a outra abordagem pode resultar em mquinas NUMA se utilizadas placas de rede que implementam espao nico de endereamento, embora, no geral, tambm sejam do tipo NORMA [19]. Em [15] os autores classicam as COWs construdas com a primeira abordagem como Commodity Cluster, subdividindo-as em Constellations, quando o nmero de processadores em um n maior do que o nmero de ns da arquitetura, e clusters-NOW, quando o nmero de ns maior do que o nmero de processadores em cada n. O argumento utilizado de que essa diferenciao inuencia na forma como o sistema ser programado, pois uma Constellation pode ser melhor aproveitada com o uso de mltiplos threads, enquanto clusters-NOW necessitam de programao por troca de mensagens. Um caso especial de commodity cluster so os chamados Clusters Beowulf [3] em que, alm de ser construdo somente com equipamentos de prateleira, a arquitetura opera com sistema operacional Linux [15, 3]. O conceito de Cluster Beowulf teve grande importncia no sentido de abrir novos caminhos, porm, atualmente uma nomenclatura em desuso. As classicaes Constellation e cluster-NOW embora utilizadas na lista dos 500 computadores mais rpidos [6] tambm no so muito comuns.

36

3.5 Paradigmas de programao paralela


As aplicaes paralelas podem ser classicadas em alguns paradigmas bem denidos de programao, sendo que existe um nmero pequeno desses paradigmas que usado na maioria dos programas. Cada paradigma uma classe de algoritmos que possui a mesma estrutura de controle. A escolha do paradigma a ser utilizado deve basear-se no tipo de recursos disponveis e de paralelismo inerente ao problema que ser tratado. No que trata dos recursos, deve-se, basicamente, denir o nvel de granularidade que pode ser explorada ecientemente no sistema. J em relao ao tipo de paralelismo, deve-se observar a estrutura dos dados e da aplicao. Se existir paralelismo em relao aos dados, pode-se executar em paralelo as mesmas operaes sobre diferentes partes dos dados, enquanto no caso de o paralelismo ocorrer nas operaes, mas no nos dados, pode-se implementar paralelamente a ao de trechos diferentes da aplicao sob os mesmos dados [10]. As aplicaes de Computao Distribuda em geral se baseiam no paradigma cliente/servidor, no qual os processos comunicam-se entre si, por RPCs (Remote Procedure Calls), por exemplo, mas no h paralelismo inerente aplicao. Dado que o foco deste trabalho em aplicaes paralelas, esse tipo de paradigma no ser abordado. No existe um consenso absoluto na literatura para classicao dos paradigmas paralelos. Em [10] so referenciadas algumas das principais classicaes e os paradigmas mais utilizados so brevemente descritos. Tais paradigmas so: Task-Farming, ou Master/Slave; Single Program Multiple Data (SPMD); Data Pipelining; Divide and Conquer; Speculative Parallelism [10].

3.5.1 Task-Farming (ou Master/Slave)


O paradigama Task-farming, tambm conhecido como Master/Slave, ou, ainda, Mestre Escravo, baseia-se na existncia de duas entidades, um mestre e diversos escravos. O processo mestre responsvel por decompor o problema em tarefas menores e distribu-las entre uma "fazenda"de processos escravos e no nal recolher os resultados. Os processos escravos executam um ciclo bastante simples: recebem uma mensagem com a tarefa, processam a tarefa e enviam o resultado para o mestre. Normalmente, a comunicao se d apenas entre o mestre e

37

os escravos [10]. Existem duas abordagens para esse paradigma, uma delas fazer a carga das tarefas de forma esttica e a outra dinmica. Na esttica, a distribuio das tarefas feita no incio da execuo, deixando o mestre livre para participar da computao. J a abordagem dinmica mais adequada para casos em que o nmero de tarefas maior do que o nmero de processadores, quando o nmero de tarefas desconhecido no incio da aplicao, quando o tempo de execuo no previsvel ou quando tratando de problemas no balanceados. Essa abordagem implementa mais facilmente a tolerncia a falhas, pois possibilita que na queda de algum processo sua carga de trabalho seja distribudo para outro [10]. O paradigma Master/Slave pode alcanar altos ndices de speedup e um bom grau de escalabilidade. Entretanto, para um nmero grande de processos o fato de utilizar o controle centralizado em um nico processo mestre pode torn-lo um gargalo no desempenho da aplicao. Por outro lado, possvel contornar essa limitao com a utilizao de mltiplos processos mestres [10].

3.5.2 Single Program Multiple Data (SPMD)


O SPMD o paradigma mais utilizado, nele cada processo executa o mesmo trecho de cdigo porm em partes diferentes dos dados, o que envolve a decomposio da aplicao para os processadores disponveis. Esse paralelismo tambm encontrado na literatura com os nomes: paralelismo geomtrico, decomposio do domnio ou paralelismo de dados. Problemas como os apresentados na Seo 2.4 possuem uma estrutura geomtrica regular com interaes limitadas espacialmente. Essa homogeneidade permite que esses problemas tenham seus decompostos e distribudos uniformemente entre os processadores, cando cada um responsvel por uma rea espacial denida. Os processos comunicam com os processos vizinhos e a carga de comunicao proporcional ao limite dos elementos, enquanto a carga da computao proporcional ao volume dos elementos. Em alguns casos necessrio fazer uma sincronizao global peridica dos processos, sendo que o padro de comunicaes em geral bastante regular e previsvel. Aplicaes construdas em SPMD so bastante ecientes quando os dados so bem distribu38

dos e o sistema homogneo. Uma desvantagem do paradigma que ele bastante suscetvel a deadlocks, dependendo da situao, a queda de um processo pode ser suciente para ocorrncia de deadlock [10]

3.5.3 Data Pipelining


um paradigma de granularidade mais na que os dois anteriores. Baseia-se em uma abordagem de decomposio funcional, sendo um dos paradigmas de decomposio funcional mais simples e populares. bastante utilizado em aplicaes de processamento de imagens. Seu funcionamento anlogo ao pipeline de um processador, cada processador da mquina paralela executa pequenas tarefas paralelizveis do algoritmo [10]. O padro de comunicaes do Data Pipelinig em geral bastante simples, e pode ser totalmente assncrona, pois o uxo da execuo se d atravs de estgios adjacentes do pipeline. A ecincia do paradigma diretamente proporcional possibilidade de balanceamento da carga de execuo dentre os estgios do pipeline [10].

3.5.4 Divide and Conquer


O paradigma Divide and Conquer, ou Dividir e Conquistar, bastante conhecido na programao seqencial. Consiste em dividir um problema em dois ou mais problemas menores, comput-los e ao nal reunir o resultado dessas computaes para obter o resultado do problema inicial. Na abordagem paralela do Divide and Conquer, os subproblemas podem ser resolvidos simultaneamente atribuindo-se cada um a um processador e no h necessidade de comunicao entre eles. As tarefas de dividir o problema e reunir os resultados tambm podem fazer uso de algum nvel de paralelismo, embora nesse caso seja necessria comunicao. O paradigma Master/Slave pode ser visto como uma modicao desse do Divide and Conquer [10].

3.5.5 Speculative Parallelism


um paradigma empregado quando o uso dos anteriores no possvel. Alguns problemas possuem dependncias de dados complexas, o que reduz as possibilidades de execuo

39

paralela. Nesses casos, uma soluo executar o problema em pequenas partes, porm, utilizando algum nvel de especulao e supondo-se uma execuo otimista, ou seja, executar as operaes em paralelo esperando que no haja violao da consistncia dos dados. Outro uso desse paradigma na execuo de diferentes algoritmos para resolver um mesmo problema, de modo que o primeiro a terminar escolhido como soluo [10].

3.6 Concluso
A computao paralela tem alcanado grandes avanos nas ltimas dcadas. Porm, existe ainda uma srie de questes abertas em relao a padronizaes de modo geral. Dessa forma, importante observar que as escolhas da arquitetura, modelo e paradigma de programao etc., no processo de implementao de uma soluo baseada em paralelismo devem ser feitas com base em uma anlise dos requisitos particulares da aplicao em questo. Nessa anlise devem ser considerados fatores como granularidade que o algoritmo permite, custos da arquitetura, necessidades de escalabilidade, se o paralelismo tem intuito apenas de oferecer alto desempenho ou tambm tolerncia a falhas, dentre outros.

40

Computao Paralela aplicada os

Mtodos Numricos
Ao embarcar no estudo dos mtodos numricos paralelos e distribudos importante reetir sobre suas diferenas em relao aos mtodos seqenciais. Existem muitas questes relacionadas paralelizao que no aparecem quando tratando os mesmos algoritmos de forma seqencial. A primeira delas a alocao de tarefas que consiste na quebra do total do trabalho em tarefas menores, as quais sero atribudas a diferentes processadores, e o correto seqenciamento das mesmas quando houver interdependncia entre elas. A segunda questo a comunicao dos resultados da computao entre os processadores, deve-se buscar manter a comunicao to eciente quanto possvel e estimar o impacto da mesma na performance do sistema. A terceira a sincronizao entre os processadores. Em alguns mtodos, chamados de mtodos sncronos, os processadores devem esperar pontos pr-determinados para completar certas operaes ou utilizar certos dados, sendo que o mecanismo utilizado para tal pode ter efeitos importantes na performance. Na outra abordagem, os chamados mtodos assncronos, no h espera em pontos pr-determinados e nesse caso as implicaes correspondentes devem ser cuidadosamente avaliadas para assegurar a validade do mtodo. Existem ainda outras questes, as quais relacionam-se aos assuntos tratados no captulo anterior, como o desenvolvimento de medidas apropriadas de performance para os mtodos paralelos e os efeitos da arquitetura do sistema sobre elas [8]. Na Seo 2.3 foram apresentadas as diferenas entre os mtodos diretos e iterativos para soluo dos sistemas lineares. Entretanto, uma anlise mais detalhada revela que, na realidade, no existe uma linha totalmente clara dividindo essas duas classes. Isso porque, por ex-

41

emplo, uma tcnica aplicada para melhorar os resultados obtidos com a eliminao de Gauss pura aplicar um renamento iterativo, o que pode ser visto como um mtodo iterativo que utiliza Eliminao de Gauss como pr-condicionador. Por outro lado, costuma-se utilizar os pr-condicionadores para acelerar os mtodos iterativos, o que, em geral, envolve a soluo direta de sistemas prximos do original. Normalmente, esses sistemas prximos so tais que permitam uma soluo mais econmica ou que o processo iterativo possa explorar melhor o paralelismo. Assim, a diferena maior entre a soluo do sistema original e de um prcondicionador com mtodos diretos que, no original necessrio reorganizar a computao ou o algoritmo para obter um melhor paralelismo, enquanto com os pr-condicionadores podese simplesmente descartar as entradas do sistema aproximado se isso melhorar o paralelismo [16]. Este captulo apresenta a aplicao dos conceitos de paralelismo, anteriormente discutidos, nos mtodos iterativos clssicos para soluo de sistemas lineares. Visando introduzir as notaes, inicialmente apresentada a paralelizao de alguns algoritmos simples numricos simples. Na seqncia abordada a paralelizao dos mtodos iterativos e, por m, a implementao voltada s arquiteturas que se comunicam por troca de mensagens dessas paralelizaes.

4.1 Paralelizao de algoritmos numricos simples


As paralelizaes a seguir tratam de tarefas bastante elementares, porm, muito comuns em todos os mtodos numricos. A representao dos algoritmos feita atravs de DAGs e na discusso dos mesmos assumido que as operaes de adio e multiplicao demoram uma unidade de tempo e que os processadores so capazes de trocar instantaneamente resultados intermedirios, ou seja, os atrasos relativos a comunicao so ignorados. Contudo, os algoritmos apresentados so bastante simples e, portanto, podem ser implementados em diversas arquiteturas assumindo-se o overhead de comunicao como sendo insignicante [8].

42

4.1.1 Adio de escalares


A mais simples das tarefas computacionais a adio de n escalares. Evidentemente o melhor algoritmo seqencial requer n 1 operaes. Assim, T (n) = n 1. Assumindo n como uma potncia de 2, para uma implementao paralela, pode-se dividir os n escalares em n/2 pares disjuntos e utilizar n/2 diferentes processadores para somar cada um dos pares. Assim, aps uma unidade de tempo, a tarefa de somar n/2 escalares estaria completa e aps log n estgios, a computao estaria completa. A Figura 4.1 ilusta o DAG desse algoritmo para soma de 16 escalares com 8 processadores. O algoritmo facilmente generalizado para os casos onde n no potncia de 2, sendo que o tempo de execuo passa a ser log n para n/2 processadores [8].

Figura 4.1: DAG para soma de 16 escalares utilizando 8 processadores. Fonte: [8]. A ecincia desse algoritmo dada por
n1 (n/2)(logn) ,

a qual tende a zero conforme n cresce.

Um algoritmo paralelo alternativo pode ser obtido da seguinte forma: assumindo, por simplicidade, que log n um inteiro e que n/logn um inteiro potncia de 2, divide-se os n nmeros em n/logn grupos de log n nmeros cada. Utiliza-se n/logn processadores e o i-simo processador efetua a soma dos nmeros no i-simo grupo, operao executada em tempo log n 1. Dessa forma, efetua-se a soma de n/logn nmeros, o que poderia ser alcanado no algoritmo anterior com tempo log(n/logn) logn, usando n/(2logn) processadores. Esse algoritmo de duas fases requer um tempo aproximadamente igual a 2logn, ou seja, a velocidade reduzida em um fator de 2, porm utiliza apenas n/logn processadores e, dessa forma, sua ecincia aproxima43

se de 1/2. O nmero de processadores escolhido aproximadamente igual a T1 (n)/T (n) pelo fato de que essa escolha tende a levar a algoritmos ecientes. Assim, percebe-se que uma pequena reduo na velocidade pode melhorar consideravelmente a ecincia, pois a diminuio no nmero dos processadores pode decrementar substancialmente a quantidade de comunicao do algoritmo. O DAG do algoritmo alternativo apresentado na Figura 4.2 [8].

Figura 4.2: DAG para soma de 16 escalares com 4 processadores. Fonte: [8].

4.1.2 Produto Interno


O produto interno
n i=1 xi yi

de dois vetores n-dimensionais pode ser calculado em tempo

log n+1 empregando n processadores da seguinte forma: em um primeiro passo, cada processador i calcula o produto xi yi e, ento, aplica-se o algoritmo de adio de escalares de com tempo log n anteriormente descrito [8].

4.1.3 Adio e Multiplicao de Matrizes


A soma de n matrizes de dimenses m x m pode ser calculada em tempo log n usando m2 [n/2] processadores empregando-se um grupo diferente de n/2 processadores calculando uma diferente entrada da soma. De maneira anloga, a multiplicao de duas matrizes m x n e n x l consiste na avaliao de ml produtos internos de vetores n-dimensionais e pode ser, portanto, alcanada no tempo log n+1 empregando-se nml processadores. No caso em que n = m = l, 44

tem-se o requisito de n3 processadores. O nmero correspondente T1 (n) de operaes (n3 ) [8].

4.1.4 Potncia de uma Matriz


Supondo que A uma matriz n x n a qual deseja-se calcular Ak para algum inteiro k. Se k uma potncia de 2, o clculo pode ser realizado atravs da repetio de operaes de elevao ao quadrado, computando-se a primeira A2 , em seguida A2 A2 = A4 etc. Aps log k estgios, tem-se o valor de Ak . Esse procedimento envolve log k multiplicaes consecutivas de matrizes e pode, dessa forma, ser obtido no tempo log k([log n]+1) empregando-se n3 processadores. Uma modicao simples desse procedimento permite calcular Ak em tempo (log k.log n) mesmo quando k no potncia de 2 [8]. Portanto, todas as potncias A2 , . . . , An de uma matriz n x n podem ser calculadas em tempo (log2 n) usando n4 processadores bastanto para isso empregar um grupo diferente de n3 processadores para a computao de cada potncia Ak . Um mtodo alternativo para o clculo das potncias A2 , . . . , An , o qual elimina duplicaes desnecessrias de esforos computacionais, mostrado na Figura 4.3. Os ns rotulados com "S"representam uma operao de elevao ao quadrado da matriz. No primeiro estgio A2 calculada, no segundo A3 e A4 so obtidas pela multiplicao das matrizes anteriores. Generalizando-se, no k-simo estgio, tem-se as matrizes A2
k1 +1 k

, . . . , A2 . Assim, (log n) estgios so sucientes para calcular A2 , . . . , An , sendo que

cada estgio envolve no mximo (n) multiplicaes simultneas de matrizes e, empregando-se n4 processadores, pode ser alcanado em tempo (log n), levando a um tempo mdio (log2 n) [8]. Os algoritmos previamente discutidos foram desenvolvidos com intuito de obter os tempos de execuo mais rpido possveis, porm, essa abordagem freqentemente conduz a requisitos excessivos de processadores e implica em baixa ecincia. Por outro lado, conforme discutido anteriormente, pode-se tornar os mesmos algoritmos ecientes escolhendo-se um nmero de processadores tal que p = O(T1 (n)/T (n)). O produto duas matrizes n x n, por exemplo, pode ser computado em tempo (log n) empregando (n3 /log n) processadores, sendo a ecincia correspondente (1). Reduzindo-se o nmero de processadores ainda mais, o tempo de exe45

Figura 4.3: Computao paralela da potncia de uma matriz n x n. Fonte: [8]. cuo passa a ser (T1 (n)/p). Assim, duas matrizes n x n podem ser multiplicadas em tempo (n) quando n2 processadores so empregados e em tempo (n2 ) quando n processadores so utilizados [8].

4.2 Paralelizao dos Mtodos Iterativos para resoluo de SELAs


A seguir discutida a paralelizao de alguns dos mtodos clssicos para resoluo de SELAs. A notao empregada neste captulo mais prxima das linguagens de programao, e, portanto, ligeiramente diferente daquela utilizada em 2.3.2. A equao 2.8 ento reescrita da seguinte forma [8]:

x(t + 1) = f (x(t)),

t = 0, 1, . . . ,

(4.1)

onde cada x(t) um vetor de n dimenses e f uma funo do tipo R R que equivale ao lado direito da Equao 2.8.

4.2.1 Paralelizao do Mtodo de Jacobi


Seja xi (t) o i-simo componente de x(t) e seja fi o i-simo componente da funo f , ento x(t + 1) = f (x(t)) pode ser escrito na forma [8]: 46

xi (t + 1) = fi (x1 (t), . . . , xn (t)),

i = 1, . . . , n

(4.2)

O algoritmo x := f (x) pode ser paralelizado alocando para cada um dos n processadores a tarefa de atualizar um componente diferente de x, conforme na Equao 4.2. A cada estgio, o i-simo processador conhece o valor de todos os componentes de x(t) dos quais fi depende, calcula o novo valor xi (t + 1), e comunica-o para os outros processadores de modo a comear a prxima iterao. A comunicao necessria para a execuo de uma iterao pode ser compactamente descrita em termos de um grafo dirigido G = (N, A) chamado grafo de dependncia. O conjunto de ns N 1, . . . , n, correspondente aos componentes de x. Para quaisquer dois ns distintos i e j , existe um arco (i, j ) do grafo de dependncia se e somente se a funo fi depende de xi , ou seja, se e somente se o processador i precisa comunicar os valores de xi (t) para o processador j [8]. A Figura 4.4 (a) exemplica um grafo de dependncia para as iteraes: x1 (t + 1) = f1 (x1 (t), x3 (t)); x2 (t +1) = f2 (x1 (t), x2 (t)); x3 (t +1) = f3 (x2 (t), x3 (t), x4 (t)) e x4 (t +1) = f4 (x2 (t), x4 (t)). Assumindo-se que a iterao deve ser realizada apenas para t = 0, 1, . . . , T , onde T um nmero positivo inteiro, a estrutura do algoritmo pode ser representada em termos de um DAG, o qual ilustrado em 4.4 (b) e corresponde a duas iteraes quando a funo f tem o grafo de dependncia denido em 4.4 (a). Os ns do DAG so na forma (i, t), onde i {1, . . . , n} e t o contador de iteraes. Os arcos so da forma ((i, t), (j, t + 1)), onde (i, j ) um arco do grafo de dependncia ou i = j [8]. Uma paralelizao de granularidade grossa da iterao x := f (x), pode ser obtida decompondose o espao vetorial Rn em um produto cartesiano de subespaos de dimenses menores Rnj , j = 1, . . . , p onde
p j =1 nj

= n. Da mesma forma, qualquer vetor x Rn decomposto

como x = (x1 , . . . , xj , . . . , xp ), onde cada xj um vetor nj -dimensional, o qual chamado de bloco componente de x, ou simplesmente componente. De maneira anloga, a iterao x(t + 1) = f (x(t)) pode ser escrita como [8]:

xj (t + 1) = fj (x(t)),

j = 1, . . . , p

(4.3)

onde cada fj uma funo vetorial Rn Rnj . Atribuindo-se cada um dos diferentes 47

Figura 4.4: Em (a) Grafo de dependncias e (b) DAG para funo com o grafo de dependncias denido por (a). Fonte: Adaptao de [8]. blocos-componentes para um processador p, de acordo com a equao 4.3, diz-se que o algoritmo est paralelizado em bloco. Um grafo de dependncia G = (N, A) pode ser novamente denido com N = {1, . . . , p} e A = {(i, j )/fj depende dexi }. Existem diversas razes pelas quais a paralelizao em blocos interessante. A primeira que podem haver poucos processadores disponveis, nesse caso, basta que se atribua mais de um componente para cada processador. A segunda que algumas funes escalares fi podem envolver clculos em comum, nesse caso natural agrupa-las. Por m, a paralelizao em blocos reduz a necessidade de comunicao do algoritmo [8]. No geral, uma paralelizao que atribui a atualizao de diferentes componentes para diferentes processadores signicativa quando os clculos envolvidos na atualizao de cada xi so diferentes, porm, pode ser ruim quando forem o semelhantes. Por exemplo, supondo que cada fi tem a forma da equao a seguir [8]:
n 1/2 x2 j) j =1

fi (x1 , . . . , xn ) = xi + (

(4.4)

Nesse exemplo, desnecessrio que todos processadores calculem simultaneamente o valor de (


n 2 1/2 . j =1 xj )

Isso pode ser feito por um nico processador que ento, na seqncia, comu-

nica o resultado para os demais. Uma abordagem ainda mais eciente que todos processadores 48

cooperem no clculo do somatrio, fazendo, por exemplo, clculos na forma apresentada na Seo 4.1.1. Entretanto, a avaliao de cada fi em muitos casos envolve muito pouca ou nenhuma duplicao de esforos, sendo essas situaes as que apresentam maior interesse [8].

4.2.2 Paralelizao de Gauss-Seidel


Conforme visto na Seo 2.3.2, o algoritmo de Gauss-Seidel ao invs de atualizar todos os componentes de x simultaneamente, atualiza cada um em separado e utiliza os novos valores dos outros componentes conforme os mesmos vo sendo calculados. A equao dos componentes (Equao (2.12)) pode ser reescrita como [8]:

xi (t + 1) = fi (x1 (t + 1), . . . , xi1 (t + 1), xi (t), . . . , xn (t)),

i = 1, . . . , n

(4.5)

Podem haver casos em que a iterao de Gauss-Seidel completamente no paralelizvel, pois se cada funo fi depender de todos os componentes xj , ento somente um componente pode ser atualizado por vez. Por outro lado, quando o grafo de dependncia esparso, possvel que a atualizao de certos componentes seja feita em paralelo. Cabe observar que existem diversos algoritmos correspondentes mesma funo f de Gauss-Seidel, dado que possvel escolher a ordem com que os componentes so atualizados. Por exemplo, pode-se querer atualizar os componentes de x iniciando com xn e retroceder at que x1 seja atualizado no nal. Diferentes ordens de atualizao correspondem a diferentes algoritmos e, em geral, a resultados diferentes. Por outro lado, em diversas aplicaes, um algoritmo de Gauss-Seidel converge em um nmero de iteraes para um mesmo valor, independente da ordem de atualizao. Como a velocidade de convergncia do mtodo correspondente s diferentes ordens de atualizao no apresenta grandes diferenas, torna-se natural escolher uma ordenao tal que o paralelismo em cada iterao seja maximizado [8]. A Figura 4.5 apresenta duas paralelizaes possveis para Gauss-Seidel para o grafo de dependncia de f da Figura 4.4 (a). No exemplo 4.5 (a), o DAG ilustra as dependncias de dados em uma iterao de Gauss-Seidel e a a forma do algoritmo x1 (t + 1) = f1 (x1 (t), x3 (t)); x2 (t + 1) = f2 (x1 (t + 1), x2 (t)); x3 (t + 1) = f3 (x2 (t + 1), x3 (t), x4 (t)); x4 (t + 1) = 49

f4 (x2 (t + 1), x4 (t)). H quatro atualizaes a serem feitas, mas a profundidade do grafo 3, percebe-se assim que x3 e x4 podem ser atualizados em paralelo. Em 4.5 (b) apresentada uma opo em que o paralelismo aumentado modicando-se a ordem das atualizaes. A ordem nesse caso : x1 (t + 1) = f1 (x1 (t), x3 (t)); x3 (t + 1) = f3 (x2 (t), x3 (t), x4 (t)); x4 (t + 1) = f4 (x2 (t), x4 (t)) e x2 (t + 1) = f2 (x1 (t + 1), x2 (t)). A profundidade passa a ser 2 e a iterao pode ser feita em dois passos usando dois processadores [8].

Figura 4.5: DAG para possveis iteraes de Gauss-Seidel Fonte: Adaptao de [8]. A seguir apresentada uma formulao de teoria dos grafos para o problema de encontrar uma ordem de atualizao que minimize o tempo paralelo necessrio para o algoritmo: Dado um grafo de dependncia G = (N, A), uma colorao de G usando K cores, dene-se h : N {1, . . . , K } como um mapeamento que atribui uma "cor"k = h(i) para cada n i N . A idia que variveis de mesma cor sejam atualizados em paralelo. O resultado a seguir demonstra que maximizar o paralelismo equivalente ao problema de "colorao tima"[8]. Proposio 1: Os dois enunciados so equivalentes: 1. Existe uma ordenao das variveis tal que uma iterao do algoritmo de Gauss-Seidel correspondente pode ser feita em K passos paralelos. 2. Existe uma colorao do grafo de dependncias que usa K cores e com a propriedade de que no existem ciclos positivos em que todos os ns do ciclo tenham a mesma cor.

50

Prova: Primeiro demonstra-se que (1) implica (2). Considerando-se uma ordenao das variveis com a qual uma iterao de Gauss-Seidel demora K passos paralelos. Dene-se h(i), a cor do n i, sendo igual a k se a varivel xi atualizada no k-simo estgio paralelo. Considerando um ciclo positivo i1 , i2 , . . . , im com im = i1 e escolhendo o n il no ciclo (1 l m) que o primeiro na ordem assumida, desde que il+1 ordenado aps il , e que (il , il+1 ) A, a varivel xil+1 (t + 1) depende de xil (t + 1). Segue que xil e xil+1 no podem ser atualizados simultaneamente e tem-se h(il ) = h(il+1 ). Isso mostra que em cada ciclo positivo, existem dois ns com cores diferentes, o que prova (2) [8]. Ser provado agora um resultado auxiliar. Mostrar-se- que se G um DAG, ento seus ns podem ser ordenados de maneira que if (i, j ) A, ento j precede i. A prova como segue. Para cada n i, supe-se di como o nmero de arcos maior possvel em um caminho positivo que inicia em i (di = 0 se o n i no tem arestas de sada). Sabe-se que di nito como uma conseqncia da aciclicidade. Ordena-se ento os ns em ordem crescente de valores di (laos entre ns com o mesmo valor de di so quebrados arbitrariamente). V-se que se (i, j ) A ento di > dj . Isso porque possvel selecionar o maior caminho iniciando em j e colocar o arco (i, j ) para obter um caminho ainda mais longo iniciando em i. Conclui-se que j precede i sempre que (i, j ) A, conforme desejado [8]. Assume-se agora a validade de (2). Seja h uma colorao com k cores e sem ciclos positivos no qual todos os ns tenham a mesma cor. Para cada cor k, seja Gk um subgrafo de G obtido deixando somente os ns com a cor k e os arcos juntando eles. Cada Gk acclico e, de acordo com o resultado do pargrafo anterior, os ns em Gk podem ser ordenados de forma que j vem antes de i sempre que (i, j ) A. Ordena-se os ns em G em ordem crescente de cor; laos com entre ns com a mesma cor k so quebrados utilizando a ordenao do grafo Gk . Consderando-se a iterao de Gauss-Seidel correspondente a esta ordenao, sejam i e j dois ns distintos com a mesma cor k, se (i, j ) / A e (j, i) / A, ento xi e xj podem ser atualizados em paralelo. O caso em que (i, j ) A e (j, i) A impossvel porque Gk acclico. Se (i, j ) A e (j, i) / A, ento j precede i na ordem construda e, dessa forma, a computao de xj (t + 1) somente precisa do valor de xi (t) e no do valor de xi (t + 1). Finalmente, o caso em que (j, i) A e (i, j ) / A similar. Conclui-se que todos os xi com a mesma cor podem ser

51

atualizados em paralelo, provando assim (1) [8]. Para o grafo de dependncia da Figura 4.4 (a) duas cores so sucientes. Em particular, possvel ter h(1) = h(3) = h(4) = 1 e h(2) = 2. Desde que todos os ciclos possveis passem pelo n 2, no existem ciclos positivos com todos os ns com a mesma cor, conforme requerido. Em particular, o subgrafo G1 no qual somente os ns com a cor 1 so mantidos acclico. Com di denido como na prova da propriedade, anteriormente, tem-se d1 = 0, d3 = 1 e d4 = 2. A ordenao das variveis construda na prova (1, 3, 4, 2), e a iterao de GaussSeidel correspondente mostrada na Figura 4.2.2(b). De acordo com a propriedade acima, esta ordenao requer o menor nmero possvel de estgios paralelos por iterao. Alm disso, a proposio 1 pode ser simplicada nos casos em que o grafo de dependncia tem a propriedade de simetria [8]. Proposio 2: Supondo que (i, j ) A se e somente se (j, i) A. Ento, os enunciados a seguir so equivalentes [8]: 1. Existe uma ordem das variveis tal que uma iterao do algoritmo correspondente GaussSeidel pode ser feita em K passos paralelos. 2. Existe uma colorao do grafo de dependncias que usa no mximo K cores e tal que os ns adjacentes tem cores diferentes, ou seja, se (i, j ) A ento h(i) = h(j ). Prova: suciente dizer que a condio (2) dessa proposio equivalente condio (2) da proposio 1. Supondo-se a existncia de um ciclo positivo com todos os ns daquele ciclo com a mesma cor, ento existem dois ns adjacentes com a mesma cor. Inversamente, se (i, j ) A, ento (j, i) A e os dois arcos (i, j ) e (j, i) formam um ciclo positivo. Assim, se dois ns vizinhos tem a mesma cor, ento existe um ciclo positivo em que todos os ns do ciclo tm a mesma cor, o que prova a equivalncia das duas condies e conclui a prova [8]. Infelizmente, o problema da colorao tima acima descrito computacionalmente intratvel (NP-completo). Entretanto, na prtica, os problemas freqentemente tm uma estrutura especial e colorao com relativamente poucas cores, pode ser as vezes encontrada por observao. Por exemplo, se todos os ns em G tem no mximo D vizinhos, ento D + 1 cores so sucientes. Assumindo-se que o primeiro n i colorido, se D + 1 cores so utilizadas, ento existe uma 52

cor passvel de ser usada para o n i + 1 e que assegura que sua colorao diferente de seus vizinhos j coloridos [8]. Quando um esquema de colorao empregado para implementao paralela de um algoritmo de Gauss-Seidel, no h necessidade de atribuir um processador diferente para cada componente de x, pois cada processador se mantm parado enquanto as variveis de cores diferentes so atualizadas. Uma medida para contornar essa limitao utilizar menos processadores, com cada processador sendo responsvel por diversas variveis que possuem cores diferentes associadas [8]. Exemplo: Colorao Rubro-negra de uma matriz Nos algoritmos iterativos para soluo de equaes diferenciais parciais, por exemplo, cada componente de x associado com um ponto particular de uma certa regio do espao bidimensional. Seja N o conjunto de todos os pontos (i, j ) R2 , tal que i e j so inteiros que satisfazem 0 i M e 0 j M . Seja xij o componente do vetor x correspondente ao ponto (i, j ). Conectando-se os vizinhos mais prximos forma-se um grafo G = (N, A), como ilustrado na Figura 4.2.2(a). Pode-se ver G como um grafo dirigido fazendo os arcos bidirecionais, assumindo que esse o grafo de dependncia associado a iterao x := f (x). A execuo paralela dessa iterao no mtodo de Jacobi direta, basta atribuir-se um processador diferente para cada ponto (i, j ). Esse processador responsvel por atualizar xij e, para faz-lo, somente precisa saber os valores dos componentes de x associados com pontos vizinhos. Assim, mais natural assumir que os processadores associados so ligados por links de comunicao diretos [8]. Para implementao do algoritmo relacionado ao Mtodo de Gauss-Seidel, pode-se colorir o grafo da Figura 4.2.2(a) com duas cores, conforme indicado na Figura 4.2.2(b). Atribuindose um processador para cada componente xij , cada processador permanece parado metade do tempo. Assim, razovel atribuir dois componentes de cores diferentes para cada processador. Como pode ser visto na Figura 4.2.2(b), isso pode ser feito sem perder a propriedade de que somente os vizinhos mais prximos se comunicam uns com os outros. Na prtica, o nmero de pontos envolvido freqentemente grande o suciente de modo que para cada processador 53

sejam atribudos mais do que dois componentes de x. A colorao indicada na Figura 4.2.2(b) comumente conhecida como colorao rubro-negra e o algoritmo Gauss-Seidel associado conhecido como Gauss-Seidel com ordenao rubro-negra [8].

Figura 4.6: Grafo para iteraes Gauss-Seidel com colorao. Fonte: Adaptao de [8].

4.3 Implementao da paralelizao dos mtodos iterativos clssicos


A seguir, discute-se a implementao das paralelizaes apresentadas na Seo ?? para os algoritmos iterativos clssicos (Seo 2.3.2). Embora at este momento os algoritmos tenham sido abordados de maneira independente da arquitetura utilizada, nesta seo o foco voltado s arquiteturas que se comunicam por troca de mensagens uma vez, naquelas em que a comunicao ocorre por memria compartilhada, a implementao tende a ser mais simples [8]. O mtodo de Jacobi para soluo de Ax = y diretamente paralelizvel, pois cada interao envolve uma multiplicao de matriz e vetor. Supondo-se que hajam n processadores disponveis, e que o i-simo processador responsvel por calcular xi (t) a cada iterao t (o caso em que o nmero de processadores menor do que o nmero de variveis semelhante). Supondo que o i-simo processador conhece as entradas da i-sima linha de A. Para calcular xi (t + 1), o processador i precisa saber os valores de xj (t) obtidos na iterao prvia pelos 54

processadores j para os quais aij = 0. Se a maioria das entradas de A so diferentes de zero, fcil transmitir xj para todos os processadores i, mesmo que aij seja igual a zero, pois transmisses seletivas podem introduzir um overhead despropositado. Trata-se, portanto de um broadcast multi-ns. Na prtica, essa abordagem pode resultar em um tempo de execuo dominado pelo tempo de comunicao, nesse caso, deveriam haver menos processadores com mais componentes atribudos para cada um. Uma implementao alternativa, considerar que existem novamente n processadores, com o i-simo processador responsvel pelo i-simo componente xi . Entretanto, assume-se que o i-simo processador tem acesso a i-sima coluna de A, ao contrrio da i-sima coluna de A. Assumindo que A uma matriz densa, a computao acontece da seguinte maneira: cada processador i avalia aij xi para j = 1, . . . , n. Ento para cada j , as quantidades aji xi para i = 1, . . . , n so propagadas para o processador j , com somas parciais formadas ao longo do caminho, o qual uma acumulao multi-ns. Os requisitos de comunicao desse mtodo e do anterior so os mesmos, para o caso de sistemas densos. A preferncia por uma das duas abordagens pode depender da arquitetura do computador que ser utilizado. Considerando a matriz A como sendo uma matriz esparsa, a estrutura esparsa de A determina que um grafo dirigido G = (N, A), onde N = {1, . . . , n} e o conjunto de arcos A o conjunto {(i, j )/i = j andaji = 0} de todos os processos pares (i, j ) tais que i precisa comunicar com j . Utilizando o grafo de dependncia introduzido em 4.2. Dada uma arquitetura especial, obtm-se implementaes paralelas ecientes se o grafo de dependncia puder ser encaixado no grafo que descreve a topologia da interconexo de rede. Nesse caso, todas as comunicaes acontecem entre processadores vizinhos e as penalidades de comunicao so mnimas. Quando tal encaixe no pode ser encontrado, os requisitos de comunicao do mtodo de armazenamento da matriz so bastante diferentes, o que uma diferena importante para o caso de matrizes densas [8]. Os algoritmos de Gauss-Seidel e SOR no so naturalmente ideais para paralelizao, no geral. Isso pode ser constatado, por exemplo, considerando o algoritmo de Gauss-Seidel e supondo uma matriz A totalmente densa, ou seja, aij = 0 para todo i e j . Logo, para que o processador i calcule xi (t + 1), o valor de xj (t + 1) ser necessrio para todo j < i. Isso torna o algoritmo inerentemente seqencial dado que dois componentes de x no podem ser atualizados simultaneamente. Tal situao particularmente inconveniente, pois os algoritmos SOR,

55

quando utilizando um valor adequado para , convergem, freqentemente, de maneira muito mais rpida que os demais. Por outro lado, como apresentado em 4.2, essa diculdade pode ser contornada aplicando-se o esquema de colorao nos casos em que a matriz A esparsa. Felizmente, quando a matriz A obtida a partir da discretizao de uma equao diferencial parcial, ela sempre esparsa. Alm disso, na prtica, o nmero p de processadores freqentemente muito menor do que o nmero n de variveis. Logo, diversas variveis podem ser atribudas para cada processador [8].

4.4 Concluso
Neste captulo foram consideradas possveis paralelizaes para os mtodos iterativos clssicos para resoluo de SELAs. Fica evidente que, mesmo havendo restries e limitaes tericas, esses mtodos podem ser ecientemente implementados para execuo em mquinas de alto desempenho diversas dado que, na prtica, os sistemas lineares resultantes das modelagens e discretizaes de equaes no se enquadram nos requisitos que tornam a paralelizao invivel. A granularidade que arquitetura permite explorar com esses algoritmos inuencia diretamente na ecincia dos mtodos paralelos, pois ela o principal fator para determinar se a movimentao dos dados, ou seja, operaes de leitura e escrita, requerida por um dado mtodo ter um custo compatvel com o mtodo e SELA em questo.

56

Bibliotecas e pacotes para

resoluo numrica de SELAs com alto desempenho


Neste Captulo sero 0apresentadas as bibliotecas, pacotes e softwares mundialmente mais utilizados para problemas de lgebra linear, dentre eles, a resoluo de sistemas lineares.

5.1 BLAS Basic Linear Algebra Subprograms


BLAS (Basic Linear Algebra Subprograms) uma coleo de rotinas que provem as bases para implementar programas que faam operaes com matrizes e vetores. A especicao original da BLAS foi desenvolvida na forma de subprogramas em Fortran 66 e na seqncia Fortran 77 [23, 1]. As funcionalidades da biblioteca so divididas em trs nveis: no primeiro esto as funcionalidades que executam operaes de escalares com escalares, escalares com vetores e vetores com vetores; no nvel dois encontram-se as operaes entre matrizes e vetores; e o nvel 3 implementa operaes de matrizes com matrizes. O nvel 1 foi o primeiro a ser desenvolvido, foi o resultado de um projeto colaborativo entre 1973 e 1977. Com o surgimento das mquinas vetoriais, mquinas com hierarquias de memria e mquinas paralelas com memria compartilhada, as especicaes para os nveis 2 e 3 da BLAS foram desenvolvidos de 1984 1986 e de 1987 1988, respectivamente. Originalmente, a BLAS oferecia rotinas apenas para trabalhar com matrizes densas e do tipo banda, atualmente as matrizes esparsas so tambm suportadas

57

[1]. Muitos dos algoritmos freqentemente utilizados na lgebra linear numrica podem ser codicados de forma que o volume da computao seja feito por chamadas a rotinas do nvel 2. Nas mquinas com processadores vetoriais, por exemplo, um dos objetivos na implementao manter os tamanhos dos vetores utilizados o maior possvel e na maioria dos algoritmos o resultado computado como um vetor por vez, o qual pode ser uma linha ou uma coluna. Nas mquinas de registradores vetoriais a performance pode ser ainda maior fazendo-se reuso dos resultados de um registrador vetorial ao invs de guardar o vetor de volta na memria. Entretanto, essa abordagem no , em geral, adequada para mquinas que fazem uso de hierarquias de memria e mquinas com processadores paralelos [13]. Nessas arquiteturas prefervel particionar as matrizes em blocos e fazer as operaes de matriz com matriz nos blocos, pois, organizando a computao dessa forma, possvel ter um reuso completo dos dados enquanto o bloco continua na memria cache ou memria local. Essa abordagem evita a movimentao excessiva de dados da memria. Adicionalmente, nas arquiteturas que provem processamento paralelo, o paralelismo pode ser explorado de duas formas. A primeira atravs de operaes em paralelo nos diferentes blocos, a segunda fazer em paralelo as operaes de escalares e vetores de um mesmo bloco [13]. Em [13] os autores apresentam de maneira mais detalhada o funcionamento do nvel 3 da BLAS e o porqu de cada escolha durante sua criao. A BLAS oferce, por padro, duas formas de manipulao de erros: atravs de um manipulador de erros, o BLAS_ERROR, e por cdigos de retorno de erro. A BLAS para matrizes densas utiliza o manipulador de erros, enquanto a BLAS para matrizes esparsas trabalha com os cdigos de retorno de erro. Cada funo padro da BLAS determina se e quando um mecanismo manipulador deve erro ser chamado e a especicao da funo deve conter as condies, se existirem, que disparam o manipulador de erros [1]. Por ser uma biblioteca eciente, portvel e amplamente utilizada, a BLAS costuma ser empregada no desenvolvimento dos softwares de lgebra linear de alta qualidade. A BLAS disponibilizada gratuitamente e pode ser livremente incorporada em softwares comerciais. Alm disso, existem verses otimizadas para diversas mquinas, ou seja, verses otimizadas depen-

58

dentes de mquina, desenvolvidas pelas fabricantes e fornecedores de software independentes (ISV - independent software vendors). Alguns exemplos dessas verses so [23]: ACML - Desenvolvido pela AMD, uma verso multithread que implementa os nveis 1, 2 e 3 da BLAS otimizados para processadores opteron; Velocity Engine - Implementao da Apple para processadores G4 e G5; MLIB - Verso implementada pela HP que inclui todas as rotinas dos 3 nveis alm de outras facilidades para a resoluo de sistemas densos e esparsos; MKL - Desenvolvida pela Intel, uma implementao multithread que pode ser adquirida como um produto em separado, como adicional ao Intel Cluster Toolkit ou com as verses prossionais dos compiladores da Intel. possvel tambm utilizar a biblioteca ATLAS (Automatically Tuned Linear Algebra Software) [2], a qual permite gerar automaticamente uma verso otimizada da BLAS para a arquitetura escolhida [24]. Exemplos de funcionamento e cdigo-fonte com chamadas para a BLAS podem ser obtidos em [13].

5.2 LINPACK
O LINPACK um pacote que contm uma coleo de programas para mtodos diretos para resoluo de sistemas lineares na forma Ax = y onde a matriz A pode ser de vrios tipos: genrica (GE), banda (GB), positiva denida (PO), banda positiva denida (HI), triangular (TR), tridiagonal positiva denida (PT) que ainda, com exceo das duas primeiras, podem estar compactadas ou no [17]. As rotinas do LINPACK so escritas em Fortran e a abordagem utilizada resolver as matrizes atravs da abordagem decomposicional da lgebra linear, ou seja, dada uma matriz A, decompe-se a mesma em um produto de outras matrizes mais simples e bem estruturadas, as quais podem ser facilmente manipuladas para resolver o problema original. Seu desenvolvimento foi baseado no nvel 1 da BLAS e a maioria das operaes de ponto utuante dos algoritmos do LINPACK so realizadas atravs de chamadas as rotinas da BLAS [26]. 59

Atualmente, o LINPACK mais conhecido enquanto benchmark do que biblioteca. A verso original do benchmark LINPACK vista como um acidente, tendo sido originalmente concebido para ajudar os usurios da biblioteca LINPACK no fornecimento de informaes sobre os tempos de execuo necessrios para resolver um sistema de equaes lineares. A primeira apario do LINPACK como benchmark foi em 1979, com os anos ele foi recebendo incrementos e, nos dias de hoje, , na verdade, composto por trs benchmarks, sendo o Highly Parallel Computing Benchmark (HPL) o mais importante deles, o qual serve como medida para elaborao da lista dos 500 computadores mais rpidos do mundo [6, 14]. O mtodo usado no benchmark decomposio LU com pivotamento parcial, a matriz do tipo densa, composta por elementos inteiros distribudos aleatoriamente entre -1 e 1. A resoluo do sistema de equaes requer O(n3 ) operaes de ponto utuante, mais especicamente, 2/3n3 + 2n2 + O(n) adies e multiplicaes de ponto utuante [26]. Dentre as tcnicas para melhora da performance na resoluo dos sistemas lineares, duas se destacam no LINPACK: desenrolamento dos laos e reuso dos dados. Observa-se que, freqentemente, o maior volume de computao de um programa est localizado em menos de 3% do cdigo fonte. Essa porcentagem do cdigo, tambm chamada de cdigo crtico, em geral consiste em um ou alguns poucos laos de repetio imersos, ou seja, em um nvel maior de aninhamento. O desenrolamento do lao consiste em replicar seu contedo, fazendo os devidos ajustes, e aumenta a performance porque h uma diminuio direta dos overheads inerentes ao loop. Nas mquinas com instrues vetoriais, no entanto, essa tcnica tem o efeito oposto [26]. Em relao ao reuso de dados, sabe-se que a cada passo do processo de fatorao do LINPACK so feitas operaes vetoriais para modicar uma submatriz inteira dos dados. Essa atualizao faz com que um bloco dos dados seja lido, atualizado e escrito novamente na memria central. O nmero de operaes de ponto utuante 2/3n3 e o nmero de referncias a dados , em ambos os casos (leitura e escrita), de 2/3n3 . Assim, para cada par adio/multiplicao feita a leitura e escrita dos elementos, levando a um baixo reuso dos dados. Mesmo quando as operaes so vetoriais, existe um gargalo signicante na movimentao dos dados, o que resulta em uma performance ruim. Em mquinas vetoriais, isso se traduz em duas operaes de vetor e trs referncias vetoriais memria. Nos computadores super-escalares isso resulta em uma

60

grande movimentao e atualizao dos dados. Esse contexto faz com que o LINPACK tenha desempenho reduzido em computadores de alta performance em que o custo do movimento dos dados semelhante ao das operaes de ponto utuante. Uma possvel soluo reestruturar os algoritmos de modo que explorem a hierarquia de memria das arquiteturas, o que pode ser feito, por exemplo, armazenando os dados o maior tempo possvel nas memrias de nvel mais prximo do processador, ou seja, aumentando o reuso dos dados [26]. Conforme visto na Seo 5.1, essas otimizaes esto presentes nos nveis 2 e 3 da BLAS, adotos por outros pacotes, como o LAPACK (Seo 5.3. As solues dos sistemas lineares no LINPACK benchmark so consideradas corretas quando possuem a mesma preciso relativa que as apresentadas pelas tcnicas padro como a Eliminao de Gauss no pacote LINPACK. Essa preciso dada pela Equao 5.1, onde A nxn ; x, b n , a preciso de mquina para operaes de aritmtica de ponto utuante de 64 bits e . qualquer norma consistente. Ax y = O(1) A . x .n.

(5.1)

5.3 LAPACK Linear Algebra PACKage


O Lapack uma biblioteca escrita em Fortran 77 que prov subrotinas para resoluo de sistemas de equaes lineares, problemas de auto-valores, dentre outros. As fatoraes de matrizes utilizadas so LU, Cholesky, QR, SVD Schur e Schur Generalizada. O LAPACK suporta matrizes densas e do tipo banda, porm, no suporta matrizes esparsas. Os elementos das matrizes podem ser nmeros reais ou complexos e pode-se utilizar preciso simples ou dupla [24]. O LAPACK o programa estado da arte para resoluo de problemas de equaes representadas em matrizes densas e do tipo banda, alm de outros tipos de operaes da lgebra linear [1]. O objetivo do LAPACK, quando iniciado seu projeto, era fazer as j amplamente utilizadas bibliotecas EISPACK e LINPACK rodarem ecientemente em computadores paralelos de memria compartilhada e vetorias. Nessas mquinas, o LINPACK e EISPACK so inecientes porque seus padres de acesso memria negligenciam a hierarquia de memria dessas mquinas, o

61

que faz com que o custo do acesso aos dados seja bastante alto. No LAPACK, visando contornar esse problema, os algoritmos foram reorganizados para utilizar as operaes de matrizes em bloco, tais como multiplicao de matrizes, nos laos mais internos. Essas operaes em bloco podem ser otimizadas para cada arquitetura de modo a tirar proveito da arquitetura de memria e prover uma forma de se atingir alta ecincia nas diversas mquinas modernas [24, 13]. As rotinas do LAPACK so escritas de modo que a computao ocorra, tanto quanto possvel, atravs de chamadas para rotinas da BLAS. Enquanto o LINPACK e EISPACK so baseados nas operaes vetoriais da BLAS (nvel 1), o LAPACK foi desenvolvido para explorar o nvel 3, tendo, inclusive, inuenciado seu desenvolvimento posteriormente [24]. Essa inuncia se deu ao fato de que, somente aps a implementao do LAPACK, que algumas operaes da BLAS como rotinas para copiar uma matriz (GE_COPY) e calcular a norma de uma matriz (GE_NORM), dentre outras, passaram a ser utilizadas com maior freqncia e foram implementadas como rotinas separadas [1]. Devido granularidade grossa do nvel 3 das operaes da BLAS, seu uso prov alta ecincia em muitos computadores de alta performance, principalmente naqueles em que implementaes especiais do cdigo so oferecidas pelo fabricante da mquina [24].

5.4 scaLAPACK - Scalable LAPACK


O scaLAPACK uma biblioteca de software para fazer computao de matrizes densas e do tipo banda em computadores do tipo MIMD de memria distribuda, utilizando, para tal, troca explcita de mensagens e em redes de estaes de trabalho que suportam PVM (Parallel Virtual Machine) e/ou MPI (Message Passing Interface). um pacote para ambientes de computao heterogneos implementado com paradigma de programao SPMD[25]. Assim como no LAPACK, as rotinas do scaLAPACK so baseadas em algoritmos que utilizam o paralelismo por decomposio em blocos de movo a diminuir a movimentao dos dados entre os diferentes nveis da hierarquia de memria. O scaLAPACK mantm suas rotinas, quando possvel, compatveis com suas equivalentes no LAPACK. As bases fundamentais do scaLAPACK so as verses para memria distribuda dos nveis 1, 2 e 3 da BLAS, ou seja,

62

a PBLAS, e um conjunto de subprogramas para comunicao de programas de lgebra linear (BLACS - Basic Linear Algebra Communication). Nas rotinas do scaLAPACK, toda a comunicao entre os processos ocorre com o uso da PBLAS e da BLACS[25].

5.5 HPL - High Performance Linpack


O HPL [28] um benchmark para resoluo de sistemas densos e aleatrios de equaes lineares. Prove programas que testam o tempo de execuo e a preciso das solues obtidas. O HPL na verdade uma evoluo do LINPACK, a implementao do mesmo para mquinas de memria distribudas. O HPL o benchmark utilizado na lista do top 500 [14] e sua implementao baseada nas bibliotecas MPI, para comunicao e na BLAS, para as rotinas de lgebra linear [28].

63

Concluso
Nesse trabalho foi apresentada a relao da computao paralela com a resoluo dos sis-

temas de equaes lineares de grande porte. Dentro desse contexto, foram revisados tpicos de ambas as reas, alm dos mtodos numricos utilizados para resoluo dos SELAs. A resoluo eciente dos sistemas de equaes lineares importantssima para diversas reas do conhecimento, e, somente atravs da computao paralela, que tem-se conseguido atingir os nveis necessrios para o correto entendimento dos problemas por eles modelados. Observou-se no entanto que uma srie de questes carecem de padronizao na computao paralela, como, por exemplo, a implementao de algoritmos portveis e as medidas de desempenho. No h como comparar arquiteturas diferentes de modo genrico, embora isso ocorra atravs, por exemplo do TOP 500, pois, os diferentes benchmarks tendem a beneciar diferentes abordagens. Assim, a escolha da arquitetura e dos mtodos numricos utlizados para resoluo dos SELAs deve ser feita de acordo com o problema que se deseja modelar, ou seja, se o problema resulta em matrizes esparas ou densas, se possuem estruturas especcas na distribuio dos elementos ou no, dentre outros fatores.

64

Bibliograa
[1] An updated set of basic linear algebra subprograms (blas). ACM Trans. Math. Softw., 28(2):135151, 2002. [2] Automatically tuned linear algebra software (atlas), 2008. http://math-atlas.sourceforge.net - Acesso em 15 jun. 2008. [3] Beowulf.org overview, 2008. http://www.beowulf.org/overview - Acesso em 20 mai. 2008. [4] The message passing interface (mpi) standard, 2008. http://www-unix.mcs.anl.gov/mpi/ Acesso em 22 jun. 2008. [5] Pvm: Parallel virtual machine, 2008. http://www.csm.ornl.gov/pvm/ - Acesso em 22 jun. 2008. [6] Top500 supercomputing sites, 2008. http://www.top500.org - Acesso em 28 mai. 2008. [7] George Karypis Ananth Grama, Anshul Gupta. Introduction to Parallel Computing.

Addison-Wesley, Lebanon, Indiana, U.S.A, 2nd edition, 2003. [8] Dimitri P. Bertsekas and John N. Tsitsiklis. Parallel and Distributed Computation: Numerical Methods. Athena Scientic, 1997. [9] H.A. Luther Brice Carnahan and James O. Wilkes. Applied Numerical Methods. John Wiley and Sons, New York, 1969. [10] Rajkumar Buyya. High Performance Cluster Computing, volume 2. Prentice Hall PTR, Upper Saddle RIver, New Jersey, 1999. 65

[11] Patrcia Nunes da Silva. Equaes Diferenciais Ordinrias, volume 1 of Clculo Diferencial e Integral. Rio de Janeiro, 1st edition, 2005. [12] Francisco Chagas da Silva Filho. Modelagem de problemas de engenharia: soluo de equaes diferenciais parciais pelo mtodo dos elementos nitos. Revista Tecnologia, 1:134144, 2005. [13] J. J. Dongarra, Jeremy Du Croz, Sven Hammarling, and I. S. Duff. A set of level 3 basic linear algebra subprograms. ACM Trans. Math. Softw., 16(1):117, 1990. [14] Jack Dongarra. Frequently asked questions on the linpack benchmark and top500,

2008. http://www.netlib.org/utk/people/JackDongarra/faq-linpack.html - Acesso em 16 jun. 2008. [15] Jack Dongarra, Thomas Sterling, Horst Simon, and Erich Strohmaier. High-performance computing: Clusters, constellations, mpps, and future directions. Computing in Science and Engg., 7(2):5159, 2005. [16] Iain S. Duff and Henk A. van der Vorst. Developments and trends in the parallel solution of linear systems. Parallel Comput., 25(1314):19311970, 1999. [17] Dalcidio Moraes Cludio e Jussara Maria Marins. Clculo Numrico Computacional. Editora Atlas, So Paulo, 3rd edition, 2000. [18] Jos Alberto Cuminato e Messias Meneguette Junior. Discretizao de Equaes Diferenciais Parciais: Tcnicas de Diferenas Finitas. Universidade de So Paulo e Universidade Estadual Paulista, Agosto 2002. [19] Cesar Augusto Fonticielha De Rose e Philippe O. A. Navaux. Arquiteturas paralelas. Livros Didticos. Sagra Luzzatto, Porto Alegre, 1st edition, 2003. [20] Gerson Geraldo H. Cavalheiro e Rafael R. dos Santos. Atualizaes em Informtica 2007. SBC, Porto Alegre, 1st edition, 2007. Captulo de Livro. Captulo 8: Multiprogramao leve em arquiteturas multi-core.

66

[21] Michael J. Flynn. Some computer organizations and their effectiveness. IEEE Transactions on Computers, C-21(9):948960, September 1972. [22] Michael J. Flynn and Kevin W. Rudd. Parallel architectures. ACM Computing Surveys, 28(1):6770, 1996. [23] National Science Foundation. Blas (basic linear algebra subprograms), 2008.

http://www.netlib.org/blas - Acesso em 18 jun. 2008. [24] National Science Foundation. Lapack linear algebra package, 2008.

http://www.netlib.org/lapack - Acesso em 15 jun. 2008. [25] National Science Foundation. The scalapack project, 2008.

http://www.netlib.org/scalapack/index.html - Acesso em 18 jun. 2008. [26] Antoine Petitet Jack J. Dongarra, Piotr Luszczek. The linpack benchmark: past, present and future. Concurrency and Computation: Practice and Experience, 15(9):803820, 2003. [27] Eric E. Johnson. Completing an mimd multiprocessor taxonomy. SIGARCH Comput. Archit. News, 16(3):4447, 1988. [28] Innovative Computing Laboratory. Hpl - a portable implementation of the 2008.

high-performance linpack benchmark for distributed-memory computers, http://www.netlib.org/benchmark/hpl/ - Acesso em 23 jun. 2008.

[29] Raquel S. Lotti, Andr Wilson Machado, nio Tonani Mazzieiro, and Janes Landre Jnior. Aplicabilidade cientca do mtodo dos elementos nitos. Revista Dental Press de ortodontia e ortopedia facial, 11(2):3543, 2006. [30] Yousef Saad. Iterative Methods for Sparse Linear Systems. SIAM, 2nd edition, January 2000. [31] David B. Skillicorn. A taxonomy for computer architectures. Computer, 21(11):4657, 1988. 67

[32] David B. Skillicorn and Domenico Talia. Models and languages for parallel computation. ACM Comput. Surv., 30(2):123169, 1998. [33] Gilbert Strang. Linear Algebra and Its Applications. Thomson Learning, Massachusetts Institute of Technology, 3rd edition, 1988. [34] Adenauer Corra Yamin. Um estudo das potencialidades e limites na explorao do paralelismo. Trabalho individual ii, Universidade Federal do Rio Grande do Sul, Porto Alegre, Agosto 1999. 80p.

68

Vous aimerez peut-être aussi