23
Patrones para Dise Patrones para Dise ñ ñ o de o de Software Paralelo Software Paralelo Jorge L. Ortega Arjona Jorge L. Ortega Arjona Departamento de Matem Departamento de Matem á á ticas ticas Facultad de Ciencias, UNAM Facultad de Ciencias, UNAM

Patrones para Diseño de Software Paralelo

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Patrones para Diseño de Software Paralelo

Patrones para DisePatrones para Diseñño de o de Software ParaleloSoftware Paralelo

Jorge L. Ortega ArjonaJorge L. Ortega ArjonaDepartamento de MatemDepartamento de Matemááticasticas

Facultad de Ciencias, UNAMFacultad de Ciencias, UNAM

Page 2: Patrones para Diseño de Software Paralelo

Procesamiento Paralelo y Procesamiento Paralelo y ProgramaciProgramacióón Paralelan Paralela

Procesamiento ParaleloProcesamiento Paralelo: divisi: divisióón de una labor de procesamiento n de una labor de procesamiento entre mentre múúltiples procesadores que operan simultltiples procesadores que operan simultááneamente con un neamente con un objetivo comobjetivo comúún. n.

El resultado esperado es, comEl resultado esperado es, comúúnmente, una terminacinmente, una terminacióón mn máás rs ráápida del pida del objetivo en comparaciobjetivo en comparacióón con su ejecucin con su ejecucióón en un solo procesador. n en un solo procesador. Su principal ventaja es la habilidad de manejar tareas de una esSu principal ventaja es la habilidad de manejar tareas de una escala cala que no serque no seríía realista o costo efectivo para otros sistemas.a realista o costo efectivo para otros sistemas.

Programa Paralelo:Programa Paralelo: EspecificaciEspecificacióón de un conjunto de procesos n de un conjunto de procesos que se ejecutan simultque se ejecutan simultááneamente, comunicneamente, comunicáándose entre sndose entre síí para para lograr un objetivo comlograr un objetivo comúún.n.

DesempeDesempeñño:o: se refiere a la se refiere a la responsividadresponsividad de un sistema de un sistema —— el el tiempo requerido para responder a esttiempo requerido para responder a estíímulos (eventos) o el nmulos (eventos) o el núúmero mero de eventos procesados en un intervalo de tiempo.de eventos procesados en un intervalo de tiempo.

Page 3: Patrones para Diseño de Software Paralelo

DesempeDesempeñño de un programa o de un programa paralelo paralelo

Plataforma Paralela (Hardware y Plataforma Paralela (Hardware y Software)Software)

Lenguaje de ProgramaciLenguaje de Programacióónn

Problema a resolverProblema a resolver

Page 4: Patrones para Diseño de Software Paralelo

Problema a ResolverProblema a Resolver

Programa

Algoritmo

Modelo

Proceso

Entidades abstractas, asociaciones lógicas, valoresabstractos

Datos, operacionesabstractas, valoresestructurados

Estructuras de datos, operacionesprimitivas,Valores básicos

Localidades de almacenamiento, operaciones físicas, valores como patronesde bits

Habilidad para descomponer el modelo en acciones de componentes

Adecuación del lenguaje,comprnsión de los métodos computacionales

Precisión en el mapeo lenguaje/instrucción de máquina, eficiencia en el código generado

Page 5: Patrones para Diseño de Software Paralelo

Programa Paralelo = CoordinaciPrograma Paralelo = Coordinacióón + Procesamienton + Procesamiento

CoordinaciCoordinacióón:n: conjunto de acciones que permiten la cooperaciconjunto de acciones que permiten la cooperacióón n entre componentes mediante su organizacientre componentes mediante su organizacióón en el tiempo y n en el tiempo y espacio y el acceso de datos a donde pueden operarse.espacio y el acceso de datos a donde pueden operarse.Cambio en el estado de las variables remotas. Cambio en el estado de las variables remotas.

ComunicaciComunicacióón:n: intercambio de datos o solicitud de operaciones entre intercambio de datos o solicitud de operaciones entre componentes.componentes.

SincronizaciSincronizacióón:n: organizaciorganizacióón de acciones sobre datos y funciones por n de acciones sobre datos y funciones por parte de diferentes componentes.parte de diferentes componentes.

Procesamiento:Procesamiento: cambio en el estado de las variables locales.cambio en el estado de las variables locales.

Page 6: Patrones para Diseño de Software Paralelo

Patrones de SoftwarePatrones de Software

Un patrón de software (software pattern) es una relación forma-función que ocurre en un contexto.

la función se describe en términos del dominio del problema como un grupo de conflictos de fuerzas sin resolver;

