Congreso Cuidad, Spain May 15, 2007 GridWay 1/27, Programming with the DRMAA OGF Standard GridWay Distributed Systems Architecture Group Universidad Complutense.

Slides:



Advertisements
Similar presentations
Lecture 3 Some commonly used C programming tricks. The system command Project No. 1: A warm-up project.
Advertisements

1/22 Distributed Systems Architecture Research Group Universidad Complutense de Madrid Constantino Vázquez Eduardo Huedo Scaling DRMAA codes to the Grid:
Distributed Systems Architecture Research Group Universidad Complutense de Madrid EGEE UF4/OGF25 Catania, Italy March 2 nd, 2009 State and Future Plans.
Chapter 17 Templates. Generic Algorithms Algorithms in which the actions or steps are defined, but the data types of the items being manipulated are not.
CS Lecture 4 Programming with Posix Threads and Java Threads George Mason University Fall 2009.
Chapter 7 Process Environment Chien-Chung Shen CIS, UD
Memory allocation CSE 2451 Matt Boggus. sizeof The sizeof unary operator will return the number of bytes reserved for a variable or data type. Determine:
6/10/2015C++ for Java Programmers1 Pointers and References Timothy Budd.
Session 1 CS-240 Data Structures Binghamton University Dick Steflik.
CS-341 Dick Steflik Introduction. C++ General purpose programming language A superset of C (except for minor details) provides new flexible ways for defining.
1 Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation –The new operator –The delete operator –Dynamic.
Massive Ray Tracing in Fusion Plasmas on EGEE J.L. Vázquez-Poletti, E. Huedo, R.S. Montero and I.M. Llorente Distributed Systems Architecture Group Universidad.
Process Control. Major Requirements of an Operating System Interleave the execution of several processes to maximize processor utilization while providing.
POSIX: Files Introduction to Operating Systems: Discussion 1 Read Solaris System Interface Guide: Ch. 5.1 Basic File I/O.
C++ / G4MICE Course Session 3 Introduction to Classes Pointers and References Makefiles Standard Template Library.
Java and C++, The Difference An introduction Unit - 00.
© iPerimeter Ltd Unix and IBM i  AIX and Linux run natively on Power Systems  IBM i can do Unix type things in two ways:  Posix/QShell  Ordinary.
Advanced UNIX progamming Fall 2002 Instructor: Ashok Srinivasan Lecture 5 Acknowledgements: The syllabus and power point presentations are modified versions.
The gLite API – PART I Giuseppe LA ROCCA INFN Catania ACGRID-II School 2-14 November 2009 Kuala Lumpur - Malaysia.
Today’s Topics Introducing process: the basic mechanism for concurrent programming –Process management related system calls Process creation Process termination.
Thread Synchronization with Semaphores
3-2.1 Topics Grid Computing Meta-schedulers –Condor-G –Gridway Distributed Resource Management Application (DRMAA) © 2010 B. Wilkinson/Clayton Ferner.
Chapter 0.2 – Pointers and Memory. Type Specifiers  const  may be initialised but not used in any subsequent assignment  common and useful  volatile.
Stuart Wakefield Imperial College London Evolution of BOSS, a tool for job submission and tracking W. Bacchi, G. Codispoti, C. Grandi, INFN Bologna D.
CIS-165 C++ Programming I CIS-165 C++ Programming I Bergen Community College Prof. Faisal Aljamal.
ECE556 Project Part 1 Azadeh Davoodi Spring 2015.
Character Arrays Based on the original work by Dr. Roger deBry Version 1.0.
Dynamic memory allocation and Pointers Lecture 4.
The GridWay Metascheduler Constantino Vázquez and Eduardo Huedo dsa-research.org Open Grid Forum 22 Boston, February 27, 2008.
Copyright 2005, The Ohio State University 1 Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation.
Operating Systems Process Creation
12/22/ Thread Model for Realizing Concurrency B. Ramamurthy.
C++ / G4MICE Course Session 1 - Introduction Edit text files in a UNIX environment. Use the g++ compiler to compile a single C++ file. Understand the C++
CS415 C++ Programming Takamitsu Kawai x4212 G11 CERC building WV Virtual Environments Lab West Virginia University.
Recitation 7 Collections. Array List and Linked List Array List and Linked List are implementations of the same interface: List. As a result, they have.
An Introduction to MPI (message passing interface)
Process Management Azzam Mourad COEN 346.
 2008 Pearson Education, Inc. All rights reserved. 1 Arrays and Vectors.
