34
A Framework for Experimenting with A Framework for Experimenting with Structured Parallel Programming Structured Parallel Programming Environment Design Environment Design M. M. Aldinucci Aldinucci , S. , S. Campa Campa , P. , P. Ciullo Ciullo , M. Coppola, , M. Coppola, M. M. Danelutto Danelutto , P. , P. Pesciullesi Pesciullesi , R. , R. Ravazzolo Ravazzolo , , M. M. Torquati Torquati , M. , M. Vanneschi Vanneschi , C. , C. Zoccolo Zoccolo Computer Science Dept. – University of Pisa – Italy ISTI – National Research Council – Pisa - Italy ParCo 2003 – Sept 4th, Dresden

A Framework for Experimenting with Structured Parallel ...alpha.di.unito.it/storage/talks/2003_ASSIST_parco_talk.pdfM. Torquati, M. Vanneschi, C. Zoccolo Computer Science Dept. –

Embed Size (px)

Citation preview

A Framework for Experimenting with A Framework for Experimenting with Structured Parallel Programming Structured Parallel Programming

Environment DesignEnvironment Design

M. M. AldinucciAldinucci, S. , S. CampaCampa, P. , P. CiulloCiullo, M. Coppola, , M. Coppola, M. M. DaneluttoDanelutto, P. , P. PesciullesiPesciullesi, R. , R. RavazzoloRavazzolo, ,

M. M. TorquatiTorquati, M. , M. VanneschiVanneschi, C. , C. ZoccoloZoccoloComputer Science Dept. – University of Pisa – Italy

ISTI – National Research Council – Pisa - Italy

ParCo 2003 – Sept 4th, Dresden

Assist – ParCo 2003 – September 4th, Dresden 2

Outline

Motivations

ASSIST Coordination Language

ASSIST implementation (outline)

Experimenting with ASSIST extensions

Conclusions

Assist – ParCo 2003 – September 4th, Dresden 3

Previous Experiences

Several environment for structured parallel programming:P3L (1991), C-based, fixed skeleton set: pipe, map …SkIE (1997), C/C++/F77/JavaLithium (2001), Java-based, macro data-flow, pipe, farm, map, D&CMany variants of them

Lack of expressivenessLack of flexibility• Any modification led to extensive changes within compiler &

run-time support

Assist – ParCo 2003 – September 4th, Dresden 4

ASSIST: A Software development System based on Integrated Skeleton Technology Aiming at • Providing flexible structured parallel programming

environment• Achieving efficiency and portability • Targeting clusters (homogeneous and

eterogeneous)• Being usable to perform experiments in structured

parallel SW development systems design

Assist – ParCo 2003 – September 4th, Dresden 5

ASSIST Approach

Evolution of the Structured Parallel Programming Approach

Parallel Coordination Language• classical skeletons and• new composition forms• coordinate sequential code modules

w.r.t. previous work, enhanced support for• irregular and data-intensive applications• complex, variable interaction patterns

Assist – ParCo 2003 – September 4th, Dresden 6

Sequential modules

written in several host languages(C, C++, Fortran, Java)

Arbitrary Composition generic graphstream-orientedboth data-flow and nondeterministic with state

Not only fixed-pattern Parallel Skeletons ...classic task- and data-parallelism forms: pipeline, farm, loop

ASSIST Fundamentals (1)

Assist – ParCo 2003 – September 4th, Dresden 7

ASSIST Fundamentals (2)

Programmable Skeleton parallel moduleboth task and data parallelsupports (local/global) module statevariable comunication patternsnondeterminism, concurrency

Heterogeneous Resources external objectsexternally managed, standard protocolsexport/import SW components

Assist – ParCo 2003 – September 4th, Dresden 8

Modules, streams, non-determinism,inter/intra-parallelism, shared objects

DI1

Slide 8

DI1 programmer may structure parallel application as a generic graphs of modules.Modules are connected by means of data streams. Non-deterministic control is provided to accept inputs from different streams and explicit commands are provided to output items on the output streams. Parallelism both among modules and within modulesDipInf; 03/09/2003

ASSIST – the big picture

Assist – ParCo 2003 – September 4th, Dresden 10

Assistprogram

parco.ast

Design patterns based

Parsertypecheck

Modulebuilder

Codebuilder

Config.builder

façadefront-endfactory

configfactory

codefactory

modulefactory

XMLconf

XMLconf

C++,MakefileC++,Makefile

ASSISTcompiler

> astcc parco.ast

Assist – ParCo 2003 – September 4th, Dresden 11

CLAM

ASSIST Source Code

CLAM Executable

Configuration File

ASSISTcl Compiler

CLAM Machine

Target Architecture

Assist – ParCo 2003 – September 4th, Dresden 12

AssistLib: - SMU - comm. - thread

User code

CLAM Slave

AssistLib: - SMU - comm. - thread

User code

CLAM Slave

User code

Communication support

CLAM Master

CLAM Slave

CLAM Slave

DLL DLL

DLL XML config

XML Configuration and Loading

ast_run

A master CLAM is executedSeveral CLAM slaves are executedCLAMs maps “processes” to computing resource

Assist – ParCo 2003 – September 4th, Dresden 13

Performance Benchmarks

Data-Parallel Benchmark(Shortest Path)

2-D matrix 400x400partitioned row-wisevariable communication stencil

8 x Pentium 4, Gbit Eth

Data parallel speed-up

0,00

1,00

2,00

3,00

4,00

5,00

6,00

7,00

8,00

9,00

0 2 4 6 8 10

N. of Processors

Ideal Measured

Assist – ParCo 2003 – September 4th, Dresden 14

