a framework for experimenting with structured parallel programming environment design

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

Upload: arav

Post on 07-Jan-2016

27 views

Category:

Documents


0 download

DESCRIPTION

A Framework for Experimenting with Structured Parallel Programming Environment Design. M. Aldinucci , S. Campa, P. Ciullo, M. Coppola, M. Danelutto, P. Pesciullesi, R. Ravazzolo, M. Torquati, M. Vanneschi, C. Zoccolo Computer Science Dept. – University of Pisa – Italy - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: A Framework for Experimenting with Structured Parallel Programming Environment Design

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

Environment DesignEnvironment Design

M. AldinucciM. Aldinucci, S. Campa, P. Ciullo, M. Coppola, , S. Campa, P. Ciullo, M. Coppola, M. Danelutto, P. Pesciullesi, R. Ravazzolo, M. Danelutto, P. Pesciullesi, R. Ravazzolo,

M. Torquati, M. Vanneschi, C. ZoccoloM. Torquati, M. Vanneschi, C. Zoccolo

Computer Science Dept. – University of Pisa – Italy

ISTI – National Research Council – Pisa - Italy

ParCo 2003 – Sept 4th, Dresden

Page 2: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 2

Outline

Motivations

ASSIST Coordination Language

ASSIST implementation (outline)

Experimenting with ASSIST extensions

Conclusions

Page 3: A Framework for Experimenting with Structured Parallel Programming Environment Design

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/Java Lithium (2001), Java-based, macro data-flow, pipe,

farm, map, D&C Many variants of them

Lack of expressiveness Lack of flexibility

• Any modification led to extensive changes within compiler & run-time support

Page 4: A Framework for Experimenting with Structured Parallel Programming Environment Design

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

Page 5: A Framework for Experimenting with Structured Parallel Programming Environment 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

Page 6: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 6

Sequential modules written in several

host languages(C, C++, Fortran, Java)

Arbitrary Composition generic graph stream-oriented both data-flow and nondeterministic with state

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

farm, loop

ASSIST Fundamentals (1)

Page 7: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 7

ASSIST Fundamentals (2)

Programmable Skeleton parallel module both task and data parallel supports (local/global) module state variable comunication patterns nondeterminism, concurrency

Heterogeneous Resources external objects externally managed, standard protocols export/import SW components

Page 8: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 8

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

DipInf
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 modules
Page 9: A Framework for Experimenting with Structured Parallel Programming Environment Design

ASSIST – the big picture

Page 10: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 10

Assistprogram

parco.ast

Design patterns based

Parsertypecheck

Modulebuilder

Codebuilder

Config.builder

façade

front-endfactory

configfactory

codefactory

modulefactory

XMLconf

XMLconf

C++,Makefile

C++,Makefile

ASSISTcompiler

> astcc parco.ast

Page 11: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 11

CLAM

ASSIST Source Code

CLAM Executable

Configuration File

ASSISTcl Compiler

CLAM Machine

Target Architecture

Page 12: A Framework for Experimenting with Structured Parallel Programming Environment Design

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 executed Several CLAM slaves are executed CLAMs maps “processes” to computing resource

Page 13: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 13

Performance Benchmarks

Data-Parallel Benchmark

(Shortest Path) 2-D matrix 400x400 partitioned row-wise variable

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

Page 14: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 14

Performance Benchmarks

Parallel Partitioned Apriori

Mainly stream-parallel Computation intensive,

well balanced dataset > 160 Mb regular 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

Page 15: A Framework for Experimenting with Structured Parallel Programming Environment Design

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-body simulation

GUI CORBA server

parallel client

Page 16: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 16

Experimenting with extensions

1. Targeting heterogeneous COWs

2. Integrating parallel MPI libraries

3. Targeting the GRID (ongoing)

Page 17: A Framework for Experimenting with Structured Parallel Programming Environment Design

Targeting heterogeneous COWs

Page 18: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 18

XDR + dynamic loading

Initially targeted to homogenous COWs Different 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

Page 19: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 19

Choose the fastest methodCLAM

usercode.so

XDRcomm.so

nativecomm.so

CLAM

usercode.dll

XDRcomm.so

nativecomm.dll

XDR nativenative

XMLconf

XMLconf

Page 20: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 20

Assistprogram

parco.ast

Just enrich the code factory

Parsertypecheck

Modulebuilder

Codebuilder

Config.builder

façade

front-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

C++C++

XMLconf

XMLconf Makefile

OsX

MakefileOsX

MakefileWin

MakefileWin

Codebuilder2

Page 21: A Framework for Experimenting with Structured Parallel Programming Environment Design

Add parallel MPI libraries

Page 22: A Framework for Experimenting with Structured Parallel Programming Environment Design

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 CLAM get from CLAM mapping information

4. Extend “module factory”

5. ScaLAPACK, PAMIHR [PC28(12):2002]

Page 23: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 23

Assistprogram

parco.ast

Just enrich the module factory

Parsertypecheck

Modulebuilder

Codebuilder

Config.builder

façade

front-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

C++C++

XMLconf

XMLconf

MPIbuilder

Page 24: A Framework for Experimenting with Structured Parallel Programming Environment Design

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

…12n

03

…1

2n

parmod parmodparmod_MPI

Page 25: A Framework for Experimenting with Structured Parallel Programming Environment Design

Targeting the GRID

2001-now1999-20001994-19981989 - 1993

Homo GRIDensis

Homo Meta-

computensisHomo

ParallelusPVM Era

Homo ParallelusMPI Era

Page 26: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 26

Assistprogram

parco.ast

Targeting the GRID

Parsertypecheck

Modulebuilder

Codebuilder

Config.builder

façade

front-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

C++C++

XMLconf

XMLconf

Page 27: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 27

XML conf

modules list (parallel activities) modules graph pathnames, lib-names, code-names lib-modules bindings

machine names modules parallel degrees modules-machines mapping

static

dynamic

Page 28: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 28

ASSISTconf

Page 29: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 29

ASSIST-G

XMLconf(static)

XMLconf(static) ASSISTconf

Parsertypecheck

Modulebuilder

Codebuilder

Config.builder

façade

front-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

Parsertypecheck

Modulebuilder

Codebuilder

Config.builder

façade

front-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

Parsertypecheck

Modulebuilder

Codebuilder

Config.builder

façade

front-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

Parsertypecheck

Modulebuilder

Codebuilder

Config.builder

façade

front-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

Page 30: A Framework for Experimenting with Structured Parallel Programming Environment Design

Assist – ParCo 2003 – September 4th, Dresden 30

Assistprogram

parco.ast

Just enrich the config factory

Parsertypecheck

Modulebuilder

Codebuilder

Config.builder

façade

front-endfactory

configfactory

codefactory

modulefactory

ASSISTcompiler

C++C++

XMLconf

XMLconf

GRIDconf

Page 31: A Framework for Experimenting with Structured Parallel Programming Environment Design

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

Page 32: A Framework for Experimenting with Structured Parallel Programming Environment Design

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

Page 33: A Framework for Experimenting with Structured Parallel Programming Environment Design

QuestioQuestions?ns?

QuestioQuestions?ns?