la forma es una estructura descrita en términos del dominio de la solución que logra un equilibrio adecuado y aceptable entre esas fuerzas.

Función

(Problema)

Forma

(Solución)

Contexto Contexto (Consecuencias)

Page 7: Patrones para Diseño de Software Paralelo

CategorCategoríías de Patrones de as de Patrones de SoftwareSoftware

Patrones ArquitectPatrones Arquitectóónicos (nicos (ArchitecturalArchitecturalPatternsPatterns))

Patrones de DisePatrones de Diseñño (o (DesignDesign PatternsPatterns))

Modismos (Modismos (IdiomsIdioms))

Page 8: Patrones para Diseño de Software Paralelo

Ejemplo: Ejemplo: ManagerManager--WorkersWorkersName:

Manager-Workers pattern.

Context:Start the design of a parallel program, using a particular programming language for certain parallel hardware. Consider the following

context constraints:

The problem involves tasks of a scale that would be unrealistic or not cost-effective for other systems to handle, and lends itself to be solved using parallelism.The parallel hardware platform or machine to be used is given.The main objective is to execute the tasks in the most time-efficient way.

Problem:The same operation is required to be repeatedly performed on all the elements of some ordered data. Data can be operated without a specific order. However, an important feature is to preserve the order of data. If the operation is carried out serially, it should be executed as a sequence of serial jobs, applying the operation to each datum one after another. Generally, performance as execution time is the feature of interest, so the goal is to take advantage of the potential simultaneous execution in order to carry out the whole computation as efficiently as possible.

Forces:The following forces should be considered:

Preserve the order of data. However, the specific order of operation on each piece of data is not fixed.The operation can be performed independently on different pieces of data.Data pieces may exhibit different sizes.The coordination of the independent computations has to take up a limited amount of time in order not to impede performance of other processing elements.Mapping the processing elements to processors has to take into account the interconnection among the processors of the hardware platform.

Solution:Introduce activity parallelism by having multiple data sets processed at the same time. The most flexible representation is the Manager-Workers approach. This structure is composed of a manager component and a group of identical worker components. The manager is responsible of preserving the order of data. On the other hand, each worker is capable of performing the same independent computation on different pieces of data. It repeatedly seeks a task to perform, performs it, and repeats; when no tasks remain, the program is finished.

Page 9: Patrones para Diseño de Software Paralelo

Ejemplo: Ejemplo: ManagerManager--WorkersWorkers

Manager

Worker 1

Worker 2

Worker n

Page 10: Patrones para Diseño de Software Paralelo

Patrones para DisePatrones para Diseñño de Software o de Software ParaleloParalelo

Conjunto de patrones de software que desarrollan la Conjunto de patrones de software que desarrollan la coordinacicoordinacióón, la comunicacin, la comunicacióón y la sincronizacin y la sincronizacióón de n de un sistema de software paralelo.un sistema de software paralelo.

MMéétodo de disetodo de diseñño:o:1.1. AnAnáálisis del problemalisis del problema2.2. DiseDiseñño de la coordinacio de la coordinacióónn3.3. DiseDiseñño de la comunicacio de la comunicacióónn4.4. DiseDiseñño detalladoo detallado5.5. ImplementaciImplementacióón y pruebasn y pruebas

Page 11: Patrones para Diseño de Software Paralelo

Patrones para DisePatrones para Diseñño de Software o de Software ParaleloParalelo

CoordinaciCoordinacióón:n:ArchitecturalArchitectural PatternsPatterns forfor ParallelParallel ProgrammingProgramming

ParallelParallel Pipes Pipes andand FiltersFiltersParallelParallel LayersLayersCommunicatingCommunicating SequentialSequential ElementsElementsManager Manager WorkersWorkersSharedShared ResourceResource

Page 12: Patrones para Diseño de Software Paralelo

Patrones para DisePatrones para Diseñño de Software o de Software ParaleloParalelo

ComunicaciComunicacióón:n:DesignDesign PatternsPatterns forfor CommunicationCommunication ComponentsComponents

SharedShared Variable PipeVariable PipeMessageMessage PassingPassing PipePipeSharedShared Variable Variable ChannelChannelMessageMessage PassingPassing ChannelChannelMultipleMultiple Local Local CallCallMultipleMultiple Remote Remote CallCallLocal Local RendezvousRendezvousRemote Remote RendezvousRendezvous

Page 13: Patrones para Diseño de Software Paralelo

Patrones para DisePatrones para Diseñño de Software o de Software ParaleloParalelo

