Session 40 : SAGA Overview and Introduction

Preview:

DESCRIPTION

Speaker: Shantenu Jha

Citation preview

Text

CCT: Center for Computation & Technology

SAGA: An Introductory Lecture

Text

CCT: Center for Computation & Technology

Developing Distributed Applications Using SAGA

Understanding the Landscape of Distributed Applications

Text

Outline (1)

  Simple API for Grid Applications (SAGA)   Introduction to Simple API   SAGA as an emerging Standard

  Understanding Distributed Applications (DA)   Challenges of DA ? Differ from HPC or || App?   Rough Taxonomy of Distributed Applications   Using SAGA to develop DA

i.  Distributed Execution Mode Legacy (Implicit) ii.  Explicit coordination and distribution iii.  Frameworks: support characteristics or patterns

  Understanding the SAGA Landscape   Interface/Specification, C++ Engine, Adaptors

Text

Outline (2)

  Applications Developed Using SAGA:   Replica-Exchange, C02 Sequestration (EnKF)   MapReduce

  Interoperabilty across Grids, Grids-Clouds

  Other SAGA Projects (Advantage of Standards)   Uptake by JSAGA and XtreemOS   Service Discovery (SD) and uptake gLite   DESHL (DEISA) -- Tool or Application?

  Session II: SAGA Hands-on   Using Mini-Examples to become familiar with the API   A few Real Application examples   Time to play with the code programmer’s manual

Text

A take on “What are Grids?”

Grids are:   Dynamic:

  Version, updates, new resources...   Heterogenous:

  Operating Systems, Libraries, software stack   Middleware service versions and semantics   Administrative policies – access, usage, upgrade

  Complex:   Production Grid Service with high QoS non-trivial   Derived from above as well as inherently

Not only are Grids difficult to operate etc., but it is very difficult to develop, program & deploy Grid applications

Text

SAGA: A Quick Tour

  There exists a lack of:   Programmatic approaches that provide common grid

functionality at the correct level of abstraction for applications   Ability to hide underlying complexity of infrastructure, varying

semantics, heterogeneity and changes from the application-developer

  Simple, integrated, stable, uniform and high-level interface   Simple: 80:20 restricted scope   Integrated: Similar semantics & style across commonly used

distributed functional requirements   Stable: Standard   Uniform: Same interface for different distributed systems

  SAGA: Provides the high-level abstraction that application developers need that will work across different distributed systems

  Shields details of lower level middle-ware and system issues   Enables the details of distribution to be left out

Text

Copy a File: Globus GASS

if (source_url.scheme_type == GLOBUS_URL_SCHEME_GSIFTP || source_url.scheme_type == GLOBUS_URL_SCHEME_FTP ) { globus_ftp_client_operationattr_init (&source_ftp_attr); globus_gass_copy_attr_set_ftp (&source_gass_copy_attr, &source_ftp_attr); } else { globus_gass_transfer_requestattr_init (&source_gass_attr, source_url.scheme); globus_gass_copy_attr_set_gass(&source_gass_copy_attr, &source_gass_attr); }

output_file = globus_libc_open ((char*) target, O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); if ( output_file == -1 ) { printf ("could not open the file \"%s\"\n", target); return (-1); } /* convert stdout to be a globus_io_handle */ if ( globus_io_file_posix_convert (output_file, 0, &dest_io_handle) != GLOBUS_SUCCESS) { printf ("Error converting the file handle\n"); return (-1); }

result = globus_gass_copy_register_url_to_handle ( &gass_copy_handle, (char*)source_URL, &source_gass_copy_attr, &dest_io_handle, my_callback, NULL); if ( result != GLOBUS_SUCCESS ) { printf ("error: %s\n", globus_object_printable_to_string (globus_error_get (result))); return (-1); } globus_url_destroy (&source_url); return (0); }

