The Simple API for Grid Applications (SAGA)

Similar documents
An Introduction to the Simple API for Grid Applications (SAGA)

SAGA: A Simple API for Grid Applications. High-level application programming on the Grid

Everything you always wanted to know about SAGA*

GROWL Scripts and Web Services

SAGA: A Simple API for Grid Applications High-Level Application Programming on the Grid

A Simple API for Grid Applications (SAGA)

How to build Scientific Gateways with Vine Toolkit and Liferay/GridSphere framework

GSI Online Credential Retrieval Requirements. Jim Basney

DISTRIBUTED SYSTEMS. Second Edition. Andrew S. Tanenbaum Maarten Van Steen. Vrije Universiteit Amsterdam, 7'he Netherlands PEARSON.

Overview Job Management OpenVZ Conclusions. XtreemOS. Surbhi Chitre. IRISA, Rennes, France. July 7, Surbhi Chitre XtreemOS 1 / 55

A RESTful Java Framework for Asynchronous High-Speed Ingest

30 Nov Dec Advanced School in High Performance and GRID Computing Concepts and Applications, ICTP, Trieste, Italy

The Grid Application Toolkit: Toward Generic and Easy Application Programming Interfaces for the Grid

Grid Programming: Concepts and Challenges. Michael Rokitka CSE510B 10/2007

SAGA-Python Documentation

Grid Computing Fall 2005 Lecture 5: Grid Architecture and Globus. Gabrielle Allen

PARALLEL PROGRAM EXECUTION SUPPORT IN THE JGRID SYSTEM

Chapter 10 DISTRIBUTED OBJECT-BASED SYSTEMS

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

Exception Handling Pearson Education, Inc. All rights reserved.

The Grid Application Toolkit: Towards Generic and Easy Application Programming Interfaces for the Grid

Today: Distributed Objects. Distributed Objects

std::async() in C++11 Basic Multithreading

Distributed Systems Principles and Paradigms

Introduction to RPC, Apache Thrift Workshop. Tomasz Powchowicz

VOMS Support, MyProxy Tool and Globus Online Tool in GSISSH-Term Siew Hoon Leong (Cerlane) 23rd October 2013 EGI Webinar

Interprocess Communication

Workflow, Planning and Performance Information, information, information Dr Andrew Stephen M c Gough

Systems Programming. 08. Standard I/O Library. Alexander Holupirek

Gridbus Portlets -- USER GUIDE -- GRIDBUS PORTLETS 1 1. GETTING STARTED 2 2. AUTHENTICATION 3 3. WORKING WITH PROJECTS 4

Using the MyProxy Online Credential Repository

Lecture 5: Object Interaction: RMI and RPC

Michigan Grid Research and Infrastructure Development (MGRID)

Kerberos & HPC Batch systems. Matthieu Hautreux (CEA/DAM/DIF)

Using the vrealize Orchestrator Operations Client. vrealize Orchestrator 7.5

Interoperable job submission and management with GridSAM, JMEA, and UNICORE

IS 0020 Program Design and Software Tools

NODE.JS MOCK TEST NODE.JS MOCK TEST I

SAGA API Extension: Message API

Paul S. Wang. Kent State University

SystemWorker.exec( )

CSE 333 Final Exam June 6, 2017 Sample Solution

Asynchronous Programming

ANGULAR 2.X,4.X + TYPESRCIPT by Sindhu

Distributed Systems. Hajussüsteemid MTAT Distributed File Systems. (slides: adopted from Meelis Roos DS12 course) 1/25

When the Servlet Model Doesn't Serve. Gary Murphy Hilbert Computing, Inc.

DS 2009: middleware. David Evans

Overview of Web Services API

Task Management Service

Redesigning the SEGL Problem Solving Environment: A Case Study of Using Mediator Components

CO Oracle WebLogic Server 12c. Administration II. Summary. Introduction. Prerequisites. Target Audience. Course Content.

GT-OGSA Grid Service Infrastructure

24x7 Scheduler x7 Remote Control ASP Interface Reference