SincronizaciSincronizacióón:n:IdiomsIdioms forfor SynchronizationSynchronization MechanismsMechanisms

SemphoreSemphore idiomidiomCriticalCritical RegionRegion idiomidiomMonitor Monitor idiomidiomMessageMessage PassingPassing idiomidiomRemote Remote ProcedureProcedure CallCall idiomidiom

Page 14: Patrones para Diseño de Software Paralelo

MMéétodo de Disetodo de Diseññoo

Diseño de la Comunicación

Diseño de la Coordinación

Análisis del Problema

Diseño Detallado

Implementación y Evaluación

Especificación del problema

Especifficación del sistema

Especificación de los componentes de comunicación

Descripción del Sistema de Software Paralelo

Necesidad de alto desempeño

Sistema de Software Paralelo

Page 15: Patrones para Diseño de Software Paralelo

Un ejemplo: La EcuaciUn ejemplo: La Ecuacióón n BiBi--dimensional de Calordimensional de Calor

Δx

Δy

Origen

02

2

2

2

=∂∂

+∂∂

yu

xu 02

2

2

2

=∂∂

+∂∂

yu

xu 02

2

2

2

=∂∂

+∂∂

yu

xu 02

2

2

2

=∂∂

+∂∂

yu

xu 02

2

2

2

=∂∂

+∂∂

yu

xu 02

2

2

2

=∂∂

+∂∂

yu

xu

Page 16: Patrones para Diseño de Software Paralelo

AnAnáálisis del problemalisis del problema

u(i, j) ≈ u(i − 1, j) + u(i + 1, j) + u(i, j − 1) + u(i, j +1) / 4

u(i,j)

u(i,j+1)

u(i+1,j)u(i-1,j)

u(i,j-1)

Page 17: Patrones para Diseño de Software Paralelo

DiseDiseñño de la Coordinacio de la Coordinacióónn

:Channel :Grid :Grid:Channel :Grid :Channel

:Channel :Grid :Grid:Channel :Grid :Channel

:Channel :Grid :Grid:Channel :Grid :Channel

:Channel :Channel :Channel

:Channel :Channel :Channel

:Channel :Channel :Channel

:Channel :Channel :Channel

:Channel :Channel :Channel

Communicating Sequential Elements pattern

Page 18: Patrones para Diseño de Software Paralelo

DiseDiseñño de la Comunicacio de la Comunicacióónn

grid(i,j):Grid:SynchronisationMechanism

grid(i,j+1):Grid

temperature[]:Double

1.send(temperature)

2.write(temperature) 3.read(temperature)

4.receive(temperature)

:SynchronisationMechanism

temperature[]:Double

1.send(temperature)

2.write(temperature)3.read(temperature)

4.receive(temperature)

Shared Variable Channel pattern

Page 19: Patrones para Diseño de Software Paralelo

ImplementaciImplementacióón de la n de la SincronizaciSincronizacióónn

import java.util.Vector;class Monitor {

private int numMessages = 0;private final Vector temperatures = new Vector();public final synchronized void write(double temp){

if(temp == null) throw new NullPointerException();numMessages++;temperatures.addElement(temp);if(numMessages <= 0) notify();

}public final synchronized double read(){

double temp = 0.0d;numMessages--;while(numMessages < 0){

try{wait();break;

}catch(InterruptedException e){

if(numMessages >=0) break;else continue;

}}temp = temperatures.firstElement();temperatures.removeElementAt(0);return temp;

}}

Monitor Idiom

Page 20: Patrones para Diseño de Software Paralelo

DescripciDescripcióón del Disen del Diseñño del Sistema o del Sistema ParaleloParalelo

:C :G :G:C :G :C

:C :G :G:C :G :C

:C :G :G:C :G :C

:C :C :C

:C :C :C

:C :C :C

:C :C :C

:C :C :C

Una Descripción del Diseño del Sistema Paralelo para resolver la Ecuación Bidimensional de Calor

Coordinación:TheCommunicatingSequentialElementsarchitecturalpattern

Componentes de Comunicación:The SharedVariable Channeldesign pattern

grid(i,j)

:SM

grid(i,j+1)

temperature

1.send()

2.write() 3.read()4.receive()

:SM

temperature

1.send()

2.write()3.read()

4.receive()

Mecanismo de Sincronización:The Monitor idiom

temperature[]

Queue

Monitor

readwrite

Page 21: Patrones para Diseño de Software Paralelo

ProcesamientoProcesamiento

temperature += (total/4.0 – temperature);

Page 22: Patrones para Diseño de Software Paralelo

Patrones de Software para DisePatrones de Software para Diseñño o de Software Paralelode Software Paralelo