Pointers in C++. Topics Covered  Introduction to Pointers  Pointers and arrays  Character Pointers, Arrays and Strings  Examples.
Variables and memory addresses
Strings Jarret Raim C Strings Same as arrays of characters. Use pointers. Require static declarations (compile time). No bounds checking. No easy.
EGEE-III INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Programming with the DRMAA OGF Standard.
PROGRAMMING 1 – HELPER INSTRUCTIONS ACKNOWLEDGEMENT: THE SLIDES ARE PREPARED FROM SLIDES PROVIDED BY NANCY M. AMATO AND JORY DENNY 1.
Pointers 1. Introduction Declaring pointer variables Pointer operators Pointer arithmetic 2 Topics to be Covered.
Announcements You will receive your scores back for Assignment 2 this week. You will have an opportunity to correct your code and resubmit it for partial.
C is a high level language (HLL)
ROP Exploit. ROP Return Oriented Programming (ROP): is a hacking exploit technique where you exploit buffer overflow to inject a chain of gadgets. Each.
C Programming Day 2. 2 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/LA07/003 Version No. 1.0 Union –mechanism to create user defined data types.
Process Related System Calls By Neha Hulkoti & Kavya Bhat.
Current Assignments Project 3 has been posted, due next Tuesday. Write a contact manager. Homework 6 will be posted this afternoon and will be due Friday.
Congreso Cuidad, Spain May 15, 2007 GridWay 1/28, Installation and Basic Configuration GridWay Distributed Systems Architecture Group Universidad Complutense.
C++ REVIEW – TEMPLATES. GENERIC PROGRAMMING Programming/developing algorithms with the abstraction of types Algorithms/data is expressed “without type”
1 An unattended, fault-tolerant approach for the execution of distributed applications Manuel Rodríguez-Pascual, Rafael Mayo-García CIEMAT Madrid, Spain.
Congreso Cuidad, Spain May 15, 2007 GridWay 1/38, Submission, Monitoring and Control of Jobs GridWay Distributed Systems Architecture Group Universidad.
Operating Systems and Middleware Group Hasso – Plattner – Institute, University of Potsdam, Germany DRMAA 1.0.NET Language Mapping Dipl. Inf. Peter Tröger.
Chapter 7 Process Environment Chien-Chung Shen CIS/UD
GGF10 DRMAA Working Group Hrabri Rajic Intel GGF10 Berlin, Germany March, 2004 GLOBALGRIDFORUM.ORG.
GridWay Overview John-Paul Robinson University of Alabama at Birmingham SURAgrid All-Hands Meeting Washington, D.C. March 15, 2007.
Tutorial 4. In this tutorial session we’ll see Threads.
STACKS & QUEUES for CLASS XII ( C++).
Lesson One – Creating a thread
Advanced UNIX progamming
Systems Programming 3rd laboratory Test_driven Development
Pointers and References
Vectors.
CS212: Object Oriented Analysis and Design
PTHREADS AND SEMAPHORES
7. 11 Introduction to C++ Standard Library Class Template vector (Cont
Introduction to Static Analyzer
Tutorial 4.
Presentation transcript:

Congreso Cuidad, Spain May 15, 2007 GridWay 1/27, Programming with the DRMAA OGF Standard GridWay Distributed Systems Architecture Group Universidad Complutense de Madrid

2/27 GridWay DSA Group GridWay DSA Group Contents 1.Introduction 2.Program Structure and Compilation 3.DRMAA Sessions 4.Template Creation 5.Job Submission 6.Job Status and Control 7.Job Arrays

3/27 GridWay DSA Group GridWay DSA Group Introduction  Distributed Resource Management Application API   Open Grid Forum Standard  Homogeneous interface to different Distributed Resource Managers (DRM):  SGE  Condor  PBS/Torque  GridWay  C  JAVA  Perl (coming soon!)  Ruby (coming soon!)  Python (coming soon!) What is DRMAA?

4/27 GridWay DSA Group GridWay DSA Group Introduction Application Profiles

5/27 GridWay DSA Group GridWay DSA Group Contents 1.Introduction 2.Program Structure and Compilation 3.DRMAA Sessions 4.Template Creation 5.Job Submission 6.Job Status and Control 7.Job Arrays

6/27 GridWay DSA Group GridWay DSA Group Program Structure and Compilation  Include the DRMAA library:  Verify the following environment variable (.bashrc):  Include the compiling and linking options for DRMAA:  Example: #include “drmaa.h” export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GW_LOCATION/lib/ -L $GW_LOCATION/lib -I $G_LOCATION/include -ldrmaa gcc example.c -L $GW_LOCATION/lib \ -I $GW_LOCATION/include -ldrmaa -o example

7/27 GridWay DSA Group GridWay DSA Group Contents 1.Introduction 2.Program Structure and Compilation 3.DRMAA Sessions 4.Template Creation 5.Job Submission 6.Job Status and Control 7.Job Arrays

8/27 GridWay DSA Group GridWay DSA Group DRMAA Sessions and Template Creation Parameters: contact: Must be NULL for GridWay error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns: DRMAA_ERRNO_SUCCESS DRMAA_ERRNO_DRM_COMMUNICATION_FAILURE DRMAA_ERRNO_INVALID_CONTACT_STRING DRMAA_ERRNO_ALREADY_ACTIVE_SESSION Session Initialize int drmaa_init (const char *contact, char *error_diagnosis, size_t error_diag_len)‏

9/27 GridWay DSA Group GridWay DSA Group DRMAA Sessions and Template Creation Parameters: error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns: DRMAA_ERRNO_SUCCESS DRMAA_ERRNO_NO_ACTIVE_SESSION Other functions: drmaa_get_contact - gives more information and uses the following: –drmaa_version –drmaa_get_DRM_system –drmaa_get_DRMAA_implementation Session Finalize int drmaa_exit (char *error_diagnosis, size_t error_diag_len)‏

10/27 GridWay DSA Group GridWay DSA Group Contents 1.Introduction 2.Program Structure and Compilation 3.DRMAA Sessions 4.Template Creation 5.Job Submission 6.Job Status and Control 7.Job Arrays

11/27 GridWay DSA Group GridWay DSA Group Parameters: jt: Pointer to Job Template error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns: DRMAA_ERRNO_SUCCESS DRMAA_ERRNO_DRM_COMMUNICATION_FAILURE DRMAA_ERRNO_INVALID_CONTACT_STRING DRMAA_ERRNO_ALREADY_ACTIVE_SESSION Job Template assignation int drmaa_allocate_job_template (drmaa_job_template_t **jt, char *error_diagnosis, size_t error_diag_len) Template Creation

12/27 GridWay DSA Group GridWay DSA Group Template Creation Parameters: jt: Pointer to Job Template name: Attribute name value: Attribute value error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns: DRMAA_ERRNO_SUCCESS DRMAA_ERRNO_INVALID_ARGUMENT DRMAA_ERRNO_NO_MEMORY DRMAA_ERRNO_NO_ACTIVE_SESSION Set scalar attribute int drmaa_set_attribute (drmaa_job_template_t *jt, const char *name, const char *value, char *error_diagnosis, size_t error_diag_len)‏

13/27 GridWay DSA Group GridWay DSA Group Template Creation Parameters: jt: Pointer to Job Template name: Attribute name value: Attribute value error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns: DRMAA_ERRNO_SUCCESS DRMAA_ERRNO_INVALID_ARGUMENT DRMAA_ERRNO_NO_MEMORY DRMAA_ERRNO_NO_ACTIVE_SESSION Set vector attribute (i.e. string with executable arguments)‏ int drmaa_set_vector_attribute (drmaa_job_template_t *jt, const char *name, const char *value[], char *error_diagnosis, size_t error_diag_len)‏

14/27 GridWay DSA Group GridWay DSA Group Contents 1.Introduction 2.Program Structure and Compilation 3.DRMAA Sessions 4.Template Creation 5.Job Submission 6.Job Status and Control 7.Job Arrays

15/27 GridWay DSA Group GridWay DSA Group Job Submission Parameters: jobid: Job ID assigned by GridWay job_id_len: Job ID buffer size jt: Pointer to Job Template error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns: DRMAA_ERRNO_SUCCESS DRMAA_ERRNO_INTERNAL_ERROR DRMAA_ERRNO_DRM_COMMUNICATION_FAILURE DRMAA_ERRNO_TRY_LATER DRMAA_ERRNO_NO_ACTIVE_SESSION Simple job submission int drmaa_run_job (char *job_id, size_t job_id_len, drmaa_job_template_t *jt, char *error_diagnosis, size_t error_diag_len)‏

16/27 GridWay DSA Group GridWay DSA Group Job Submission Parameters:  jobid: Job ID assigned by GridWay  job_id_out: Done Job ID  job_id_out_len: job_id_out buffer size  stat: job_id_out exit code  timeout: DRMAA_TIMEOUT_WAIT_FOREVER, DRMAA_TIMEOUT_NO_WAIT or n_seconds  rusage: Where remote resource usage values will be stored  error_diagnosis: Buffer where error will be stored  error_diag_len: Error buffer size Returns:  DRMAA_ERRNO_SUCCESS  DRMAA_ERRNO_INVALID_ARGUMENT  DRMAA_ERRNO_INVALID_JOB  DRMAA_ERRNO_DRM_COMMUNICATION_FAILURE  DRMAA_ERRNO_NO_RUSAGE Wait for job execution int drmaa_wait (const char *job_id, char *job_id_out, size_t job_id_out_len, int *stat, signed long timeout, drmaa_attr_values_t **rusage, char *error_diagnosis, size_t error_diag_len)

17/27 GridWay DSA Group GridWay DSA Group Job Submission Parameters: exit_status: Where the exit code will be stored stat: Status code of a done job error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns: DRMAA_ERRNO_SUCCESS DRMAA_ERRNO_NO_ACTIVE_SESSION Get exit code int drmaa_wexitstatus (int *exit_status, int stat, char *error_diagnosis, size_t error_diag_len)

18/27 GridWay DSA Group GridWay DSA Group Job Submission Parameters: values: Value list value: Actual value name value_len: Actual value size Returns: DRMAA_ERRNO_SUCCESS DRMAA_INVALID_ARGUMENT DRMAA_ERRNO_NO_ACTIVE_SESSION DRMAA_ERRNO_NO_MORE_ELEMENTS NOTE: Values must be released with drmaa_release_attr_values Get remote use stats int drmaa_get_next_attr_name (drmaa_attr_names_t *values, char *value, size_t value_len‏

19/27 GridWay DSA Group GridWay DSA Group Job Submission Parameters: jt: Pointer to Job Template error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns: DRMAA_ERRNO_SUCCESS DRMAA_ERRNO_NO_ACTIVE_SESSION Delete Job Template int drmaa_delete_job_template (drmaa_job_template_t *jt, char *error_diagnosis, size_t error_diag_len)‏

20/27 GridWay DSA Group GridWay DSA Group Contents 1.Introduction 2.Program Structure and Compilation 3.DRMAA Sessions 4.Template Creation 5.Job Submission 6.Job Status and Control 7.Job Arrays

21/27 GridWay DSA Group GridWay DSA Group Job Status Control Parameters: job_id: Job ID remote_ps: Actual job status error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns: DRMAA_ERRNO_SUCCESS DRMAA_ERRNO_INTERNAL_ERROR DRMAA_ERRNO_DRM_COMMUNICATION_FAILURE DRMAA_ERRNO_INVALID_JOB DRMAA_ERRNO_NO_ACTIVE_SESSION Translation of remote_ps: const char * drmaa_gw_status (int drmaa_state)‏ Get Job Status int drmaa_job_ps (const char *job_id, int *remote_ps, char *error_diagnosis, size_t error_diag_len)‏ remote_ps values:  DRMAA_PS_QUEUED_ACTIVE  DRMAA_PS_RUNNING  DRMAA_PS_USER_ON_HOLD  DRMAA_PS_DONE  DRMAA_PS_FAILED  DRMAA_PS_UNDETERMINED

22/27 GridWay DSA Group GridWay DSA Group Job Status Control Parameters: job_ids[]: Job ID list (ends with NULL)‏ timeout: Max waiting time dispose: Kill (1) or not (0) the job error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns: DRMAA_ERRNO_SUCCESS DRMAA_ERRNO_INVALID_ARGUMENT DRMAA_ERRNO_INVALID_JOB DRMAA_ERRNO_DRM_COMMUNICATION_FAILURE DRMAA_ERRNO_NO_ACTIVE_SESSION Wait Job Finalization int drmaa_synchronize (const char *job_ids[], signed long timeout, int dispose, char *error_diagnosis, size_t error_diag_len)‏

23/27 GridWay DSA Group GridWay DSA Group Job Status Control Parameters: job_id: Job ID action: Control signal error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns:  DRMAA_ERRNO_SUCCESS  DRMAA_ERRNO_INTERNAL_ERROR  DRMAA_ERRNO_DRM_COMMUNICATION_FAILURE  DRMAA_ERRNO_NO_ACTIVE_SESSION  DRMAA_ERRNO_INVALID_ARGUMENT  DRMAA_ERRNO_INVALID_JOB  DRMAA_ERRNO_HOLD_INCONSISTENT_STATE  DRMAA_ERRNO_RELEASE_INCONSISTENT_STATE  DRMAA_ERRNO_RESUME_INCONSISTENT_STATE  DRMAA_ERRNO_SUSPEND_INCONSISTENT_STATE Get Job Status int drmaa_control (const char *jobid, int action, char *error_diagnosis, size_t error_diag_len)‏ Actions:  DRMAA_CONTROL_SUSPEND  DRMAA_CONTROL_RESUME  DRMAA_CONTROL_TERMINATE  DRMAA_CONTROL_HOLD  DRMAA_CONTROL_RELEASE

24/27 GridWay DSA Group GridWay DSA Group Contents 1.Introduction 2.Program Structure and Compilation 3.DRMAA Sessions 4.Template Creation 5.Job Submission 6.Job Status and Control 7.Job Arrays

25/27 GridWay DSA Group GridWay DSA Group Job Arrays Parameters: jobids: Vector where Job IDs will be stored jt: Pointer to Job Template start: First job index end: Last job index incr: Increment used for obtaining job total number (GridWay uses 1)‏ error_diagnosis: Buffer where error will be stored error_diag_len: Error buffer size Returns:  DRMAA_ERRNO_SUCCESS  DRMAA_ERRNO_INTERNAL_ERROR  DRMAA_ERRNO_DRM_COMMUNICATION_FAILURE  DRMAA_ERRNO_TRY_LATER  DRMAA_ERRNO_NO_ACTIVE_SESSION  DRMAA_ERRNO_NO_MEMORY Submit Job Array int drmaa_run_bulk_jobs (drmaa_job_ids_t **jobids, drmaa_job_template_t *jt, int start, int end, int incr, char *error_diagnosis, size_t error_diag_len)‏

26/27 GridWay DSA Group GridWay DSA Group Job Arrays Parameters: values: Job ID list value: Actual Job ID value_len: Actual Job ID size Returns: DRMAA_ERRNO_SUCCESS DRMAA_ERRNO_INVALID_ARGUMENT DRMAA_ERRNO_NO_ACTIVE_SESSION DRMAA_ERRNO_NO_MORE_ELEMENTS Obtain Next Job ID int drmaa_get_next_job_id (drmaa_job_ids_t *values, char *value, size_t value_len)‏

27/27 GridWay DSA Group GridWay DSA Group Thank you for your attention! Programming with the DRMAA OGF Standard