MPP PROPERTY MANAGEMENT & DEVELOPMENT. MPP PROPERTY MANAGEMENT & DEVELOPMENT.
Ephemeral Project Motivation Active-Message Languages Ephemeral Unix/Linux C++ features Ephemeral...
-
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
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
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