CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.

Slides:



Advertisements
Similar presentations
A Workflow Engine with Multi-Level Parallelism Supports Qifeng Huang and Yan Huang School of Computer Science Cardiff University
Advertisements

Construction process lasts until coding and testing is completed consists of design and implementation reasons for this phase –analysis model is not sufficiently.
Chapter 10: Designing Databases
A component- and message-based architectural style for GUI software
AT LOUISIANA STATE UNIVERSITY High Performance Computing: Concepts, Methods & Means Scientific Components and Frameworks Prof. Daniel S. Katz Department.
CCA Common Component Architecture CCA Forum Tutorial Working Group 1 Welcome to the Common.
Technical Architectures
Allen D. Malony Department of Computer and Information Science University of Oregon Performance Technology for Scientific (Parallel.
Communication in Distributed Systems –Part 2
© Copyright Eliyahu Brutman Programming Techniques Course.
Object-Oriented Analysis and Design
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 2: Operating-System Structures Modified from the text book.
Course Instructor: Aisha Azeem
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Center for Component Technology for Terascale Simulation Software (aka Common Component Architecture) (aka CCA) Rob Armstrong & the CCA Working Group Sandia.
Chapter 13 Starting Design: Logical Architecture and UML Package Diagrams.
Programming Languages and Paradigms Object-Oriented Programming.
Center for Component Technology for Terascale Simulation Software 122 June 2002Workshop on Performance Optimization via High Level Languages and Libraries.
CCA Common Component Architecture CCA Forum Tutorial Working Group This work is licensed.
Optimized Java computing as an application for Desktop Grid Olejnik Richard 1, Bernard Toursel 1, Marek Tudruj 2, Eryk Laskowski 2 1 Université des Sciences.
A Hybrid Decomposition Scheme for Building Scientific Workflows Wei Lu Indiana University.
An Introduction to Software Architecture
Service-enabling Legacy Applications for the GENIE Project Sofia Panagiotidi, Jeremy Cohen, John Darlington, Marko Krznarić and Eleftheria Katsiri.
CCA Common Component Architecture CCA Forum Tutorial Working Group This work is licensed.
CCA Common Component Architecture CCA Forum Tutorial Working Group Components for Scientific.
Requirements To Design--Iteratively Chapter 12 Applying UML and Patterns Craig Larman.
CCA Common Component Architecture CCA Forum Tutorial Working Group 1 Welcome to the Common.
CCA Common Component Architecture CCA Forum Tutorial Working Group Contributors: Language Interoperability Using Gary.
SIAM Computational Science and Engineering1 10 February Components for Scientific Computing: An Introduction David E. Bernholdt Computer Science.
CCA Common Component Architecture CCA Forum Tutorial Working Group Introduction to Components.
CCA Common Component Architecture CCA Forum Tutorial Working Group Introduction to the Ccaffeine.
CCA Common Component Architecture CCA Forum Tutorial Working Group This work is licensed.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
CCA Common Component Architecture CCA Forum Tutorial Working Group Introduction to the Ccaffeine.
SE: CHAPTER 7 Writing The Program
Grid Computing Research Lab SUNY Binghamton 1 XCAT-C++: A High Performance Distributed CCA Framework Madhu Govindaraju.
Components for Beam Dynamics Douglas R. Dechow, Tech-X Lois Curfman McInnes, ANL Boyana Norris, ANL With thanks to the Common Component Architecture (CCA)
SAP Participants: Douglas Dechow, Tech-X Corporation Lois Curfman McInnes, Boyana Norris, ANL Physics Collaborators: James Amundson, Panagiotis Spentzouris,
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Center for Component Technology for Terascale Simulation Software CCA is about: Enhancing Programmer Productivity without sacrificing performance. Supporting.
SCIRun and SPA integration status Steven G. Parker Ayla Khan Oscar Barney.
CCA Common Component Architecture CCA Forum Tutorial Working Group This work is licensed.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Presented by An Overview of the Common Component Architecture (CCA) The CCA Forum and the Center for Technology for Advanced Scientific Component Software.
07/09/04 Johan Muskens ( TU/e Computer Science, System Architecture and Networking.
Processes Introduction to Operating Systems: Module 3.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
Enabling Self-management of Component-based High-performance Scientific Applications Hua (Maria) Liu and Manish Parashar The Applied Software Systems Laboratory.
CCA Common Component Architecture CCA Forum Tutorial Working Group CCA Status and Plans.
BioPSE NCRR SCIRun2 -THE PROJECT -OBJECTIVES -DEVELOPMENTS -TODAY -THE FUTURE.
J. Ray, S. Lefantzi and H. Najm Sandia National Labs, Livermore Using The Common Component Architecture to Design Simulation Codes.
CCA Common Component Architecture CCA Forum Tutorial Working Group An Overview of Components.
CCA Common Component Architecture CCA Forum Tutorial Working Group This work is licensed.
117 December 2001Pacific Northwest National Laboratory Component-Based Software for High-Performance Computing: An Introduction to the Common Component.
1 Craig Rasmussen Advanced Computing Laboratory Los Alamos National Laboratory Introduction to Object- and Component-Oriented Programming.
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
CCA Common Component Architecture CCA Forum Tutorial Working Group Writing Components.
Copyright © 2004, Keith D Swenson, All Rights Reserved. OASIS Asynchronous Service Access Protocol (ASAP) Tutorial Overview, OASIS ASAP TC May 4, 2004.
CCA Common Component Architecture CCA Forum Tutorial Working Group A Simple CCA Component Application.
CCA Common Component Architecture CCA Forum Tutorial Working Group Contributors: Introduction to the Ccaffeine Framework.
CCA Common Component Architecture CCA Forum Tutorial Working Group Writing Components.
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
CCA Common Component Architecture CCA Forum Tutorial Working Group Writing Components.
CCA Common Component Architecture CCA Forum Tutorial Working Group A Simple CCA Component.
CCA Common Component Architecture CCA Forum Tutorial Working Group Introduction to the Ccaffeine.
CCA Common Component Architecture CCA Forum Tutorial Working Group 1 Welcome to the Common.
Distribution and components
Starting Design: Logical Architecture and UML Package Diagrams
Presentation transcript:

CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture Concepts

2 CCA Common Component Architecture CCA Concepts Goals Introduce essential features of the Common Component Architecture Provide common vocabulary for remainder of tutorial What distinguishes CCA from other component environments?

3 CCA Common Component Architecture CCA Concepts Features of the Common Component Architecture A component model specifically designed for high- performance computing –Support HPC languages (Babel) –Support parallel as well as distributed execution models –Minimize performance overhead Minimalist approach makes it easier to componentize existing software Component interactions are not merely dataflow Components are peers –No particular component assumes it is “in charge” of the others. –Allows the application developer to decide what is important.

4 CCA Common Component Architecture CCA Concepts CCA Concepts: Ports Components interact through well-defined interfaces, or ports –In OO languages, a port is a class or interface –In Fortran, a port is a bunch of subroutines or a module Components may provide ports – implement the class or subroutines of the port Components may use ports – call methods or subroutines in the port Links denote a caller/callee relationship, not dataflow! –e.g., FunctionPort could contain: evaluate(in Arg, out Result) NonlinearFunction FunctionPort MidpointIntegrator IntegratorPort

5 CCA Common Component Architecture CCA Concepts Ports in the Integrator Example FunctionPort MidpointIntegrator IntegratorPort FunctionPort MonteCarloIntegrator IntegratorPort RandomGeneratorPort IntegratorPort Driver GoPort NonlinearFunction FunctionPort LinearFunction FunctionPort RandomGenerator RandomGeneratorPort PiFunction FunctionPort Dashed lines indicate alternate connections Create different applications in "plug-and-play" fashion

6 CCA Common Component Architecture CCA Concepts Ports, Interoperability, and Reuse Ports (interfaces) define how components interact Generality, quality, robustness of ports is up to designer/architect –“Any old” interface is easy to create, but… –Developing a robust domain “standard” interface requires thought, effort, and cooperation General “plug-and-play” interoperability of components requires multiple implementations conforming to the same interface Designing for interoperability and reuse requires “standard” interfaces –Typically domain-specific –“Standard” need not imply a formal process, may mean “widely used”

7 CCA Common Component Architecture CCA Concepts CCA Concepts: Frameworks The framework provides the means to “hold” components and compose them into applications –The framework is the application’s “ main ” or “ program ” Frameworks allow exchange of ports among components without exposing implementation details Frameworks provide a small set of standard services to components –BuilderServices allow programs to compose CCA apps Frameworks may make themselves appear as components in order to connect to components in other frameworks Currently: specific frameworks support specific computing models (parallel, distributed, etc.). Future: full flexibility through integration or interoperation

8 CCA Common Component Architecture CCA Concepts User Interaction w/ Framework Launch framework (text or GUI interface) Instantiate components required for app. Connect appropriate provided and used ports Start application (i.e. click Go port) createDriverDriver create LinearFunctionLinearFunction createMonteCarloIntegratorMonteCarloIntegrator … connectDriverIntegratorPortMonteCarloIntegratorIntegratorPort connectMonteCarloIntegratorFunctionPortLinearFunctionFunctionPort …

9 CCA Common Component Architecture CCA Concepts When component is instantiated… –Framework calls component’s setServices –setServices registers ports to be used or provided When user connects a uses port to a provides port… –CCA Services object in uses component "becomes aware” of provider's implementation When component wants to use a port… –Get a pointer to the port with getPort (once) –Call methods on the port (many times) Interactions Between Components and Frameworks Look at actual code in next tutorial module

10 CCA Common Component Architecture CCA Concepts What Makes a CCA Component? All CCA-compliant components must implement a setServices() method Framework invokes setServices when component is instantiated Provides component with CCA Services object – the external world (as the framework knows it) Framework MidpointIntegrator CCA Services MI void MidpointIntegrator:: setServices(gov::cca:: Services *fwkSvcs){…}  User instantiates MidpointIntegrator  Framework calls MI’s setServices method with a CCA Services object – the component’s window on the external world

11 CCA Common Component Architecture CCA Concepts MI Provides an IntegratorPort… Framework  Within setServices, component declares ports it provides and uses  addProvidesPort declares that we will implement the port. Places port in CCA Services, making it visible to the framework  Other components cannot yet see MI or use the IntegratorPort it provides! MidpointIntegrator CCA Services MI gov::cca::PortInfo * pInfo; pInfo = fwkSvcs->createPortInfo( “IntegratorPort”, “integrators.ccaports.Integrator”); err = fwkSvcs->addProvidesPort( this, pInfo); IntegratorPort

12 CCA Common Component Architecture CCA Concepts …and Uses a FunctionPort Framework  registerUsesPort tells framework we want to be connected to a component providing a FunctionPort  setServices completes and control returns to framework to instantiate other components  FunctionPort is not yet connected to anything! MidpointIntegrator CCA Services MI pInfo = fwkSvcs->createPortInfo( “FunctionPort”, “fns.ccaports.Function”); err = fwkSvcs->registerUsesPort( this, pInfo); IntegratorPort FunctionPort

13 CCA Common Component Architecture CCA Concepts NF Provides a FunctionPort Framework  User instantiates NonlinearFunction  Framework calls NF’s setServices  addProvidesPort informs the framework that we implement a FunctionPort  setServices completes, control returns to framework  MI cannot yet see NonlinearFunction or the FunctionPort it provides NonlinearFunction CCA Services NF gov::cca::PortInfo * pInfo; pInfo = fwkSvcs->createPortInfo( “FunctionPort”, “fns.ccaports.Function”); err = fwkSvcs->addProvidesPort( this, pInfo); FunctionPort

14 CCA Common Component Architecture CCA Concepts When component is instantiated… –Framework calls component’s setServices –setServices registers ports to be used or provided When user connects a uses port to a provides port… –CCA Services object in uses component "becomes aware” of provider's implementation When component wants to use a port… –Get a pointer to the port with getPort (once) –Call methods on the port (many times) Interactions Between Components and Frameworks

15 CCA Common Component Architecture CCA Concepts Framework NonlinearFunction CCA Services NF MidpointIntegrator CCA Services MI User Tells Framework to Connect Ports connectMidpointIntegratorFunctionPort \ NonlinearFunctionFunctionPort IntegratorPort FunctionPort

16 CCA Common Component Architecture CCA Concepts Interactions Between Components and Frameworks When component is instantiated… –Framework calls component’s setServices –setServices registers ports to be used or provided When user connects a uses port to a provides port… –CCA Services object in uses component "becomes aware” of provider's implementation When component wants to use a port… –Get a pointer to the port with getPort (once) –Call methods on the port (many times)

17 CCA Common Component Architecture CCA Concepts Framework NonlinearFunction CCA Services NF MidpointIntegrator CCA Services MI MI Gets Port from its CCA Services IntegratorPort FunctionPort gov::cca::Port * port; port = fwkSvcs->getPort( “FunctionPort"); fns::ccaports::Function * function_m; function_m =dynamic_cast (port); FunctionPort

18 CCA Common Component Architecture CCA Concepts Framework NonlinearFunction CCA Services NF MidpointIntegrator CCA Services MI MI Gets Port from its CCA Services IntegratorPort FunctionPort sum = sum + function_m->evaluate(x); double NonlinearFunction:: evaluate(double x) {…}

19 CCA Common Component Architecture CCA Concepts Importance of Provides/Uses Pattern for Ports Fences between components –Components must declare both what they provide and what they use –Components cannot interact until ports are connected –No mechanism to call anything not part of a port Ports preserve high performance direct connection semantics… …While also allowing distributed computing Component 1Component 2 Provides/Uses Port Direct Connection Component 1 Component 2 Uses Port Provides Port Network Connection

20 CCA Common Component Architecture CCA Concepts CCA Concepts: Direct Connection Components loaded into separate namespaces in the same address space (process) from shared libraries getPort call returns a pointer to the port’s function table Calls between components equivalent to a C++ virtual function call: lookup function location, invoke Cost equivalent of ~2.8 F77 or C function calls All this happens “automatically” – user just sees high performance Description reflects Ccaffeine implementation, but similar or identical mechanisms in other direct connect fwks

21 CCA Common Component Architecture CCA Concepts CCA Concepts: Parallel Components Single component multiple data (SCMD) model is component analog of widely used SPMD model Each process loaded with the same set of components wired the same way Different components in same process “talk to each” other via ports and the framework Same component in different processes talk to each other through their favorite communications layer (i.e. MPI, PVM, GA) Also supports MPMD/MCMD P0P1P2P3 Components: Red, Green, Blue Framework: Gray Framework stays “out of the way” of component parallelism

22 CCA Common Component Architecture CCA Concepts CCA Concepts: MxN Parallel Data Redistribution Share Data Among Coupled Parallel Models – Disparate Parallel Topologies (M processes vs. N) – e.g. Ocean & Atmosphere, Solver & Optimizer… – e.g. Visualization (Mx1, increasingly, MxN) Research area -- tools under development

23 CCA Common Component Architecture CCA Concepts CCA Concepts: Language Interoperability Existing language interoperability approaches are “point- to-point” solutions Babel provides a unified approach in which all languages are considered peers Babel used primarily at interfaces C C++ f77 f90 Python Java Babel C C++ f77 f90 Python Java Babel tutorial coming up!

24 CCA Common Component Architecture CCA Concepts Concept Review Ports –Interfaces between components –Uses/provides model Framework –Allows assembly of components into applications Direct Connection –Maintain performance of local inter-component calls Parallelism –Framework stays out of the way of parallel components MxN Parallel Data Redistribution –Model coupling, visualization, etc. Language Interoperability –Babel, Scientific Interface Definition Language (SIDL)