int copy_file (char const* source, char const* target) { globus_url_t source_url; globus_io_handle_t dest_io_handle; globus_ftp_client_operationattr_t source_ftp_attr; globus_result_t result; globus_gass_transfer_requestattr_t source_gass_attr; globus_gass_copy_attr_t source_gass_copy_attr; globus_gass_copy_handle_t gass_copy_handle; globus_gass_copy_handleattr_t gass_copy_handleattr; globus_ftp_client_handleattr_t ftp_handleattr; globus_io_attr_t io_attr; int output_file = -1;

if ( globus_url_parse (source_URL, &source_url) != GLOBUS_SUCCESS ) { printf ("can not parse source_URL \"%s\"\n", source_URL); return (-1); }

if ( source_url.scheme_type != GLOBUS_URL_SCHEME_GSIFTP && source_url.scheme_type != GLOBUS_URL_SCHEME_FTP && source_url.scheme_type != GLOBUS_URL_SCHEME_HTTP && source_url.scheme_type != GLOBUS_URL_SCHEME_HTTPS ) { printf ("can not copy from %s - wrong prot\n", source_URL); return (-1); } globus_gass_copy_handleattr_init (&gass_copy_handleattr); globus_gass_copy_attr_init (&source_gass_copy_attr);

globus_ftp_client_handleattr_init (&ftp_handleattr); globus_io_fileattr_init (&io_attr);

globus_gass_copy_attr_set_io (&source_gass_copy_attr, &io_attr); &io_attr); globus_gass_copy_handleattr_set_ftp_attr (&gass_copy_handleattr, &ftp_handleattr); globus_gass_copy_handle_init (&gass_copy_handle, &gass_copy_handleattr);

Text

SAGA Example: Copy a File Application Level Interface

#include <string> #include <saga/saga.hpp>

void copy_file(std::string source_url, std::string target_url) { try { saga::file f(source_url); f.copy(target_url); } catch (saga::exception const &e) { std::cerr << e.what() << std::endl; } }

The interface is simple and the actual function calls remain the same

Text

SAGA Interface Job Submission API

01: // Submitting a simple job and wait for completion 02: // 03: saga::job_description jobdef; 04: jobdef.set_attribute ("Executable", "job.sh"); 05: 06: saga::job_service js; 07: saga::job job = js.create_job ("remote.host.net", jobdef); 08: 09: job.run(); 10: 11: while( job.get_state() == saga::job::Running )‏ 12: { 13: std::cout << “Job running with ID: “ 14: << job.get_attribute(“JobID”) << std::endl; 15: sleep(1); 16: }

The interface is simple and the actual function calls remain the same

Text

SAGA: Job Submission Role of Adaptors (middleware binding)‏

Text

File API Example

01: // Read the first 10 bytes of a file if file size > 10 bytes 02: // 03: saga::file my_file (“griftp://gridhub/~/result.dat); 04: 05: off_t size = my_file.get_size (); 06: 07: if ( size > 10 ) 08: { 09: char buffer[11]; 10: long bufflen; 11: 12: my_file.read (10, buffer, &bufflen); 13: 14: if ( bufflen == 10 ) 15: { 16: std::cout << buffer << std::endl; 17: } 18: }

Text

SAGA: Class Diagram

In the works: CPR, Information Services, Messaging, DAI,...

Text

SAGA: Scope

  Is:   Simple API for Grid-Aware Applications

  Deal with distributed infrastructure explicitly   Application-level functionality/interface   An uniform interface to different middleware(s)   Client-side software

  Is NOT:   Middleware   A service management interface!   Does not hide the resources - remote files, job (but

the details)

Text

SAGA API: Towards a Standard Standards promote Interoperability

•  The need for standard programming interface •  Trade-off “Go it alone” versus “Community” model •  Reinventing the wheel again, yet again, & then again •  MPI a useful analogy of community standard

•  Vendors (Resource Provider), Software developers, users.. •  social/historic parallels also important

•  Time to adoption, after specification .... •  OGF the natural choice (SAGA-RG, SAGA-WG)

•  Spin-off of the Applications Research Group •  Driven by UK, EU (German/Dutch), US •  Design derived from 23 Use Cases

•  different projects, applications and functionality •  biological, coastal modelling, visualization

•  Will discuss the advantage of SAGA as a standard specification

Text

Outline (1)

  Simple API for Grid Applications (SAGA)   Introduction to Simple API   SAGA as an emerging Standard

  Understanding Distributed Applications (DA)   Challenges of DA ? Differ from HPC or || App?   Rough Taxonomy of Distributed Applications   Using SAGA to develop DA

