Allen D. Malony Department of Computer and Information Science University of Oregon Performance Technology for Scientific (Parallel.

Slides:



Advertisements
Similar presentations
Sameer Shende Department of Computer and Information Science NeuroInformatics Center University of Oregon Generating Proxy Components.
Advertisements

Automated Analysis and Code Generation for Domain-Specific Models George Edwards Center for Systems and Software Engineering University of Southern California.
Robert Bell, Allen D. Malony, Sameer Shende Department of Computer and Information Science Computational Science.
CCA Common Component Architecture Performance Technology for Component Software - TAU Allen D. Malony (U. Oregon) Sameer Shende (U. Oregon) Craig Rasmussen.
Allen D. Malony, Sameer Shende Department of Computer and Information Science Computational Science Institute University.
Allen D. Malony, Sameer Shende Department of Computer and Information Science Computational Science Institute University.
Nick Trebon, Alan Morris, Jaideep Ray, Sameer Shende, Allen Malony {ntrebon, amorris, Department of.
On the Integration and Use of OpenMP Performance Tools in the SPEC OMP2001 Benchmarks Bernd Mohr 1, Allen D. Malony 2, Rudi Eigenmann 3 1 Forschungszentrum.
1 Dr. Frederica Darema Senior Science and Technology Advisor NSF Future Parallel Computing Systems – what to remember from the past RAMP Workshop FCRC.
Allen D. Malony, Sameer Shende Department of Computer and Information Science Computational Science Institute University.
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 2 – Components.
Allen D. Malony, Sameer Shende Department of Computer and Information Science Computational Science Institute University.
Page 1 Building Reliable Component-based Systems Chapter 4 - Component Models and Technology Chapter 4 Component Models and Technology.
1 FM Overview of Adaptation. 2 FM RAPIDware: Component-Based Design of Adaptive and Dependable Middleware Project Investigators: Philip McKinley, Kurt.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Center for Component Technology for Terascale Simulation Software (aka Common Component Architecture) (aka CCA) Rob Armstrong & the CCA Working Group Sandia.
Loads Balanced with CQoS Nicole Lemaster, Damian Rouson, Jaideep Ray Sandia National Laboratories Sponsor: DOE CCA Meeting – January 22, 2009.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Center for Component Technology for Terascale Simulation Software 122 June 2002Workshop on Performance Optimization via High Level Languages and Libraries.
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
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
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 Components for Scientific.
JavaBeans Components. To understand JavaBeans…  Proficient experience with the Java language required  Knowledge of classes and interfaces  Object-Oriented.
CCA Common Component Architecture CCA Forum Tutorial Working Group Welcome to the Common.
Composing Adaptive Software Authors Philip K. McKinley, Seyed Masoud Sadjadi, Eric P. Kasten, Betty H.C. Cheng Presented by Ana Rodriguez June 21, 2006.
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 Welcome to the Common.
CCA Common Component Architecture CCA Forum Tutorial Working Group Introduction to Components.
Model-Driven Analysis Frameworks for Embedded Systems George Edwards USC Center for Systems and Software Engineering
11 CORE Architecture Mauro Bruno, Monica Scannapieco, Carlo Vaccari, Giulia Vaste Antonino Virgillito, Diego Zardetto (Istat)
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)
© 2012 xtUML.org Bill Chown – Mentor Graphics Model Driven Engineering.
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.
Modeling Component-based Software Systems with UML 2.0 George T. Edwards Jaiganesh Balasubramanian Arvind S. Krishna Vanderbilt University Nashville, TN.
Presented by An Overview of the Common Component Architecture (CCA) The CCA Forum and the Center for Technology for Advanced Scientific Component Software.
NA-MIC National Alliance for Medical Image Computing UCSD: Engineering Core 2 Portal and Grid Infrastructure.
ICCS WSES BOF Discussion. Possible Topics Scientific workflows and Grid infrastructure Utilization of computing resources in scientific workflows; Virtual.
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.
Distributed Components for Integrating Large- Scale High Performance Computing Applications Nanbor Wang, Roopa Pundaleeka and Johan Carlsson
CCA Common Component Architecture CCA Forum Tutorial Working Group An Overview of Components.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
1 ProActive GCM – CCA Interoperability Maciej Malawski, Ludovic Henrio, Matthieu Morel, Francoise Baude, Denis Caromel, Marian Bubak Institute of Computer.
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
CCA Common Component Architecture CCA Forum Tutorial Working Group A Simple CCA Component Application.
Center for Component Technology for Terascale Simulation Software (CCTTSS) 110 April 2002CCA Forum, Townsend, TN CCA Status, Code Walkthroughs, and Demonstrations.
Toward a Distributed and Parallel High Performance Computing Environment Johan Carlsson and Nanbor Wang Tech-X Corporation Boulder,
CCA Common Component Architecture CCA Forum Tutorial Working Group Writing Components.
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
Center for Component Technology for Terascale Simulation Software (CCTTSS) 110 April 2002CCA Forum, Townsend, TN This work has been sponsored by the Mathematics,
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
CCA Common Component Architecture CCA Forum Tutorial Working Group A Simple CCA Component.
Wrap up. Structures and views Quality attribute scenarios Achieving quality attributes via tactics Architectural pattern and styles.
Kai Li, Allen D. Malony, Sameer Shende, Robert Bell
Distribution and components
Model-Driven Analysis Frameworks for Embedded Systems
Tools for Composing and Deploying Grid Middleware Web Services
Performance Technology for Parallel Component Software
An Introduction to Software Architecture
Allen D. Malony, Sameer Shende
Generating Proxy Components using PDT
Common Component Architecture (CCA)
Presentation transcript:

Allen D. Malony Department of Computer and Information Science University of Oregon Performance Technology for Scientific (Parallel and Distributed) Component Software

Grid Performance Workshop 2 December 9, 2002 Outline  Motivation  Component software for scientific computing  Performance engineering methodology for components  Performance technology for component software  Performance interface  Measurement, monitoring, and modeling components  TAU implementation  Examples  Relevance to Grid computing environments  Discussion

Grid Performance Workshop 3 December 9, 2002 Motivation  History of HPC reflects evolving complexity of parallel and distributed systems used for scientific computing  Application development environments leverage power of software abstraction in scientific problem solving  Natural tension between achieving high performance and software engineering for scientific computing  Common dogma: further software is away from the raw machine, the harder it is to achieve good performance  Strategies include layered infrastructure with rich middleware support implemented for high-performance  Compromise is to further distance application developer from broader range performance sources and problems

Grid Performance Workshop 4 December 9, 2002 Apparent Dilema As complexity of scientific software environments and computing systems mutually advances, how then should we address the apparent dilemma where use of powerful software development technology for creating sophisticated scientific computing environments with high performance requirements may result in software systems whose performance behavior we cannot adequately measure, understand, or improve?  Advances in technology for performance engineering  Performance technology integrated in software system, consistent with software architectures and technologies

Grid Performance Workshop 5 December 9, 2002 Scientific Component Software  Emerging use for scientific high-performance computing  Targets spectrum of HPC systems and applications  Realistic programming and computing model for the Grid  Pose challenges for performance engineering  Software and system diversity  Flexibility in construction and connection  Language interoperability  Platform interoperability  Architecture vs. implementation  New environment for performance problem solving?  Does HPC performance experience / technology apply?

Grid Performance Workshop 6 December 9, 2002 Component Technology  What is a component?  Implementation provides functionality buts hides details  No direct access is possible  Interface provides access to component functionality  Access “ports” are well-defined and generated by tools  Matching connector links component interfaces  Constructed by framework and hidden from users

Grid Performance Workshop 7 December 9, 2002 Component Technology Features  Interoperability across multiple languages  Language independent interfaces (C/C++, Fortran, Java,…)  Automatically generated bindings to working code  Interoperability across multiple platforms  Computer systems hardware independence  Operating systems independence  Transparent execution model  Serial, parallel, and distributed system  Incremental evolution of application software  Components promote software reuse  Components are “plug-and-play”

Grid Performance Workshop 8 December 9, 2002 Component Architecture  Components must publish what capabilities they provide  Components must publish what connections they require  Set of standards  To write units of software (components)  To be sure their components will work with others  Intefaces compatible with component architecture  A framework holds and runs the components  Services to components to know and interact with others  Components execute in a runtime environment  Component only exists in the context of a component architecture and runtime framework

Grid Performance Workshop 9 December 9, 2002 Common Component Architecture – History  ACTS toolkit interoperability effort (late 1990’s)  Part of DOE 2000, many tool integration projects  “one-to-one”, leading to N 2 solutions…   Common Component Architecture Forum (1998)  Goal: develop a general interoperability solution  Grass roots effort to explore high-performance components for scientific software  SciDAC Center for Component Technology for Terascale Simulation Software (CCTTSS, 2001)  Part of new DOE scientific simulation program  Technology development in several thrust areas

Grid Performance Workshop 10 December 9, 2002 CCA Forum  Define specifications for high-performance scientific components and frameworks  Preservation of performance  Promote development of domain-specific “standard” interfaces  Goal: interoperability between components developed by different expert teams across different institutions  Quarterly meetings and open membership  Mailing list:  Website:

Grid Performance Workshop 11 December 9, 2002 DOE CCTTSS  DOE SciDAC ISIC  Scientific Discovery through Advanced Computing  Integrated Software Infrastructure Center  Subset of CCA Forum  Develop CCA technology from current prototype stage to full production environment  Increase understanding of how to use component architectures effectively in HPC environments  Participants:  Rob Armstrong, Lead, SNL

Grid Performance Workshop 12 December 9, 2002 Common Component Architecture Specification Scientific IDL Proxy generator Component 1Component 2 CCA Services Any CCA compliant framework Builder Repository CCA ports Framework-specific part of CCA ports Abstract configuration API Repository API

Grid Performance Workshop 13 December 9, 2002 CCA Concepts: Ports  Designing for interoperability and reuse requires “standard” interfaces  Ports define how components interact  Through well-defined interfaces (ports)  In OO languages, a port is a class or interface  In Fortran, a port is a set 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

Grid Performance Workshop 14 December 9, 2002 CCA Concepts: Frameworks  Provides the means to “hold” components and compose them into applications  Allow exchange of ports among components without exposing implementation details  Provide a small set of standard services to components  Builder services allow programs to compose CCA apps  Frameworks may make themselves appear as components in order to connect to components in other frameworks  Specific frameworks support specific computing models

Grid Performance Workshop 15 December 9, 2002 CCA Example  Numerically integrate a continuous function  Use two different techniques  Lines show port connections  Dashed lines are alternate port connections FunctionPort MidpointIntegrator IntegratorPort FunctionPort MonteCarloIntegrator IntegratorPort RandomGeneratorPort IntegratorPort Driver GoPort NonlinearFunction FunctionPort LinearFunction FunctionPort RandomGenerator RandomGeneratorPort PiFunction FunctionPort a b x x ab x n uniformily distributed over [a,b]

Grid Performance Workshop 16 December 9, 2002  CCAFFEINE  SPMD/SCMD parallel, direct connect  Direct connection  CCAT / XCAT  Distributed network  Grid Web services  SCIRun  Parallel, multithreaded, direct connect  Decaf  Language interoperability via Babel  Legion (under development) CCA Framework Prototypes

Grid Performance Workshop 17 December 9, 2002 Component Application Lifecycle (CCAFFEINE) Framework PiFunction Create PiFunction create setServices() addProvidesPort() setServices() MonteCarloIntegrator Create MonteCarloIntegrator create addProvidesPort() registerUsesPort() Construction Connect MonteCarloIntegrator, PiFunction getPort() evaluate() integrate() Execution evaluate() integrate()

Grid Performance Workshop 18 December 9, 2002 Performance-Engineered Component Software  Intra- and Inter-component performance engineering  Four general parts:  Performance observation  integrated measurement and analysis  Performance query and monitoring  runtime access to performance information  Performance control  mechanisms to alter performance observation  Performance knowledge  characterization and modeling  Consistent with component architecture / implementation

Grid Performance Workshop 19 December 9, 2002  Extend the programming and execution environment to be performance observable and performance aware Main Idea: Extend Component Design performance observation ports performance knowledge ports … Performance Knowledge Component Core … variants Performance Observation  empirical  analytical … … Component Performance Repository repository service ports component ports  measurement  analysis

Grid Performance Workshop 20 December 9, 2002  Performance measurement integration in component form  Functional extension of original component design ( )  Include new component methods and ports ( ) for other components to access measured performance data  Allow original component to access performance data  Encapsulate as tightly-couple and co-resident performance observation object  POC “provides” port allow use of optimized interfaces ( ) to access ``internal'' performance observations performance observation ports … Component Core … variants Performance Observation … component ports  measurement  analysis Performance Observation and Component

Grid Performance Workshop 21 December 9, 2002 Performance Knowledge  Describe and store “known” component performance  Benchmark characterizations in performance database  Empirical or analytical performance models  Saved information about component performance  Use for performance-guided selection and deployment  Use for runtime adaptation  Representation must be in common forms with standard means for accessing the performance information  Compatible with component architecture

Grid Performance Workshop 22 December 9, 2002  Performance knowledge storage  Implement in component architecture framework  Similar to CCA component repository  Access by component infrastructure  View performance knowledge as component (PKC)  PKC ports give access to performance knowledge  to other components, back to original component  Static/dynamic component control and composition  Component composition performance knowledge Component Performance Repository performance knowledge ports Performance Knowledge  empirical  analytical … Component Performance Repository repository service ports

Grid Performance Workshop 23 December 9, 2002 Component Composition Performance  Performance of component-based scientific applications depends on interplay of component functions and the computational resources available  Management of component compositions throughout execution is critical to successful deployment and use  Identify key technological capabilities needed to support the performance engineering of component compositions  Two model concepts  performance awareness  performance attention

Grid Performance Workshop 24 December 9, 2002 Performance Awareness of Component Ensembles  Composition performance knowledge and observation  Composition performance knowledge  Can come from empirical and analytical evaluation  Can utilize information provided at the component level  Can be stored in repositories for future review  Extends the notion of component observation to ensemble-level performance monitoring  Associate monitoring components to component grouping  Build upon component-level observation support  Performance integrators and routers  Use component framework mechanisms

Grid Performance Workshop 25 December 9, 2002 Performance Engineering Support in CCA  Define a standard observation component interface for:  Performance measurement  Performance data query  Performance control (enable/disable)  Implement performance interfaces for use in CCA  TAU performance system  CCA component frameworks (CCAFFEINE, SIDL/Babel)  Demonstrations  Optimizing component  picks from a set of equivalent CCA port implementations  Flame reaction-diffusion application

Grid Performance Workshop 26 December 9, 2002 CCA Performance Observation Component  Design measurement port and measurement interfaces  Timer  start/stop  set name/type/group  Control  enable/disable groups  Query  get timer names  metrics, counters, dump to disk  Event  user-defined events

Grid Performance Workshop 27 December 9, 2002 CCA C++ (CCAFFEINE) Performance Interface namespace performance { namespace ccaports { class Measurement: public virtual classic::gov::cca::Port { public: virtual ~ Measurement (){} /* Create a Timer inteface */ virtual performance::Timer* createTimer(void) = 0; virtual performance::Timer* createTimer(string name) = 0; virtual performance::Timer* createTimer(string name, string type) = 0; virtual performance::Timer* createTimer(string name, string type, string group) = 0; /* Create a Query interface */ virtual performance::Query* createQuery(void) = 0; /* Create a user-defined Event interface */ virtual performance::Event* createEvent(void) = 0; virtual performance::Event* createEvent(string name) = 0; /* Create a Control interface for selectively enabling and disabling * the instrumentation based on groups */ virtual performance::Control* createControl(void) = 0; }; } Measurement port Measurement interfaces

Grid Performance Workshop 28 December 9, 2002 CCA Timer Interface Declaration namespace performance { class Timer { public: virtual ~Timer() {} /* Implement methods in a derived class to provide functionality */ /* Start and stop the Timer */ virtual void start(void) = 0; virtual void stop(void) = 0; /* Set name and type for Timer */ virtual void setName(string name) = 0; virtual string getName(void) = 0; virtual void setType(string name) = 0; virtual string getType(void) = 0; /* Set the group name and group type associated with the Timer */ virtual void setGroupName(string name) = 0; virtual string getGroupName(void) = 0; virtual void setGroupId(unsigned long group ) = 0; virtual unsigned long getGroupId(void) = 0; }; } Timer interface methods

Grid Performance Workshop 29 December 9, 2002 Use of Observation Component in CCA Example #include "ports/Measurement_CCA.h"... double MonteCarloIntegrator::integrate(double lowBound, double upBound, int count) { classic::gov::cca::Port * port; double sum = 0.0; // Get Measurement port port = frameworkServices->getPort ("MeasurementPort"); if (port) measurement_m = dynamic_cast (port); if (measurement_m == 0){ cerr << "Connected to something other than a Measurement port"; return -1; } static performance::Timer* t = measurement_m->createTimer( string("IntegrateTimer")); t->start(); for (int i = 0; i getRandomNumber (); sum = sum + function_m->evaluate (x); } t->stop(); }

Grid Performance Workshop 30 December 9, 2002 Measurement Port Implementation  Use of Measurement port (i.e., instrumentation)  independent of choice of measurement tool  independent of choice of measurement type  TAU performance observability component  Implements the Measurement port  Implements Timer, Control, Query, Control  Port can be registered with the CCAFEINE framework  Components instrument to generic Measurement port  Runtime selection of TAU component during execution  TauMeasurement_CCA port implementation uses a specific TAU library for choice of measurement type

Grid Performance Workshop 31 December 9, 2002 What’s Going On Here? TAU API runtime TAU performance data TAU API application component performance component other API … Alternative implementations of performance component Two instrumentation paths using TAU API Two query and control paths using TAU API application component

Grid Performance Workshop 32 December 9, 2002 Simple Runtime Performance Optimization  Components are “plug-and-play”  One can choose from a set of equivalent port implementations based on performance measurements  An outside agent can monitor and select an optimal working set of components FunctionPort MidpointIntegrator IntegratorPort FunctionPort MonteCarloIntegrator IntegratorPort RandomGeneratorPort IntegratorPort Driver GoPort NonlinearFunction FunctionPort LinearFunction FunctionPort RandomGenerator RandomGeneratorPort PiFunction FunctionPort

Grid Performance Workshop 33 December 9, 2002 Component Optimizing Performance Results

Grid Performance Workshop 34 December 9, 2002 Computational Facility for Reacting Flow Science  Sandia National Laboratory  DOE SciDAC project (  Jaideep Ray  Component-based simulation and analysis  Sandia’s CCAFFEINE framework  Toolkit components for assembling flame simulation  integrator, spatial discretizations, chemical/transport models  structured adaptive mesh, load-balancers, error-estimators  in-core, off-machine, data transfers for post-processing  Components are C++ or wrapped F77 code  Kernel for 3D, adaptive mesh low Mach flame simulation

Grid Performance Workshop 35 December 9, 2002 Simulation System Architecture  Three partitions: 15-proc, 3-proc, 1-proc  In-core, off-machine data transfer  MxN transfer component (CUMULVS, ORNL, Kohl) Driver Combustion Components MxN Driver Post- processing Subsystem MxN Disk I/O and thumbnail pictures Simulation (15 proc) Post-processing (3 proc) Thumbnails, I/O 15x3 3x1

Grid Performance Workshop 36 December 9, 2002 Flame Reaction-Diffusion Demonstration CCAFFEINE

Grid Performance Workshop 37 December 9, 2002 Meeting CCA Performance Engineering Goals?  Language interoperability?  SIDL and Babel give access to all supported languages  TAU supports multi-language instrumentation  Component interface instrumentation automated with PDT  Platform interoperability?  Implement observability component across platforms  TAU runs wherever CCA runs  Execution model transparent?  TAU measurement support for multiple execution models  Reuse with any CCA-compliant framework?  Demonstrated with SIDL/Babel, CCAFEINE, SCIRun

Grid Performance Workshop 38 December 9, 2002 Meeting CCA Performance Engineering Goals?  Component performance knowledge?  Representation and performance repository work to do  Utilize effectively for deployment and steering  Build repository with TAU performance database  Performance of component compositions?  Component-to-component performance  Per connection instrumentation and measurement  Utilize performance mapping support  Ensemble-wide performance monitoring  connect performance “producers” to “consumers”  component-style implementation

Grid Performance Workshop 39 December 9, 2002 Importance to Grid Computing and Performance  Component software is a natural model for developing applications for the Grid  ICENI (Imperial College), CCAT / XCAT (Indiana)  Our work leverages abstraction power of CCA as well as the infrastructure of CCA frameworks  Similarly leverage Grid infrastructure and services  Mostly riding back of CCA framework development  Application-level performance view coupled with Grid resource assessment and monitoring  More responsive to performance dynamics  Beginning work with NWS forecaster in applications

Grid Performance Workshop 40 December 9, 2002 Discussion Questions  What is the correct perspective with respect to Grid performance?  Resource-centric or application-centric?  Are the performance problems the same across the range of component applications on parallel and distributed system?  To what extent is the performance engineering methods and performance technology reusable?  How can you integrate performance technology in component systems seamlessly, in a way that does not impact its functionality or capabilities? ……