components for scientific computing

31
Components for Scientific Computing Randall Bramley Computer Science, Indiana University Center for Advanced Computation Research, California Institute of Technology

Upload: jennifer-bolton

Post on 03-Jan-2016

18 views

Category:

Documents


1 download

DESCRIPTION

Components for Scientific Computing. Randall Bramley Computer Science, Indiana University Center for Advanced Computation Research, California Institute of Technology. CAT Team Members. Dennis Gannon: CAT architecture design Randall Bramley: CAT/LSA design - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Components for Scientific Computing

Components for Scientific Computing

Randall Bramley

Computer Science, Indiana University

Center for Advanced Computation Research, California Institute of Technology

Page 2: Components for Scientific Computing

CAT Team Members

• Dennis Gannon: CAT architecture design• Randall Bramley: CAT/LSA design• Benjamin Temko: Globus wrangler• Fabian Breg: NexusRMI author• Prafulla Deuskar: parallel HPC++ components • Shridhar Diwan: HPC++ Manager • Madhusudhan Govindaraju: HPC++ framework, GRAM

server • David Stern: HPC++ framework design, LSA components • Juan Villacis: CAT design, GUI workspace, Java Manager • Andrew Whitaker: information subsystem, GUI InfoBrowser• Esra Akman, Deepa Viswanathan, Thomas Stuckey: alums

Page 3: Components for Scientific Computing

Large Sparse Linear Systems

• 105-107 or more unknowns• Irregular sparsity structure • Nonbanded, non-structured

– Not diagonally dominant

• Nonsymmetric in values– Causes convergence problems

Page 4: Components for Scientific Computing

The Good News for Linear Systems

• Sparse direct solvers readily available:– Umfpack, SuperLU, Y12M

– HPC banded solvers in Scalapack

• Preconditioned iterative solvers:– Aztec, SPLIB, BPKIT, ITPACK, ...

• Matrix manipulation packages: – Sparskit, SMMS, Metis, Chaco, ...

Page 5: Components for Scientific Computing

The Bad News for Linear Systems

• All methods are parameterized– enormous design space to navigate.

• Black arts abound– matrix reordering, scalings, filtering

• No existing theory provides a practical guide to crafting a solution strategy– experimentation required.

Page 6: Components for Scientific Computing

Goals of Linear System Analyzer (LSA)

• Develop “solution strategies” for linear systems• High-level rapid prototyping for combining sparse

matrix manipulations and solvers• Hot-wiring capabilities: grab linear systems from

running applications, return solutions/strategies dynamically

• High-performance capabilities: big systems, fast network protocols.

• We chose a distributed component architecture approach...

Page 7: Components for Scientific Computing

Classes of Components in the LSA

• I/O components: getting linear system data in and out of the framework

• Filter components: manipulating the system to have more favorable properties for a solver

• Solve components• Information components

Page 8: Components for Scientific Computing

LSA I/O Components

• Read from file: H/B or Matrix Market format• Write out solution vector to a file• Take input from URL on network• Take input from active object (running program)• Feed solution back to an active object• Extract linear system from framework to file

Page 9: Components for Scientific Computing

LSA Filter Components

• Reorder linear system: MinDeg, RCM, ND, MaxTraversal, BBD, Weighted Diag Block

• Scale system: max element, row, column, relative scalings

• Filter out elements based on magnitude• Parallel partitioning reorderings: Chaco, Metis

Page 10: Components for Scientific Computing

LSA Solver Components

• LAPACK dense solver (extracted)• LAPACK banded solver (extracted)• SuperLU sparse direct from Xiaoye Li• SPLIB preconditioned iterative solvers

– Thirteen iterative methods (only two are really useful)

– Seven preconditioners (four are of use)

– Heavily instrumented

• Aztec parallel iterative solvers• BLOCK

Page 11: Components for Scientific Computing

LSA Info Components

• BasicInfo: analysis of coefficient matrix (beefed-up version of Sparskit’s infofun)

• VizInfo: emily sparse matrix visualization• Wannabes:

– IterativeInfo: specialized analysis for selecting iterative solvers, preconditioners

– DirectInfo: estimates storage required, computational rate for sparse direct solvers