i.  Distributed Execution Mode Legacy (Implicit) ii.  Explicit coordination and distribution iii.  Frameworks: support characteristics or patterns

  Understanding the SAGA Landscape   Interface/Specification, C++ Engine, Adaptors

Text

Developing DA with SAGA: Parallel Programming Analogy

  Distributed programming today, || programming pre-MPI   Bewildering # of ways of doing the basic stuff (e.g., job

submission)   MPI was a “success” in that it helped many new applications

  MPI is simple (most things can be done with 6-8 calls)   MPI was a standard (stable and portable code!)

  SAGA conception & trajectory similar to MPI   SAGA focusses on simplicity (common vs corner case)   OGF specification; on path to becoming a standard

  Therefore, SAGA's Measure(s) of success:   Does SAGA enable “new” distributed applications?   Does it enable effective development of “old” distributed

application

Text

Programming Distributed Applications

•  Characteristics: •  Dynamical and Heterogenous resources •  Control (or lack thereof) on remote sytems

•  Computational Models of Distributed Computing not as well understood as parallel computing

•  Parallel Computing: Focus on performance! For DA? •  Greater range of distributed application... •  Underlying model of distributed infrastructure complex..

•  What should end-user control? Must control? Should not? •  What should the system support? Role of tools? •  No universal answers! Simplification and distillation

Challenges of Distributed Applications (1) How do they differ from traditional HPC applications?

  Performance Models:   Not “peak utilization” e.g., # of jobs   Manage scalability, faults, heterogenity

  Usage Modes:   How applications are run, deployed and utilized is

often determined by the infrastructure   Static versus Dynamic Execution:

  Varying resource conditions; distributed applications should be dynamic

Distributed Applications

  Ability to develop simple, novel or effective distributed applications lags behind; remains a very hard undertaking

  The Future is Distributed:   Basic Trends in Computing   Decoupling & Delocalization of Data Production-

Consumption; Components of computation; Services; People

  Therefore develop applications that require distribution, coordination, management & collaboration of compute-data-people over multiple & distributed sites:

  Logically or physically distributed   Scale-up and Scale-out

Distributed Applications (2)

  Challenge is about how to develop DA effectively and efficiently, with extensibility, scalability and generalization as first-class concerns

  Understand what can be done? What are the gaps?

  Understand characteristics and requirements DA

  Vectors: Axes representing application characteristics, the value of which help us understand the application and what influences the design/constraints of solutions, tools & programming systems that can be used

  What makes distributed applications hard to develop?

  What makes distributed infrastructure hard to use

Taxonomy of Distributed Applications (1) How are DA developed?

  Distributing a legacy Application:   Focus mechanisms to support distributed execution

  Science Gateways, Condor..   No-coupling or coordination between tasks

  E.g., Replica Ensemble   Distributed Applications with Multiple Components

  Naturally decomposed; aggregate (coordination)   E.g. DDDAS, sensor-based applications

  Decompose a Large problem into sub-components   Degree-of-coupling (e.g freq/vol of comm)   Flexibility (scheduling, ordering)

Taxonomy of Distributed Applications (2) Coordination

  Challenge: Coordination of multiple-components   Decompose a large problem into sub-problem   Designing De Novo Distributed Application

  E.g. GridSAT (Wolski), Distributed Reasoning (Bal)   Coupling components set coordination strategy

  Coupling is high:   Low flexibility in placement, ordering, resource

selection; or Communication (e.g. MPIg)   Coupling is low:

  High flexibility in placement, ordering.. E.g. (Identical?) Replica-Exchange

Distributed Applications (3) What makes a DA a DA?

  Vectors: Axes representing application characteristics, the values of which help us understand:   The application requirements, and   Design and Constraints of solutions, tools

  Application Vectors:   Executable Unit   Communication   Coordination   Execution Environment

Frameworks: Capturing Application Requirements, Characteristics & Patterns

  Pattern: Commonly recurring modes of computation   Abstraction: Mechanism to support patterns and application

characteristics   Development, Deployment and Execution

  Frameworks: i.  Support Patterns:

•  MapReduce, Master-Worker, Hierarchical Job-Submission

ii.  Provide the abstractions and support the requirements & characteristics

SAGA and Distributed Applications

SAGA: Bridging the Gap between Infrastructure and Applications

Focus on Application Development and

Characteristics, not infrastructure details

SAGA: Application Types   Example of Distributed Execution Mode:

  Implicitly Distributed   SAGA can be used to script 800 job submissions on

the TeraGrid for GridChem   Example of Explicit Coordination and Distribution

  Explicitly Distributed   EnKF-HM application in which application controls the

work-load and determines where & when the execution of a task is to take place

SAGA: Frameworks

  Frameworks can either support a specific programming pattern or run-time pattern, or a commonly occuring application characteristic, i.e. provides an implementation of the abstraction

  Three types don’t have to be mutually exclusive… Can have a framework that helps in the explicit coordination

Abstractions for Distributed Computing (1) BigJob: Container Task

Adaptive:

Type A: Fix number of replicas; vary cores assigned

to each replica.

Type B: Fix the size of replica, vary number of replicas

Abstractions for Distributed Computing (2) SAGA Pilot-Job (Glide-In)

Coordinate Deployment & Scheduling of Multiple Pilot-Jobs

FAUST production-level implementation coming:

http://macpro01.cct.lsu.edu/~oweidner/faust/

Text

Using SAGA-based Frameworks (1)‏

Text

Using SAGA-based Frameworks (2): Ibis

–  Programming

•  Divide-and-conquer (Satin)‏ –  Fault-tolerant, malleable

•  IPL: Java-centric grid communication layer

– Run-anywhere, connectivity – Deployment and Management

Slide Courtesy H. Bal

Application Class vs Type

• No unique mapping between Class & Type.. . Interesting/Unique?

•  The same application can often be either explict or implicitly distributed

Distributed: Implicit vs Explicit ?

  Most applications/application classes can be either. Which approach (implicit vs explicit) is used depends:

  How the application is used?   Need to control/marshall more than one resource?

  Why distributed resources are being used?   How much can be kept out of the application?

  Can’t predict in advance?   Not obvious what to do, application-specific

metric   Unless necessary, applications should not be explicitly

distributed

Text

Outline (1)

  Simple API for Grid Applications (SAGA)   Introduction to Simple API   SAGA as an emerging Standard

  Understanding Distributed Applications (DA)   Challenges of DA ? Differ from HPC or || App?   Rough Taxonomy of Distributed Applications   Using SAGA to develop DA

i.  Distributed Execution Mode Legacy (Implicit) ii.  Explicit coordination and distribution iii.  Frameworks: support characteristics or patterns

  Understanding the SAGA Landscape   Interface/Specification, C++ Engine, Adaptors

Text

SAGA: The Landscape

Text

SAGA Interface Hierarchy

Look and feel: Top level Interfaces; Core SAGA objects needed by other API packages that provide specific functionality -- capability providing packages e.g., jobs, files, streams, namespaces etc.

Text

SAGA Interface Tour

The common root for all SAGA classes. Provides unique ID to maintain a list of SAGA objects. Provides methods (get_id()) essential for all SAGA objects

Text

Errors and Exceptions

SAGA defines a hierarchy of exceptions (and allows implementations to fill in specific details)

Text

Session, Context, Permissions

Object provides functionality of a session handle and isolates independent sets of SAGA objects. Only needed if you wish to handle multiple credentials. Otherwise default context is used.

Text

Attributes

Where attributes need to be associated with objects, e.g. Job-submission. Key-value pairs, e.g. for resource descriptions attached to the object.

Text

Application Monitoring

Metric defines application-level data structure(s) that can be monitored and modified (steered). Also, task model requires state monitoring.

Text

Asynchronous Operations, Tasks

Most calls can be synchronous, asynchronous, or tasks (need explicit start.)

Text

Jobs

Jobs are submitted to run somewhere in the grid.

Text

Files, Directories, Name Spaces

Both for physical and replicated (“logical”) files

Text

Streams

Simple, data streaming end points.

Text

SAGA v1.0 Hierarchy - Full Glory