Programming Models for Grid Applications and Systems: Requirements and Approaches

XSEDE Canonical Use Case 4 Interactive Login

CSC209 Review. Yeah! We made it!

The UCSC Java Nanokernel Version 0.2 API

Going Reactive. Reactive Microservices based on Vert.x. JavaLand Kristian Kottke

Introduction to Asynchronous Programming Fall 2014

CSC209: Software tools. Unix files and directories permissions utilities/commands Shell programming quoting wild cards files

CSC209: Software tools. Unix files and directories permissions utilities/commands Shell programming quoting wild cards files. Compiler vs.

DEVELOPER GUIDE PIPELINE PILOT INTEGRATION COLLECTION 2016

This section describes the following provisioning operation use cases:

GEMS: A Fault Tolerant Grid Job Management System

Gatlet - a Grid Portal Framework

Configure the IM and Presence Service

CMSC 330: Organization of Programming Languages

Architecture of the WMS

DRMAA v2 - The Next Generation

CPSC 441 Assignment-3 Discussion. Department of Computer Science University of Calgary

System Workers. 1 of 11

Web Service API. rev Copyright 2017 v

Professor: Ioan Raicu. TA: Wei Tang. Everyone else

Distributed Systems Principles and Paradigms

CERTIFICATION SUCCESS GUIDE ENTERPRISE ARCHITECT FOR JAVA 2 PLATFORM, ENTERPRISE EDITION (J2EE ) TECHNOLOGY

Introduction to the SAGA API

MEAN Stack. 1. Introduction. 2. Foundation a. The Node.js framework b. Installing Node.js c. Using Node.js to execute scripts

The Specification of Project-1

Distributed Systems Principles and Paradigms. Chapter 01: Introduction. Contents. Distributed System: Definition.

Eduardo

Advanced Job Submission on the Grid

Socket 101 Excerpt from Network Programming

Communication Paradigms

CS 351 Week 15. Course Review

Glueing Grids and Clouds together: A Service-Oriented Approach

BlackBerry Enterprise Server for IBM Lotus Domino Version: 5.0. Administration Guide

Cross-platform daemonization tools.

05-01 Discussion Notes

Distributed Systems Principles and Paradigms. Chapter 01: Introduction

Engineering Fault-Tolerant TCP/IP servers using FT-TCP. Dmitrii Zagorodnov University of California San Diego

We recommend you cite the published version. The publisher s URL is:

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Assignment description: This is a C++ project. The comms class containing the

13. Databases on the Web

Connector User s Manual. Jose Melchor Computing and Software Systems, University of Washington, Bothell

Real World Messaging With Apache ActiveMQ. Bruce Snyder 7 Nov 2008 New Orleans, Louisiana

Chapter 8 File Processing

Execo tutorial Grid 5000 school, Grenoble, January 2016

CloudI Integration Framework. Chicago Erlang User Group May 27, 2015

MPICH User s Guide Version Mathematics and Computer Science Division Argonne National Laboratory

Transcription:

The Simple API for Grid Applications (SAGA) Thilo Kielmann Vrije Universiteit, Amsterdam kielmann@cs.vu.nl

A Grid Application Execution Scenario

Functional Properties of a Grid API What applications need to do: Access to compute resources, job spawning and scheduling Access to file and data resources Communication between parallel and distributed processes Application monitoring and steering

Non- functional Properties of a Grid API What else needs to be taken care of: Performance Fault tolerance Security and trust Platform independence

Simple API for Grid Applications (SAGA) SAGA- RG and SAGA- CORE- WG within GGF are working on an upcoming standard for a simple Grid API Design principles: Simplicity (ease of use) Strictly driven by application use cases API defines large part of a programming model for Grid- aware applications

Functionality in SAGA Jobs (submission and management) Files (and logical/ replicated files) Streams (sockets like) Application steering and monitoring Later in SAGA: Workflow (task dependencies) GridRPC (draft exists) GridCPR (input pending from WG) Security (authentication) Error handling Asynchronous operations (tasks)