PatternsPatterns forfor ParallelParallel Software Software DesignDesignJorge L. OrtegaJorge L. Ortega--ArjonaArjonaJohnJohn WileyWiley & & SonsSons, 2010., 2010.

Page 23: Patrones para Diseño de Software Paralelo

ReferenciasReferencias1.1. ArchitecturalArchitectural PatternsPatterns forfor ParallelParallel ProgrammingProgramming.. Jorge L. OrtegaJorge L. Ortega--Arjona Arjona andand GrahamGraham RobertsRoberts. .

ProceedingsProceedings ofof thethe 3rd 3rd EuropeanEuropean ConferenceConference onon PatternPattern LanguagesLanguages ofof ProgrammingProgramming andandComputingComputing ((EuroPLoPEuroPLoP'98).'98). KlosterKloster IrseeIrsee, , GermanyGermany. 9. 9--12 12 ofof julyjuly, 1998., 1998.

2.2. TheThe CommunicatingCommunicating SequentialSequential ElementsElements PatternPattern. . AnAn ArchitecturalArchitectural PatternPattern forfor DomainDomainParallelismParallelism. . Jorge L. OrtegaJorge L. Ortega--Arjona.Arjona.7th 7th PatternPattern LanguagesLanguages ofof ProgrammingProgramming 2000 (2000 (PloP2000PloP2000).).AllertonAllerton ParkPark, Illinois, USA. 13, Illinois, USA. 13--15 15 augustaugust, 2000., 2000.

3.3. TheThe SharedShared ResourceResource PatternPattern. . AnAn ActivityActivity ParallelismParallelism ArchitecturalArchitectural PatternPattern forfor ParallelParallelProgrammingProgramming. . Jorge L. OrtegaJorge L. Ortega--Arjona.Arjona.10th 10th PatternPattern LanguagesLanguages ofof ProgrammingProgramming 2003 2003 ((PLoP2003PLoP2003).).AllertonAllerton ParkPark, Illinois, USA. 8, Illinois, USA. 8--12 12 septemberseptember, 2003., 2003.

4.4. TheThe ManagerManager--WorkersWorkers PatternPattern. . AnAn ActivityActivity ParallelismParallelism ArchitecturalArchitectural PatternPattern forfor ParallelParallelProgrammingProgramming. . Jorge L. OrtegaJorge L. Ortega--Arjona. Arjona. 9th 9th EuropeanEuropean ConferenceConference onon PatternPattern LanguagesLanguages ofofProgrammingProgramming andand ComputingComputing 2004 (2004 (EuroPLoP2004EuroPLoP2004). ). KlosterKloster IrseeIrsee, , GermanyGermany. 7. 7--11 11 julyjuly, 2004., 2004.

5.5. TheThe Pipes Pipes andand FiltersFilters PatternPattern. A . A FunctionalFunctional ParallelismParallelism ArchitecturalArchitectural PatternPattern forfor ParallelParallelProgrammingProgramming. . Jorge L. OrtegaJorge L. Ortega--Arjona. Arjona. 10th 10th EuropeanEuropean ConferenceConference onon PatternPattern LanguagesLanguages ofofProgrammingProgramming andand ComputingComputing ((EuroPLoPEuroPLoP 2005). 2005). KlosterKloster IrseeIrsee, , GermanyGermany, 6, 6--10 10 julyjuly, 2005., 2005.

6.6. TheThe ParallelParallel LayersLayers PatternPattern. A . A FunctionalFunctional ParallelismParallelism ArchitecturalArchitectural PatternPattern forfor ParallelParallelProgrammingProgramming. . Jorge L. Ortega Arjona. Jorge L. Ortega Arjona. 6th 6th LatinLatin AmericanAmerican ConferenceConference onon PatternPattern LanguagesLanguages ofofProgrammingProgramming ((SugarLoafPLoPSugarLoafPLoP 2007). 2007). Porto de Porto de GalinhasGalinhas, Pernambuco, Brasil. 25, Pernambuco, Brasil. 25--31 May, 2007.31 May, 2007.

7.7. DesignDesign PatternsPatterns forfor CommunicationCommunication ComponentsComponents ofof ParallelParallel ProgramsPrograms. . Jorge L. Ortega Jorge L. Ortega Arjona.Arjona.12th 12th EuropeanEuropean ConferenceConference onon PatternPattern LanguagesLanguages ofof ProgramsPrograms ((EuroPLoPEuroPLoP 2007).2007).KlosterKloster IrseeIrsee, , GermanyGermany. 4. 4--8 8 julyjuly, 2007. , 2007.