GridRPC - A rendering of GridRPC

Text

SAGA Task Model

  All SAGA objects implement the task model   Every method has three “flavors”

  Synchronous version - the implementation   Asynchronous version - synchronous version

wrapped in a task (thread) and started   Task version - synchronous version wrapped in a task

but not started (task handle returned)   Adaptor can implement own async. version

SAGA Task Model

Text

Functional packages post-v1.0

  Service Discovery   Adverts   Checkpointing/Recovery (Migol)   Information Service   Steering   MessageBus: Structured data transfer, also many-to-

many   Important for coupled, multi-physics applications

Text

SAGA: The Landscape

Text

And in pictures..

Text

SAGA-Condor: Campus Grids

Text

10/22/2006 LCSD'06 53

SAGA Implementation: Requirements

  Non-trivial set of requirements:   Allow heterogenous middleware to co-exist   Cope with evolving grid environments; dyn resources   Future SAGA API extensions   Portable, syntactically and semantically platform

independent; permit latency hiding mechanisms   Ease of deployment, configuration, multiple-language

support, documentation etc.   Provide synchronous, asynchronous & task versions Portability, modularity, flexibility, adaptabilty, extensibility

Text

10/22/2006 LCSD'06 54

SAGA Implementation: Extensibility

  Horizontal Extensibility – API Packages   Current packages:

  file management, job management, remote procedure calls, replica management, data streaming

  Steering, information services, checkpoint in pipeline

  Vertical Extensibility – Middleware Bindings   Different adaptors for different middleware   Set of ‘local’ adaptors

  Extensibility for Optimization and Features   Bulk optimization, modular design

Text

Is SAGA Simple?

  It depends: It is certainly not simple to implement! •  Grids are complex and the complexity needs to be

addressed somewhere, by someone! •  Pain using the middleware goes into the SAGA engine

and adaptors.   But it is simple to use!!

  Functional Packages (specific calls), Look & Feel   Somewhat like MPI - most users only need a very

small subset of calls

Text

Implementations

  OGF Standard: Two independent implementations of a specification are required

  LSU: C++   V1.0 release Sep 15   Uptake by NAREGI/KEK, gLite (SD)

  Java   VU (Amsterdam):

  Part of the OMII-UK Project   JSAGA   DEISA (DESHL)

Text

SAGA: C++ Status and Timelines http://saga.cct.lsu.edu

•  C++: Currently at v1.31 (July 2009) •  Monthly release cycles •  Release V1.0 September 15 2008 (OGF24)‏

  Both (OMII) JAVA and C++   Will mirror V1.0 of the specification   Cleaned up Build system for Linux, Mac & Win

•  Adaptors: •  Globus RLS, GRAM, GridSAM, Gridftp (available)‏ •  ssh, libcurl (in progress)‏ •  Condor, LSF •  CloudStore (KFS), HDFS

•  Extension packages: •  Service Discovery (document in public comment)‏ •  Checkpoint and Recovery (Migol)‏

•  Python bindings to the C++ available •  User Manual and Programmer's Guide (beta version available)‏

Text

Outline (2)

  Applications Developed Using SAGA:   Replica-Exchange, C02 Sequestration (EnKF)   MapReduce

  Interoperabilty across Grids, Grids-Clouds

  Other SAGA Projects (Advantage of Standards)   Uptake by JSAGA and XtreemOS   Service Discovery (SD) and uptake gLite   DESHL (DEISA) -- Tool or Application?

  Session II: SAGA Hands-on   Using mini-examples, become familiar with the API   A few Application examples   Time to play with the code programmer’s manual

Text

Replica Exchange: Hello Distributed World

•  Task Level Parallelism –  Embarrassingly

distributable! –  Loosely coupled

•  Create replicas of initial configuration

•  Spawn 'N' replicas over different machine

•  Run for time t ; Attempt configuration swap

•  Run for further time t; Repeat till finish

RN

R1 R2 R3

t

hot

300K Exchange attempts

T

t

Text

RE: Programming Requirements

•  RE can be implemented using following “primitives” – Read job description

•  # of processors, replicas, determine resources –  Submit jobs (local and remote)‏

