Upload
others
View
4
Download
0
Embed Size (px)
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