– Spectral: eigenvalue/singular value decomposition

Page 12: Components for Scientific Computing

Component Systems Definition

• Characteristics of “component”– Encapsulated software object providing specific functionality or

service, used with other components to build complete applications

– Peer-to-peer interactions vs. client-server.

– Applications built by connecting binaries - not via compilation/linking of sources

– Components interact via well-defined interfaces or ports.

– Connected as software IC’s in a framework

– Services need not be computational: visualization, object store, ...

• Components have swept desktop, business worlds– Microsoft COM, CORBA, Java Beans, Iris Explorer, Khoros, ...

Page 13: Components for Scientific Computing

Distributed Component Framework Services

• Component identification and handling– LDAP component information system

• Interface registry– Java RMI mechanism

• Connection management; exception handling– Combination of Java, HPC++, Nexus

• User interface / collaboration mechanisms– Java GUIs

• Hardware resource management– Globus system

Page 14: Components for Scientific Computing

DatabaseCATCATCompositionCompositionGUIGUI

Java Composition GUI

Visualizer

Local Java proxies to remote objectsRemote objects inHPC++, Java orwrapped MPI-Fortran

Intercomponent comm with Java RMI/HPC++remote invocation semantics implemented over Globus/Nexus

EvolverInitializer

Globus authentication and

instantiation of components

CAT Framework Architecture

Page 15: Components for Scientific Computing

Standard Metacomputing Model

• Application codes at top,

written in C, C++, Fortran, …

• HPC libraries (ScalaPack),

runtimes (MPI, Tulip)

• Infrastructure (Globus, Nexus,

network protocols)

• Hardware (Origins, SP2s,

CAVES, …)

Hardware: computers,visualization equipt

Basic infrastructuresoftware

Software libraries, runtime systems

Application codes

Page 16: Components for Scientific Computing

CAT Metacomputing Model

• Applications … not code (physical process modeling)

• Composition tools for organizing resources (CAT Java GUIs, managers)

• Resource (both SW and HW) location/management (Globus, LDAP DB’s)

• Actual resources: code, computers, visualization engines, databases, instruments

HardwareResources

SoftwareResources

Component Resource Management

Component Resource Composition Tools

Applications

Page 17: Components for Scientific Computing

CAT User Interfaces

Software componentfinder: LDAP based

Detail info aboutselected comp

Compositionwindow showingcomp connects

Page 18: Components for Scientific Computing

Common Component Architecture Group

• Existing component frameworks not suitable for HPC• Participants from all national labs, few universities• Key goal: develop component interface standards.

– Allow interchanging of components between frameworks, labs

– Mechanisms for a component to make its interfaces known

– Allow for parallel links, different network protocols.

• Meetings:– Unfunded meetings six times last year

– BOF meeting at SC98 (debutante party)

– Last meeting has implementable goal

Page 19: Components for Scientific Computing

Usage of Component Architectures

Init

DB Solve

DiscretizeComposition phase: instantiate and tie together comps

Init

DB Solve

DiscretizeRun phase: start comps executing

Mixed phase: addcomps dynamically

Visualize

Page 20: Components for Scientific Computing

A Possible CCA Framework System

entific IDL

Any CCA Compliant Framework

FrameworkServices

Component 1 Component 2

proxygenerator

Builder

Repository/Registry

GPorts Part of Gports specific to the framework

Abstract ConfigurationAPI

Repository API

Scientific IDL

(From RobArmstrong,

SNL)

Page 21: Components for Scientific Computing

Basic CCA mechanism: gPorts

• gPorts = generalized Ports– Borrows ideas from CORBA, COM, visual programming environments

like Iris Explorer, AVS, Khoros

– Current prototype based on CORBA-like user/provider model

– Uses type of COM-like IUnknown pattern

– Defined using linked interfaces.

• Source-target, start pt - end pt, source-sink, output-input, event source - listener, user-provider terms all used to describe the communicating ports

Page 22: Components for Scientific Computing

Basic CCA mechanism: gPorts

• Output ports can be multiplexed, but not input ports• gPorts directly* invoke methods on each other.• Allows

– standard data-flow model

– shared-memory or “data stays, components move” models