•  Move files, job launch – Checkpoint and re-launch simulations

•  Exchange, RPC (logic to swap or not)‏ •  Implement above using “Grid primitives” provided by SAGA •  Separated “distributed” logic from “simulation” logic

–  Independent of underlying code/engine –  Science kernel is independent of details of distributed resource mgmt –  Need to coordinate resources integrated from Desktop to Supercomputers!!

Scale-Out: Dynamic Execution & Resource Aggregation

Using Multiple Resources Performance Enhancements

Ensemble Kalman Filters Heterogeneous Sub-Tasks

  Ensemble Kalman filters (EnKF), are recursive filters to handle large, noisy data; use the EnKF for history matching and reservoir characterization

  EnKF is a particularly interesting case of irregular, hard-to-predict run time characteristics:

EnKF C02 Sequestration: Data-Driven (Sensor) Distributed HPC

work with Yaakoub El-Khamra (TACC)

Performance Advantage from Scale-Out

But Why does BQP Help?

Text

Irregular Applications

  Many applications have well defined run-time characteristics:   Predictable (static) resource requirements and execution   Most policy, usage scenarios & support tools assume this   True, but not universal!

  Many Applications have irregular runtime characteristics:   Number of simulations (sub-jobs) varies   Variable resource: sub-job memory, wall-clock, px count..

  Class of applications with such characteristics:   GridSAT, learning algorithms, EnKF

  Are such applications supported on “isolated” single machines?   Is this is an application class suited for distributed infrastructure?

Text

Irregular Applications (2)‏

  Irregular resource requirement and availability:   Internal: application specific reasons   External: infrastructure, trajectory-dependence

  Grids are heterogenous and dynamic   Heterogenous due to the typical aggregation model   Dynamic due to changing resource availability & loads

  Hard to predict resource requirement and optimal mapping a priori   How can applications use dynamically determined resources?

  Development, Deployment and Scheduling   Many solutions, as always!

  Logic for adapting is provided at the application level!   Use SAGA to manage run time complexity for real application

  General purpose solution: applicable to different application   Extensible (eg features, type-of-irregularity) and scalable (resources)‏

Forward Vs Reverse Scheduling Adv of Ensemble of Loosely-Coupled

  Distributed Applications: When formulated using Loosely-Coupled Tasks:   Application keeps work ready to be fired, when resource

becomes available (ideal case)   Match resources to computational requirement (Forward)

  Take a workload; find a set of resources   Find a set of resources (first-to-run); tune workload

  Reverse Scheduling: Support for Dynamic Execution of Applications is underlying paradigm

  Late binding to resource and optimal resource configuration (not just resource selection)

  Unbalanced, irregular workload

Text

SAGA for your Distributed Application?

  Should you develop using SAGA or not? (As always) it depends:   Advantages:

  Simple yet powerful API, which supports many:   Applications types, but not all kinds of applications   Programming patterns, models (eg superscalar)‏   Usage modes (eg parameter sweep, task-farming..)‏

  Application are Infrastructure independent   Provides extensibility (eg Condor, fault-tolerance)   Interfaces well with other software (eg BQP)‏

  Disadvantages:   Overhead (trivial IMHO); “script it vs just do it”   Deployment of SAGA is currently non-trivial

  sagalite and work with RP's to ease deployment   Stable & Simple interface, but restricted functional scope

Some Motivation for Interoperabilty (1)

Courtesy: Rob

Grossman Decouple from vertical stack

Decouple from details of resource provisioning (cf: Walker)

Couple horizontal stacks

Application-level Interoperability Cloud-Cloud; Cloud-Grid

  Application-level (ALI) vs. System-level Interoperability (SLI)   Infrastructure Independence is Pre-requisite for ALI

  Programming Model should be Infrastructure & SLA agnostic:

  Same application, priced differently, for same performance   Same application, priced same, for different performance

  Availability zone   VM motion   Data-transfer cost vs. no cost

  Grids AND Clouds:   Hybrid & Heterogeneous workload: data-compute affinity differ   Complex data-flow dependency: need runtime determination

