Para ilustrar a idéia do fatiamento (sli ing) de pro essos em interesses, vamos
onsideraroseguinteexemplo: sejam
A
eB
duasmatrizesquadradasn × n
eX
eY
dois vetores
1 × n
(onden > 0
). Iremos al ular o es alarr = (A×X
T)×(B×YT)
.
Consideremos um algoritmo paralelo para este ál ulo em quatro pro essadores
(
P0, P1, P2
eP3
) distintos, sendo que o pro essadorP0
que exe uta o pro esso root seresponsabilizará emini iar a omputação (alo ando memóriapara as matrizes eini ializando-as om valores numéri os) e re olher o resultado nal, oes alar
r
.Opro essador
P0
, apósini ializarasmatrizeseosvetores,armazenaráametade superior(linha0atéàlinhan/2−1
)damatrizA
onsigoeenviaráametadeinferiorde
A
(linhan/2
à linhan − 1
) aopro essadorP1
(por enquanto, vamos abstrair a formadeenviodedadosentrepro essadores).P0
enviará,também,ovetorX
inteiro aopro essadorP1
emanterá uma ópia onsigo.De posse da matriz
B
eo vetorY
,P0
enviaráas metades superior e inferior da matrizB
paraospro essadoresP2
eP3
,respe tivamente. JáovetorY
será enviado porinteiroaos pro essadoresP2
eP3
.Após realizada a distribuição des rita a ima, aremos om o seguinte enário:
P0
de posse da metade superior deA
(A0
) e do vetorX
;P1
de posse da metade superior deA
(A1
) e do vetorX
;P2
de posse da metade inferior deB
(B0
) e do vetorY
; nalmente,P3
de posse dametadesuperior deB
(B1
) e dovetorY
.Figura 3.1: Separação da omputação nos pro essosenvolvidos
Oobjetivodestadistribuiçãoéparalelizaro ál ulodamultipli açãodasmatrizes
nos quatro pro essadores, onforme mostrado nagura 3.1. Ou seja,o pro essador
P0
vai al ularV0
= A0×X
T
e
P1
vai al ularV1
= A1×X
T
. Ovetor
V
éoresultadodessa multipli ação, e o mesmo estará distribuído em
P0
(V0
) eP1
(V1
). O mesmo o orre paraP2
eP3
onde é riado o vetorU
que estará dividido emU0
= B0× Y
T
e
U1
= B1× Y
T
.
Atéeste pontodoalgoritmo,foram al ulados apenasoprodutode matrizespor
vetores de formaparalela,gerando doisnovosvetoresos quais hamamosde
U
eV
.O próximo passo do problema ini ial é o ál ulo do produto vetorial
r = U
T
× V
,
ujo resultado será armazenado em
r
. Este ál ulo deverá ser efetuado de formaparalelanos pro essadores sendoquepara issofaz-sene essária aredistribuiçãodos
vetores apresentados na Figura 3.1. Vamos então dividir os vetores resultantes em
ada pro essador, ou seja,
V0
que está lo alizado emP0
será dividido pela metade emV0−upper
eV0−lower
(upper paraametadesuperiorelower paraametadeinferior). Analogamente, nosoutrospro essadoresteremosqueP1
irágerarV1−upper
eV1−lower
,P2
apresentaráU0−upper
eU0−lower
eP3
omU1−upper
eU1−lower
(Figura3.2).Estanova onguraçãotornapossívelaredistribuição(Figura3.3)dosdadosnos
Figura 3.2: Parti ionamento dosvetores U e V nosrespe tivos pro essadores. A legenda
indi a a or de ada pro essador
P1
U0−lower
.P2
envia aP0
U0−upper
.P1
envia aP3
V1−lower
.P3
envia aP2U1−upper
. Apósaredistribuiçãodos vetores lower eupper, adapro essadordeverá efetuaramultipli ação(Figura 3.4) dos vetores que foramre ebidos e armazenar osdados
emvariáveisquerepresentamor parti ionado. Aonal,deveráserfeitoosomatório
dessesvalores nopro essador
P0
. Logor = r0 + r1 + r2 + r3
.Oexemplodamultipli açãoparalelaexpli adoa imapodeserdivididoemvários
interesses. Alguns omuns a todos os pro essos envolvidos, e outros omuns a
apenas dois pro essos,porexemplo. A Figura3.5 ilustra omo éfeita separação do
nosso exemplo em interesses. Abaixo, iremos enumerá-los, expli ando-os de forma
horizontal, on entrando-nos nopro essador
P0
.i. Ini ializar: Esteinteresseperten eapenasà
P0
. Eleseen arregadeini ializar asestruturasA, B, X
eY
om valores inteiros aleatórios, para ns de teste.Figura 3.4: Cál ulo das partes der em ada pro essador
ii. Distribuir(
A, X
): Note-se que este interesse é omum tanto aP0
quanto aP1
. Ele é responsável em distribuir as respe tivas metades da matrizA
e o vetorX
( ompleto) entre esses dois pro essadores. Como expli ado,P0
irá re eberA0
eX
T
. Já
P1
ará omA1
etambém omY
T
.
iii. Distribuir(
B, Y
): Análogo ao interesse a ima, este é omum aP0, P2
eP3
. Ele perten e aP0
também pois este pro essador é quem ini ia as estruturas dedados,noentanto,não efetua omputaçãosobreasmesmas. Completando,ele distribui as respe tivas metades da matriz
B
e o vetorY
entreP2
eP3
. Comoexpli ado,P2
iráre eberB0
eY
T
. Já
P3
ará omB1
e também omYT
.
iv. MultMatVet(
A, X
) e MultMatVet(B, Y
): O primeiro multipli aA
eX
T
e armazena o resultado em
V
. O segundo, multipli aB
eY
T
e armazena o
resultado em
U
. Note que emP0
, apenas a metade superior deA
é passada om parâmetro (A0
). E emP1
, a metadeA1
é usada. O mesmo vale para a matrizB
, dividida entre os pro essadoresP3
eP4
. O vetores resultantes também são subdivididos emV0
,V1
,U0
eU1
e distribuídos respe tivamente emP0
,P1
,P2
eP3
. Importanteressaltarque esses interesses trabalhamsobre dados diferentes. EmP0
eP1
, MultMatVet atua sobreA, X
eV
. E emP2
eP3
,atuasobreB, Y
eU
. MesmoqueemP0
,apenasametadeini ialdeA
seja usada eemP1
, a metade nal, ainda assim esse dois pro essos ompartilham omesmointeresse, pois não houvea riaçãode uma novaestrutura de dados.Eles ontinuamatuando sobreamatriz
A
. Analogamente, omesmora io íniovalepara
P3
eP4
.Figura 3.5: Interesses omuns e espe í os dis riminados por or em ada pro essador
e
V
deverãoser repartidosentre osmesmos,sema riaçãode novasestruturasde dados (Veja Figuras3.2e 3.3).
vi. MultVetVet(
U
,V
): Outro interesse omum aos quatro pro essadores só queomaparti ularidadedeque adapro essadorirátrabalhar omumapartede
U
eV
distintadas demais. Cadapro essador deve al ular,então, um es alarr
.vii. A umular(
r
): Maisuma vez, um interesse omum atodos ospro essos. EmP1
,P2
eP3
,alógi aseráadeenviaroresultado al uladonointeresseanterior em ada pro essador paraP0
.P0
, além de enviar seu resultado a ele mesmo, irásomar os resultados provindos de outros pro essadores, e dele mesmo, noes alar
r
. Ointeresseé mútuopoistodos ompartilhamamesmaestrutura dedados,o es alar
r
.Re apitulando,amultipli açãode dois vetoresé uminteresse omum atodos os
pro essos. Cada pro essador ne essita de uma rotina que efetua essa operação. A
riação e distribuição das matrizes e vetores através dos pro essos é um interesse
que diz respeito a apenas ao pro esso
P0
(root). O re ebimento do vetorX
, é um interesse que diz respeito a apenas os pro essosP0
eP1
. Já o vetorY
deve ser re ebido porapenas ospro essosP2
eP3
.Visualizando o programa horizontalmente, por interesses, vamos de en ontro à
assumeminteresses omoaunidadebási aparaade omposiçãode umsoftware [51℄
Portanto, o modelo # propõe uma visão fo ada em interesses, quebrando
assim o modelo tradi ional de perspe tiva orientada a pro essos dos artefatos de
programação paralela existentes. A programação paralela sob a perspe tiva #,
passaentãoaser orientadaainteresses. Um omponente#é apazde tratarde um
interesseenvolvendounidades de um onjuntode pro essosenvolvidos,de talforma
que ada unidade representa o papel dopro esso naquele interesse. Por exemplo, o
interesseA umularnas unidades
P1
,P2
eP3
apenasenviamseus dados àP0
. Esse, porsua vez, alémde re eberodado al uladonelepróprio,deverá fazerosomatóriodos resultados provindos dos outros pro essadores. Dessa forma, a síntese de um
programa paralelo baseado em pro essos, apaz de exe utar de maneira e iente
em arquiteturas distribuídas ontemporâneas, é possível a partir da de omposição
baseadaeminteresses deumprograma#. Conje tura-sesuageneralidade,deforma
queoutras noções de omponentes podem ser interpretadasem termosdeste [40℄.