* Using underlying run-time system

Page 23: Components for Scientific Computing

Basic CCA mechanism: gPorts

outputGport inputGport

Source Target

Event Source“uses” remote methods

Event listener“provides” methods

Typed Channel

outputGport implements- methods defined by typed channel- addListener() used to connect target to outputGport

Examples:- outputGport is list of “global pointers” in HPC++- logic for argument marshaling and RPC- n x m collective communications as in MPI

Page 24: Components for Scientific Computing

Each Gport provides information about its types via strings for name, type:

Framework responsible for mapping from strings to internal representation of types

Basic CCA mechanism: gPorts

class gPortInfo { public gPortInfo(String portname, String porttype); public String getType(); public String getName();};

Page 25: Components for Scientific Computing

Basic CCA mechanism: gPorts

Channel types can be defined via an IDL spec:interface MyChannelType{ int row(in float, in array<int,3>); void mat_order(in int); };

Becomes in Java or in C++

Interface MyChannelType{ int row( float, array_int_3); void mat_order(int); };

class MyChannelType{ public: virtual int row(float, array_int_3)=0; virtual void mat_order(int)= 0; };

Page 26: Components for Scientific Computing

Defining input port requires implementing Channel type generated by IDL (or by hand)interface InputGPort extends GPort{};

Defining output port requires implementingChannel type

Mechanisms also will allow hierarchical compositionSee web pages for details, examples.

Basic CCA mechanism: gPorts

interface OutputGPort extends GPort{ public void addInputListener(InputGPort ); public void removeInputListener(InputGPort ); public Enumeration getInputPorts(); };

Page 27: Components for Scientific Computing

CCA and IDL

• CCA standard does not require using IDL. • CAT/LSA allows seamless interaction between Java and

HPC++ method invocations; no IDL• Groups can define own “glue” mechanisms• Must support C/C++, Java, Fortran77, Python, Perl

– Fortran 90 support allowed but not required.

• Reflection capabilities required for interfaces.– Run-time discovery of objects by frameworks

Page 28: Components for Scientific Computing

CCA Dynamic Registry

• First Level: how to register components so that frameworks can locate and instantiate them

• Second Level: how a component makes its interfaces known to the framework

• Meta-Level: how to describe the internal functionality of a component in the global marketplace

• Less of a problem in DOE applications: relatively few components and interfaces to handle.

• Will be/is a major problem for academic applications

Page 29: Components for Scientific Computing

Current CCA Status

• Scrupulous avoidance of word “standards”. • draft gPort spec

http://z.ca.sandia.gov/~cca-forum/gport-spec

• draft IDL spechttp://www.llnl.gov/CASC/babel

• Multiple test frameworks being developed– InDEPS (Sandia, Armstrong and Melius)

– CAT/LSA (IU, Gannon and Bramley)

– PAWS (LANL, Beckman and Reynders)

• Existing frameworks likely to be made CCA-compliant– POOMA, PetSC, SciRun, ISIS++, ...

Page 30: Components for Scientific Computing

Current CCA Participants

• Sandia: Rob Armstrong, Robert Clay, Bill Mason,Carl Melius • Indiana University: Dennis Gannon • CACR, Indiana: Randall Bramley • LLNL: Andy Cleary, Scott Kohn, Brent Smolinski• LANL: Pete Beckman, Pat Fasel, Bill Humphrey, Kate

Keahey• ORNL: Al Geist, Noel Nachtigal • ANL: Satish Balay, Lori Freitag, Paul Hovland, Lois Curfman

McInnes, Barry Smith • Utah: Steve Parker, Chris Johnson• Lawrence Berkeley: Brent Milne• Pacific Northwest Labs: Jarek Nieplocha

Page 31: Components for Scientific Computing

An Idiosyncratic View

• Components are the future of scientific/eng computing– desktop, business computing always leads the way

– is the right level of abstraction for object-orientation

– maps naturally to collaborating groups distributed across the globe

– integrates weird stuff: symbolic computing, vizualization, DBs

• We have to address scalability in terms of numbers of components: 105 components, 108 interface instances

• Software agents may be right tool to find, challenge/test, and connect software components