Power of Google’s MapReduce?

  MapReduce an important development but..   Currently tied to infrastructure

  MapReduce + BigTable + GFS or   MapReduce + Hbase + HDFS (Yahoo)

  Limited number of scientific applications that use this simple (though powerful) pattern

  Other patterns?

Is it possible to provide the power of MapReduce and other patterns in an infrastructure independent

SAGA: Role of Adaptors Use over different infrastructure

Controlling Relative Compute-Data Placement

Interoperability

SAGA: Extension to Clouds

  Is the API perfect, that nothing really changes?   Minor change:

  Grids: Job_service() is not coupled to app lifetime   Clouds: Job_service() is coupled to the VM lifetime

  When job_service() terminates, what happens to VM?   When VM terminates, what happens to job_service() ?   Changes to the SAGA Resource Discovery and

Management Package will address these shortcomings

Grids vs Clouds?

  Its not Grids vs. Clouds:   “…..such a good job of understanding parallel programming in the 90’s … very well prepared for multi-core..” (Ken Kennedy)

  Hard problems in distributed applications & computing, e.g., Coordination of dist. Data & computation   These remain, even if we change names..

  Its about (scientific) Applications: HLA & Support for Usage modes -- then Clouds vs. Grids is less critical   Interop of SAGA-MapReduce shows how – once correct abstractions and interfaces are in place -- much of work in easily translates to managing different back-end (adaptors)

Providing Fundamental Distributed Functionality for Applications

  Interop of SAGA-MapReduce shows how – once correct abstractions and interfaces are in place -- much of work in easily translates to managing different back-end (adaptors)

  Its not Grids vs Clouds: How can scientific applications be developed to utilize a broad range of DS, without vendor lock-in, or disruption, yet with the flexibility and performance that scientific applications demand?

  SAGA is the first comprehensive application programming system to attempt to address these issues.

Text

Outline (2)

  Applications Developed Using SAGA:   Replica-Exchange, C02 Sequestration (EnKF)   MapReduce

  Interoperabilty across Grids, Grids-Clouds

  Other SAGA Projects (Advantage of Standards)   Uptake by JSAGA and XtreemOS   Service Discovery (SD) and uptake gLite   DESHL (DEISA) -- Tool or Application?

  Session II: SAGA Hands-on   Using mini-examples, become familiar with the API   A few Application examples   Time to play with the code programmer’s manual

Text

56

http://saga.cct.lsu.edu

Text

SAGA: Other Projects

  XtreemOS   DEISA: Java library

  JRA7 DEISA (UNICORE) files and jobs   JSAGA from IN2P3 (Lyon)

  http://grid.in2p3.fr/jsaga/index.html   SD Specification

  With gLite adaptors   NAREGI, KEK

Advantage of Standards

Text

SAGA XtreemOS

  Challenges:   Linux applications should run with little (no) modifications   Grid applications should run with little (no) modifications   XtreemOS functionality must be provided to applications

Approach:   Use OGF-standardized SAGA API, enabling both Linux apps

(via POSIX semantics) and grid apps   Provide extensions packages to SAGA for XtreemOS

functionality and in the process contribute to standards

CCT: Center for Computation & Technology

Co-evolution of SAGA Standard & the XtreemOS API

(slide courtesy Thilo Kielmann)

Text

Tools as Applications

Text

Text

JSAGA

JSAGA 90

Motivations for using several grid infrastructures •  increasing the number of computing resources available to user •  need for resources with specific constraints

•  super-computer •  confidentiality (e.g. OpenPlast industrial grid) •  small overhead (e.g. consolidation) •  interactivity

•  availability, on a given grid, of: •  the software (license) •  the data

JSAGA 91

JSAGA 92

  Elis@ –  a web portal for submitting jobs to industrial and

research grid infrastructures

  SimExplorer –  a set of tools for managing simulation experiments –  includes a workflow engine that submit jobs to

heterogeneous distributed computing resources   JJS

–  a tool for running efficiently short-life jobs on EGEE

  JUX –  a multi-protocols file browser

JSAGA 93

input data

firew

all

job desc.

gLite plug-ins

Globus plug-ins

job

staging graph

job

OPlast EGEE

JDL RSL

EGEE-III INFSO-RI-222667

Enabling Grids for E-

sciencE

