Ephemeral Project Motivation Active-Message Languages Ephemeral Unix/Linux C++ features Ephemeral...

22
Ephemeral Project • Motivation • Active-Message Languages • Ephemeral Unix/Linux C++ features Ephemeral coding • MPP implementation • Other ?
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    231
  • download

    1

Transcript of Ephemeral Project Motivation Active-Message Languages Ephemeral Unix/Linux C++ features Ephemeral...

Ephemeral Project

• Motivation• Active-Message

Languages• Ephemeral• Unix/Linux C++

features• Ephemeral coding• MPP implementation• Other

?

Motivation

• Massively parallel processing

• Small(tiny)-memory machines

• Minimal S/W support• Code loading and

distribution

P P

P P

P

Active-Message Languages

• A bit like message-passing/Object oriented Languages

• Actor Languages• Active Messages (Split-C, POOL )• Places and messages (Linda)• Usually script-based

Ephemeral

• Active messages• Code types• Places• Ports• Space-time

Unix/Linux C++ implementation features

• Compilation by translation to C++

• Unlimited places & place “creation”

• C++: classname var;• Ephemeral:

– placename var();

– placename var(time);

• Built-in places for I/O• Complex expressions• Unlimited messages

&c.

Ephemeral coding

• Simple test case …• Minor optimizations• Translate to flowchart• Not a parallel program• Illustrate coding

complexity• Test compiler

Simple test case

• // square x, y times• int f( int x, int y ) {

– Int t = x;

– For( int i = 0; i<y; i++)• t *=t;

– Return t;

• };

•int f( int x, int y ) {•Int t = x;

•int i = 0;

•Forloop:

•if(i<y) {•t *=t;

•i++

•Goto Forloop;

•};

•Return t;

•};

Simple test case

• // square x, y times• int f( int x, int y ) {

– Int t = x;

– For( int i = y; i>0; i--)• t *=t;

– Return t;

• };

•int f( int x, int y ) {•Int t = x;

•int i = y;

•Forloop:

•if(i>0) {•t *=t;

•i--;

•Goto Forloop;

•};

•Return t;

•};

Simple test case•int f( int x, int y ) {

•Int t = x;

•int i = y;

•Forloop:

•if(i>0) {•t *=t;

•i--;

•Goto Forloop;

•};

•Return t;

•};

Convert to flowchart

• int f( int x, int y ) {• Int t = x;

• int i = y;

• Forloop:

• if(i>0) {• t *=t;

• i--;

• Goto Forloop;

• };

• Return t;

• };

Ephemeral code: action prototypes

• action init(…) {…};• action test(…) {…};• action inc(…) {…};• action last(…) {…};

• i=y;t=x;• i>0?• t=t*t;i=i-1;• return t;

Ephemeral Code: Place prototypes and Codes

• place initPlace{…};• place testPlace{…};• place postPlace{…};• place output_catcher{

– message(int32 result );

• };• bit int32[32];

• code initCode{ init; };• code testCode{ test; };• code postCode{

– inc;

– last;

• };

initPlace and testPlace

• place initPlace{– go(

• initCode initformal,• int32 x,• int32 y,• output_catcher.message

catcher,• testCode testformal,• postCode incformal,• postCode lastformal

– );

• };

• place testPlace{– go(

• testCode testformal,• int32 i,• int32 t,• output_catcher.message

catcher,• postCode incformal,• postCode lastformal

– );

• };

postPlace

• place postPlace{– go(

• postCode formalcode1,• int32 i,• int32 t,• output_catcher.message

catcher,• testCode testformal,• postCode formalcode2

– );

• };

Ephemeral code: Actions

• action init(initPlace) {– testPlace next;

– next.go(• testformal,

• y,

• x,

• catcher,

• incformal,

• lastformal

– );

• };

• action test(testPlace) {– postPlace next;– next.go(

• (i>0)?incformal:lastformal,• i,• t,• catcher,• testformal,• (i>0)?lastformal:incformal,

– );

• };

Ephemeral code: Actions

• action inc(postPlace) {– testPlace next;

– next.go(• testformal,

• i,

• t,

• catcher,

• formalcode1,

• formalcode2

– );

• };

• action last(postPlace) {– catcher.message(

• t

– );

• };

Ephemeral code; main

• action main() {– initPlace start;– Start.go(

• init,• 3,• 4,• theCatcher,• test,• inc,• last

– );

• };

• Note “()”• Compiler provides

some default place for main() to execute

• Provides theCatcher• Provides actions

Unix/Linux C++ implementation

• Ready place queue• Waiting place

collection• function pointers

MPP implementation

• Instruction set design• simulator• Space-time• Compilation

considerations• locality

P P

P P

P

MPP implementation features

• True Compilation

• no place “creation”

• Place “allocation” in relative space-time

• C++: int * var = (int*)0x88446;

• Use “(*var)” in code.

• Ephemeral:– placename var( time_offset,

location_offset );

• I/O ?• limited expressions• limited messages per

place

MPP application

• Vibrating string simulation

• Use fixed finite elements

• Relatively simple coding.

• Ideal application• Application topology

exactly matches pipeline topology