using the common component architecture to design simulation codes
DESCRIPTION
Using The Common Component Architecture to Design Simulation Codes. J. Ray, S. Lefantzi and H. Najm Sandia National Labs, Livermore. What is CCA. Common Component Architecture A component model for HPC and scientific simulations Modularity, reuse of code Lightweight specification - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/1.jpg)
J. Ray, S. Lefantzi and H. Najm
Sandia National Labs, Livermore
Using The Common Component Architecture to Design Simulation Codes
![Page 2: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/2.jpg)
What is CCACommon Component Architecture A component model for HPC and scientific
simulations Modularity, reuse of code
Lightweight specification Few, if any, HPC functionalities are provided. Performance & flexibility, even at the expense of
features. Translation …
High single-CPU performance Does not impose a parallel programming model Does not provide any parallel programming
services either But allows one to do parallel computing
![Page 3: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/3.jpg)
The CCA modelComponent an “object” implementing a functionality
(physical/chemical model, numerical algo etc) Provides access via interfaces (abstract classes)
ProvidesPorts Uses other components’ functionality via pointers
to their interfaces UsesPorts
Framework Loads and instantiates components on a given
CPU Connects uses and provides ports Driven by a script or GUI No numerical/parallel computing etc support.
![Page 4: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/4.jpg)
Details of the architecture 4 CCA-compliant frameworks exist Ccaffeine (Sandia) & Uintah (Utah) used for
HPC routinely XCAT (Indiana) & decaff (LLNL) mostly in
distributed computing environments
CCAFFEINE Component writer deals with performance
issues Also deals with MPI calls amongst components Supports SPMD computing; no distributed
computing yet. Allows language interoperability.
![Page 5: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/5.jpg)
A CCA code
![Page 6: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/6.jpg)
Pictorial example
![Page 7: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/7.jpg)
Guidelines regarding apps
HydrodynamicsP.D.E
Spatial derivatives Finite differences, finite volumes
TimescalesLength scales
)(,...),,( 2 GFt
![Page 8: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/8.jpg)
Solution strategy
Timescales Explicit integration of slow ones Implicit integration of fast ones
Strang-splitting
},ˆ{,2/),(.3
}ˆ,~{,....),,,(.2
}~,{2/),(.1
)(....),,(
1
2
2
nnnt
nnt
nnnt
t
ttttG
tttF
tttG
GF
![Page 9: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/9.jpg)
Solution strategy (cont’d)
Wide spectrum of length scales Adaptive mesh refinement Structured axis-aligned patches GrACE.
Start with a uniform coarse mesh Identify regions needing refinement,
collate into rectangular patches Impose finer mesh in patches Recurse; mesh hierarchy.
![Page 10: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/10.jpg)
A mesh hierarchy
![Page 11: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/11.jpg)
App 1. A reaction-diffusion system.
A coarse approx. to a flame.
H2-Air mixture; ignition via 3 hot-
spots
9-species, 19 reactions, stiff chemistry
1cm X 1cm domain, 100x100 coarse mesh, finest mesh = 12.5 micron.
Timescales : O(10ns) to O(10 microseconds)
iii wY
Dt
DY .
![Page 12: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/12.jpg)
App. 1 - the code
![Page 13: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/13.jpg)
Evolution
![Page 14: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/14.jpg)
Details
H2O2 mass fraction
profiles.
![Page 15: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/15.jpg)
App. 2 shock-hydrodynamics
Shock hydrodynamics
Finite volume method (Godunov)
},,,,{)()( EvuUUGUFU yxt
![Page 16: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/16.jpg)
Interesting features
Shock & interface are sharp
discontinuities
Need refinement
Shock deposits vorticity – a governing
quantity for turbulence, mixing, …
Insufficient refinement – under predict
vorticity, slower mixing/turbulence.
![Page 17: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/17.jpg)
App 2. The code
![Page 18: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/18.jpg)
Evolution
![Page 19: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/19.jpg)
Convergence
![Page 20: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/20.jpg)
Are components slow ?
C++ compilers << Fortran compilersVirtual pointer lookup overhead when accessing a derived class via a pointer to base classY’ = F ; [ I - t/2 J ] Y = H(Yn) + G(Ym) ; used Cvode to solve this systemJ & G evaluation requires a call to a component (Chemistry mockup)t changed to make convergence harder – more J & G evaluationResults compared to plain C and cvode library
![Page 21: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/21.jpg)
Components versus library
tG
evaluations
Component time(sec)
Library time(sec)
0.1 66 1.18 1.23
1.0 150 2.34 2.38
100 405 6.27 6.14
1000 501 7.66 7.67
![Page 22: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/22.jpg)
Really so ?
Difference in calling overhead
Test : F77 versus
components 500 MHz
Pentium III Linux 2.4.18 Gcc 2.95.4-15
Function arg type f77
Component
Array 80 ns 224ns
Complex 75ns 209ns
Double complex 86ns 241ns
![Page 23: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/23.jpg)
Scalability
Shock-hydro codeNo refinement200 x 200 & 350 x 350 meshesCplant cluster 400 MHz EV5
Alphas 1 Gb/s Myrinet
Worst perf : 73 % scaling eff. For 200x200 on 48 procs
![Page 24: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/24.jpg)
Summary
Components, code
Very different physics/numerics by replacing physics components
Single cpu performance not harmed by componentization
Scalability – no effect
Flexible, parallel, etc. etc. …
Success story …? Not so fast …
![Page 25: Using The Common Component Architecture to Design Simulation Codes](https://reader035.vdocument.in/reader035/viewer/2022062301/568145ea550346895db2ee0a/html5/thumbnails/25.jpg)
Pros and cons
Cons : A set of components solve a PDE subject to a particular
numerical scheme Numerics decides the main subsystems of the component
assembly Variation on the main theme is easy Too large a change and you have to recreate a big
percentage of components
Pros : Physics components appear at the bottom of the hierarchy Changing physics models is easy. Note : Adding new physics, if requiring a brand-new numerical
algorithm is NOT trivial.