User Interfaces Development in openDIEL · Timer – Background Group 1 x 5 Group 2x 3 Group 3x 2...

Preview:

Citation preview

UserInterfacesDevelopmentinopenDIEL

ArgensNg(HKU),TannerCurren (MaryvilleCollege)Mentor:Kwai Wong(UTK)

OpenDIEL – Introduction

• OpenDistributiveInteroperableExecutableLibrary• UsesMPI(MessagePassingInterface)• Cooperationbetweenlooselycoupledmodules• Outputssingleexecutable• Crucialincombiningmultiplesimulationscenario!!

OpenDIEL – Manual

• Userhastoprovide:• Modules (Executable,Cmodule,FortranModule,Executable)• ConfigurationFile (LibConfig)• Driver (C- File)

OpenDIEL – Enhancements

• ModMaker• Timer• I/OImprovements• FortranSupport

ModMaker – Introduction

• Transformatsourcecodelevel• Nolongercompilesintostandaloneexecutable• Compilesintoalibrary

ModMaker – Workflow

ModMaker – Workflow#include"mpi.h”#include"stdio.h”#include"test.h”int main(int argc,char**argv){

int rank;int size;int rc;

rc |=MPI_Init (&argc,&argv);MPI_Comm_rank (MPI_COMM_WORLD,&rank);MPI_Comm_size (MPI_COMM_WORLD,&size);printf ("Iamprocess%doutofall%dprocesses\n",rank,size);MPI_Barrier (MPI_COMM_WORLD);MPI_Finalize();

return0;}

1

ModMaker – Workflow

int main(int argc,char**argv){

int rank;int size;int rc;

rc |=MPI_Init (&argc,&argv);MPI_Comm_rank (MPI_COMM_WORLD,&rank);MPI_Comm_size (MPI_COMM_WORLD,&size);printf ("Iamprocess%doutofall%dprocesses\n",rank,size);MPI_Barrier (MPI_COMM_WORLD);MPI_Finalize();

return0;}

IdentifyingFeature 2

ModMaker – Workflow

3

ModMaker – UserParticipation

ModMaker – UserParticipation

ModMaker – UserParticipation

ModMaker – UserParticipation

ModMaker – PatternMatching

• Twooptionswereconsidered• Matchingbycharacter• Matchingbystring

• Matchingbystringisused• Simplicity• Similarperformance

n=stringsize,s=documentsize(measuredincharacter)

ModMaker – SyntacticFreedom

• Locating• Spaces• VariableDeclaration

ModMaker – Modularization

• FunctionTitle• Statement• Variable

• BaseCheck (line,tokenList,prevSep,nextSep,msgBundle,replacement,returnValue)

ModMaker – Testing

• Tester.c• Dummy“IEL.h”

Timer– Background

Group1x5

Group2 x3 Group3 x2

Group4 x2Group5 x1

GroupLast x1} x3

Timer– Results

Process11

Timer– Background

Group1x5

Group2 x3 Group3 x2

Group4 x2Group5 x1

GroupLast x1} x3

Timer– Modularity

• voidtimestamp(char*tag,char*function,int level_change)• voidtimer_finalize (int rank)

Timer– Modularity

• Driver.c• Group_1

• Function_1• Function_2

[Begin] Driver.c[Begin] Group_1

[Begin] Function_1[End] Function_1[Begin] Function_2[End] Function_2

[End] Group_1[End] Driver.c

Level1 Level2 Level3

Level1

Level2

Level3

Timer– Example

• -ve means:possibleoverhead• +ve means:processruntime

FutureWork

• MultipleI/O• ModMaker – FortranSupport

Reference

• openDIEL• http://cfdlab.utk.edu/openDIEL/opendiel.php

• StackOverflow• http://stackoverflow.com

Acknowledgement

ThisprojectismadepossibleonlywiththesupportofourmentorDr.K.Wong,theNSF,theUniversityofTennesseeandOakRidgeNationalLaboratory

Recommended