Example: Reading a Remote File (C+ + ) #include <string> #include <iostream> #include <saga.h> int main () { try { // open a remote file saga::file f ( gsiftp://ftp.university.edu/pub/index ); // read data while ( string s = f.read (100) ) { std::cout << s; catch (saga::exception e) { std::cerr << e.what() << std::endl;

SAGA Files class File { void read (in long len_in, out string buffer, out long len_out ); void write (in long len_in, in string buffer, out long len_out ); void seek (in long offset, in SeekMode whence, out long position ); void readv (inout array<ivec> ivec); void writev (inout array<ivec> ivec); // plus more optimized (bulk) versions (directories left out for brevity)

class LogicalFile { SAGA Replicated Files void addlocation (in name ); void removelocation (in name ); void listlocations (out array<string,1> names ); void replicate (in name ); (directories left out for brevity)

Example: Running a Remote Job (C+ + ) #include <iostream> #include <saga.h> int main() { try{ std::iostream in, out, err; saga::job_service js; saga::job job = js.runjob ( host.university.edu, /bin/date, &in, &out, &err); while ( job.getjobstate()!= saga::job::done && job.getjobstate()!= saga::job::failed ) { std::cout << out; std::cerr << err; catch (saga::exception e){ std::cerr << e.what() << std::endl;

interface Job { SAGA Jobs void get_job_id (out string job_id); void get_state (out state state); void get_job_definition (out job_definition job_def); void get_stdin (out opaque stdin); void get_stdout (out opaque stdout); void get_stderr (out opaque stderr); void suspend (void); void resume (void); void checkpoint (void); void migrate (in job_definition job_def); void terminate (void); void signal (in int signum);

SAGA JobService interface JobService { void create_job (in string res_mgr, in job_definition jobdef, out job job); void run_job (in string res_mgr, in string commandline, out opaque stdin, out opaque stdout, out opaque stderr, out job job); void list (out array<string,1> job_ids); void get_job (in string job_id, out job job); void get_self (out job job);

SAGA Security enum contexttype { GSI = 0, MyProxy = 1, SSH = 2 Kerberos = 3, UserPass = 4, KeyStore = 5 ; interface Context extends all SAGA.Attribute { constructor (in contexttype type); gettype (out contexttype type); Every SAGA object gets a Session with a Context as parameter to its constructor.

SAGA Error Handling Errors are signaled using exceptions 14 SAGA exceptions have been defined

SAGA Tasks Asynchronous operations Bulk (async.) operations Single- threaded implementation support package Task { enum state { Unknown = 1, New = 1, Running = 2, Done = 3, Failed = 4 ;...

Tasks and Containers interface Task { void run (); void wait (in double timeout, out boolean finished); void cancel (); void get_state (out State state); class TaskContainer { void add (in Task task); void remove (in Task task); void run (); void wait (in double timeout, out array<task,1> finished); void cancel (); void get_states (out array<state,1> states); void get_tasks (out array<task,1> tasks);

Instantiating Tasks Have three versions of each operation: Synchronous Asynchronous (start immediately) Task (start explicitly) d.mkdir ("test/"); saga::task t_1 = d.mkdir <sync> ("test/"); // Done saga::task t_2 = d.mkdir <async> ("test/"); // Running saga::task t_3 = d.mkdir <task> ("test/"); // New t_3.run () t_2.wait (); t_3.wait ();

Summary: SAGA Standardize a simple API for Grid applications Driven by user communities API completion Q2/ 2006 Currently nailing down last open issues Implementations: C+ + (SAGA- A) almost complete Java DEISA (Edinburgh): Job and Files OMII- UK: almost complete

Implementing SAGA: dynamically loaded proxies

Conclusions SAGA: Simple API to various Grid systems and middlewares Work in progress: Finalizing API spec Completing implementations Proxies ( adaptors ) wiki.cct.lsu.edu/ saga/ space/ start https:/ / forge.gridforum.org/ projects/ saga- rg/