HPCCommunity.org
 
Register

Go Back   HPC Community - High Performance Computing (HPC) Community > LSF Community > Simple API for Grid Applications (SAGA)

Simple API for Grid Applications (SAGA) Discussions about using and implementing the SAGA standard with LSF

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old October 26th, 2008, 09:08 PM
Junior Member
 
Join Date: October 24th, 2008
Location: USA
Posts: 3
Default SAGA LSF Adaptor - Introduction & Status Report

Hi everybody,

my name is Ole and I'm the developer of the Platform LSF adaptor for SAGA - the Simple API for Grid Applications. I'd like to give you a quick introduction and status report.

SAGA is an open standard defined and maintained by the Open Grid Forum that describes an interface for high-level Grid application programming. Me and my colleagues at the Center for Computation & Technology are working on the C++ reference implementation of the SAGA standard as well as various middleware adaptors (including GT4, Condor, GridSAM and of course LSF). You can find out more about SAGA here.

The Platform LSF adaptor is currently in a usable state but it is not yet complete. It operates on top of the LSF command line tools and implements basic functionality for job submission, control and monitoring. Let me give you some simple C++ code examples to show you what is already possible with the LSF adaptor and how easy it is to interact with LSF programatically through SAGA:

First, let's start with the probably most common task - submitting a job to LSF:

Code:
using namespace saga::job;
        
saga::url js_url("lsf://localhost");
saga::job::service js (js_url);
    
saga::job::description jd;
jd.set_attribute (attributes::description_executable, "/bin/sleep");
jd.set_attribute (attributes::description_queue, "SHORT");
jd.set_attribute (attributes::description_job_contact, "oweidner@localhost");

saga::job::job j1 = js.create_job (jd);
j1.run ();

std::cout << "Job ID: " << j1.get_job_id() << std::endl;
The few lines of code submit a job to the LSF server running on "localhost" using the "SHORT" queue. The output will look like this:

Code:
Job ID: [lsf://cn01/]-[117223]
Now you might want to query the job for its status. That's quite easy as well:

Code:
saga::url js_url("lsf://localhost");
saga::job::service js (js_url);

saga::job::job job = js.get_job("[lsf://cn01/]-[117223]");
std::cout << job_id << ": "
          << saga::job::detail::get_state_name(job.get_state())
          << std::endl;
The output might look like this:
Code:
[lsf://cn01/]-[117224]: Running
Another thing you can already do is getting a list of all jobs and their states known to the LSF server:

Code:
using namespace saga::job;

saga::url js_url("lsf://localhost");

saga::job::service js (js_url);
std::vector<std::string> job_ids =js.list();

for(int i=0; i < job_ids.size(); ++i)
{
    saga::job::job j = js.get_job(job_ids[i]);
    std::cout  << j.get_job_id() <<" : "
               << j.get_state()) << std::endl;
}
Here's the output on my local machine:

Code:
[lsf://cn01/]-[117212] : 2
[lsf://cn01/]-[117218] : 2
[lsf://cn01/]-[116921] : 6
[lsf://cn01/]-[117100] : 2
[lsf://cn01/]-[117068] : 2
[lsf://cn01/]-[117090] : 2
[lsf://cn01/]-[117180] : 2
[lsf://cn01/]-[116968] : 2
[lsf://cn01/]-[116969] : 2
[lsf://cn01/]-[117066] : 2
I hope that gives you a first idea how SAGA works. We're planning to have a first production version of the LSF adaptor in our upcoming 1.1 release which will be available at SAGA :: A Simple API for Grid Applications - HOME. It should be available right before Supercomputing 2008 - around November, 15th.

BTW: We're at boot 596 if you want to stop by ;-)

Regards,

Ole

Last edited by oweidner; October 27th, 2008 at 04:14 PM..
Reply With Quote
  #2 (permalink)  
Old October 28th, 2008, 04:03 PM
csmith's Avatar
Junior Member
 
Join Date: March 20th, 2008
Posts: 14
Blog Entries: 7
Default

This is great! I'll definitely be coming by to see the demo at SC08.

Since LSF doesn't provide any real file management capability, what do the file-related packages of the SAGA library map to? Is there some simple functionality provided by default in the SAGA library?
Reply With Quote
  #3 (permalink)  
Old October 28th, 2008, 05:15 PM
Junior Member
 
Join Date: October 24th, 2008
Location: USA
Posts: 3
Default

Quote:
Originally Posted by csmith View Post
This is great! I'll definitely be coming by to see the demo at SC08.

Since LSF doesn't provide any real file management capability, what do the file-related packages of the SAGA library map to? Is there some simple functionality provided by default in the SAGA library?
SAGA comes with two bindings for the file package right now:

(1) The 'local' file adaptor which can access local files and directories using the Boost::Filesystem library (platform independent).

(2) The Globus GridFTP adaptor which supports remote and third-party file transfer using the GridFTP protocol and security context.

How do you usually transfer files from/to a remote LSF cluster in the "Platform world"?
Reply With Quote
  #4 (permalink)  
Old October 28th, 2008, 06:03 PM
csmith's Avatar
Junior Member
 
Join Date: March 20th, 2008
Posts: 14
Blog Entries: 7
Default

ssh/scp is a very typical way of moving files around.
Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Forum Jump


All times are GMT. The time now is 08:51 PM.


Powered by vBulletin® Version 3.8.0 Release Candidate 1
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.