Performance Benchmarks

Parallel PartitionedApriori

Mainly stream-parallelComputation intensive, well balanceddataset > 160 Mbregular I/O pattern

8 x Pentium 4, Gbit Eth

Apriori speed-up

0,00

1,00

2,00

3,00

4,00

5,00

6,00

7,00

8,00

9,00

1 2 3 4 5 6 7 8

N. of Processors

Ideal Measured

Assist – ParCo 2003 – September 4th, Dresden 15

Structure of the ASSIST program

Integration with CORBA Code

compute(ParMod)compute(ParMod)

sequential code loop control

initialdata

simulation results

CORBA interface

Client side

Server side

Grafical interface

N-bodysimulationGUI CORBA serverparallel client

Assist – ParCo 2003 – September 4th, Dresden 16

Experimenting with extensions

1. Targeting heterogeneous COWs

2. Integrating parallel MPI libraries

3. Targeting the GRID (ongoing)

Targeting heterogeneous COWs

Assist – ParCo 2003 – September 4th, Dresden 18

XDR + dynamic loading

Initially targeted to homogenous COWsDifferent versions of comm code• raw and XDR communications• compiled for different architectures• as .dll & .so objects

Make decisions dynamically• CLAM + XML match the correct lib w.r.t.

communication ends• Use the fastest lib

Assist – ParCo 2003 – September 4th, Dresden 19

Choose the fastest methodCLAM

usercode.so

XDRcomm.sonative

comm.so

CLAM

usercode.dll

XDRcomm.sonative

comm.dll

XDR nativenative

XMLconf

XMLconf

Assist – ParCo 2003 – September 4th, Dresden 20

Assistprogram

parco.ast

Just enrich the code factory

Parsertypecheck

Modulebuilder Code

builder

Config.builder

façadefront-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

C++C++

XMLconf

XMLconf Makefile

OsXMakefile

OsX

MakefileWin

MakefileWin

Codebuilder2

Add parallel MPI libraries

Assist – ParCo 2003 – September 4th, Dresden 22

Add parallel MPI libraries

1. Define a new parmod flavor• Acting as MPI program container

2. Write a MPI wrapper program • exchanging in/out with parmod interfaces• calling the library

3. Modify mpirun to interact with CLAMget from CLAM mapping information

4. Extend “module factory”5. ScaLAPACK, PAMIHR [PC28(12):2002]

Assist – ParCo 2003 – September 4th, Dresden 23

Assistprogram

parco.ast

Just enrich the module factory

Parsertypecheck

Modulebuilder Code

builder

Config.builder

façadefront-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

C++C++

XMLconf

XMLconf

MPIbuilder

Assist – ParCo 2003 – September 4th, Dresden 24

MPI integration summary

VP

VP

VP

VP

VP

VP

VP

VP

VPMPI wrapper

0 VP

VP

VP

VP

VP

VP

VP

VP

VP3

1

2

n

03 …1

2n0

3…

12 n

parmod parmodparmod_MPI

Targeting the GRID

2001-now1999-20001994-19981989 - 1993

Homo GRIDensis

Homo Meta-

computensisHomo

ParallelusPVM Era

Homo Parallelus

MPI Era

Assist – ParCo 2003 – September 4th, Dresden 26

Assistprogram

parco.ast

Targeting the GRID

Parsertypecheck

Modulebuilder Code

builder

Config.builder

façadefront-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

C++C++

XMLconf

XMLconf

Assist – ParCo 2003 – September 4th, Dresden 27

XML conf

modules list (parallel activities)modules graphpathnames, lib-names, code-nameslib-modules bindings

machine namesmodules parallel degreesmodules-machines mapping

static

dynamic

Assist – ParCo 2003 – September 4th, Dresden 28

ASSISTconf

Assist – ParCo 2003 – September 4th, Dresden 29

ASSIST-G

XMLconf(static)

XMLconf(static) ASSISTconf

Parsertypecheck

Modulebuilder Code

builder

Config.builder

façadefront-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

Parsertypecheck

Modulebuilder Code

builder

Config.builder

façadefront-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

Parsertypecheck

Modulebuilder Code

builder

Config.builder

façadefront-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

Parsertypecheck

Modulebuilder Code

builder

Config.builder

façadefront-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

ASSIST compiler

resourcesrequirements

brokerbroker

CLAMCLAM

MDS

GRIS/GIIS

MDS

GRIS/GIISGRAM

DUROC

GRAM

DUROC

gather & reservation resourceslib staging

allocation

XMLconfstatic

dynamic

XMLconfstatic

dynamic

Assist – ParCo 2003 – September 4th, Dresden 30

Assistprogram

parco.ast

Just enrich the config factory

Parsertypecheck

Modulebuilder Code

builder

Config.builder

façadefront-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

C++C++

XMLconf

XMLconf

GRIDconf

Assist – ParCo 2003 – September 4th, Dresden 31

Summary

Tested over real-world applications• Data-mining (C4.5, apriori, …), computational chemistry &

numerical kernels, digital grading, MPEG encoders…

Support interoperability • May act as CORBA client/server, MPI, PVFS, several DSM

High-performance• Very good speedup in many cases

Easily extendable • Design pattern based• Robust

Assist – ParCo 2003 – September 4th, Dresden 32

Ongoing work

Full GRID support • First prototype based on globlus 2 [euromicro03]• Within Grid.it, CoreGRID, …

Enhanced support for highly-irregular apps & dynamic data structures [PPL(to appear)]

Standardization of components• Already based on component technology• Match high-performance with standards

Questions?Questions?Questions?