www.eu-egee.org

EGEE and gLite are registered trademarks

An Extension to the SAGA Service Discovery API Antony Wilson (Steve Fisher and Paul Livesey) 4th EGEE Users Forum – Catania 2009

Enabling Grids for E-sciencE

EGEE-III INFSO-RI-222667

Service Discovery API

•  The specification for the Service Discovery has been finalised – GFD.144 –  http://www.ogf.org/documents/GFD.144.pdf –  Loosely based around the gLite Service Discovery –  Uses the GLUE (version 1.3) model of a service

  A Site may host many Services   A Service has multiple Service Data entries   Each Service Data entry is represented by a key and a value

•  APIs in C, C++, Java and Python complete but not releasd

•  Adapter for gLite under development –  Based around GLUE 1.3

  Once GLUE 2 is finalised the adapter will be updated

An Extension to the SAGA Service Discovery API - Catania 2009 95

Enabling Grids for E-sciencE

EGEE-III INFSO-RI-222667

Service Discovery API

•  API allows selection based on three filters: –  serviceFilter – allows filtering on:

  type, name, uid, site, url, implementor and relatedService –  dataFilter – no predefined values

  Uses keys from Service Data entries –  authzFilter – authorization, no predefined values, useful values

include:   vo, dn, group and role (values dependent on adapter)

–  NB if an authzFilter is not provided then one is automatically constructed from the users security context   The gLite adapter will provide the VOMS proxy credentials as the

default value for the security context

•  Each of the filter strings uses SQL92 syntax •  The filters act as if they are part of a WHERE clause

An Extension to the SAGA Service Discovery API - Catania 2009 96

Enabling Grids for E-sciencE

EGEE-III INFSO-RI-222667

Service Discovery

•  Selection returns a list of ServiceDescriptions –  Each description contains:

  type, name, uid, site, url, implementor, list of relatedServices and service data (key value pairs)

•  Example: discoverer = SDFactory.createDiscoverer( ) serviceDescriptions = discoverer.listServices(“type = ‘computing service’”, “”) loop serviceDescriptions description.getAttribute(“name”)

returns the value of the name attribute •  URL of information system can be passed in with the

constructor, or obtained from a conf file

An Extension to the SAGA Service Discovery API - Catania 2009 97

Enabling Grids for E-sciencE

EGEE-III INFSO-RI-222667

Extended Service Discovery API

•  Problem: The service discovery API only gives basic information as it cannot represent the GLUE model in three tables

•  Purpose: To navigate the information model starting from a selected service

•  API will be independent of the underlying information system

•  Different information systems supported by means of adapters –  We will provide a gLite adapter

•  Navigation will be from entity to entity as expressed in the GLUE entity relationship models

An Extension to the SAGA Service Discovery API - Catania 2009 98

Acknowledgements

FundingAgencies:UKEPSRC:DPA,OMII‐UK,OMII‐UKPAL

USNSF:Cybertools,HPCOPS(TeraGrid),GridChem

NIH:LaCATS,INBRE‐LBRN

CCTInternalResources

People:SAGAD&D:HartmutKaiser,OleWeidner,AndreMerzky,JoohyunKim,Lukasz

Lacinski,JoãoAbecasis,ChrisMiceli,BetyRodriguez‐Milla

SpecialUsers:AndreLuckow,Yaakoubel‐Khamra,KateStamou,Cybertools(AbhinavThota,Jeff,N.Kim),OwainKenway

GoogleSoC:MichaelMiceli,SaurabhSehgal,MiklosErdelyi

CollaboratorsandContributors:SteveFisher&Group,ThiloKielman&Co,SylvainRenaud(JSAGA),GoIwai&YoshiyukiWatase(KEK)

SomeRelevantLinks

•  hWp://saga.cct.lsu.edu•  hWp://www.cct.lsu.edu/~sjha/select_publica\ons•  hWp://saga.cct.lsu.edu/projects

(outofdate;tobeupdated)

•  TeraGrid‐DEISAInteroperabiltyProject– hWp://www.teragridforum.org/mediawiki/index.php?\tle=LONI‐TeraGrid‐DEISA_Interoperabilty_Project

Recommended