Goals
Implementation of DRMAAv2 Specification
Background and strategic fit
The Distributed Resource Management Application API Version 2 (DRMAA) specification defines an interface for tightly coupled, but still portable access to the majority of DRM systems. PBS is Distributed Resource Management system(DRMS). Standardized access to PBS product through a DRMAAv2 implementation(API). High-level API designers, meta-scheduler architects and end users can rely on DRMAAv2 implementations for a unified access to execution resources.
DRMAAv2 Specification
https://www.ogf.org/documents/GFD.231.pdf
Assumptions
Requirements
# | Title | User Story | Importance | Notes |
---|---|---|---|---|
1 | Control and monitoring of Jobs | |||
2 | Control and monitoring of Job arrays | |||
3 | Control and monitoring of Reservations | |||
4 | Control and monitoring of Nodes | |||
5 | Control and monitoring of Queues | |||
6 | Asynchronous event notification to DRMAAv2 application | |||
7 | Re-entrancy support for the DRMAAv2 API | |||
8 | Support for Autotools build infrastructure | |||
9 | Support for RPM package | |||
10 | Support for unit testing(White-box) using cppunit framework | |||
11 | Support for unit testing(black-box) |
Sample Example
Example
drmaa2_jsession js; /* Job session object*/ drmaa2_jtemplate jt; /* Job session template*/ drmaa2_j j; /* Job object*/ ... ... ... /* Create and open job session */ js = drmaa2_create_jsession("testsession", DRMAA2_UNSET_STRING); if (js == NULL) { ... return; } ... ... ... /* Create job template */ jt = drmaa2_jtemplate_create(); jt->remoteCommand = strdup("/bin/date"); j = drmaa2_jsession_run_job(js, jt); ... ... drmaa2_j_wait_terminated(j, DRMAA2_INFINITE_TIME); drmaa2_jtemplate_free(&jt); drmaa2_destroy_jsession("testsession"); ... ... ... drmaa2_j_free(&j); drmaa2_jsession_free(&js); ... ... ...
Architecture and design
Application stack
<<Image>
Internal architecture
<<Image>
Directory structure
/drmaa2 The entire DRMAA2 module.
| -- configure.ac This file dictates the behavior of the final configure script that is generated by Autoconf.
| -- INSTALL Instructions for successful compilation of this library.
| -- autogen.sh This file provides automatic build system preparation and is useful for projects that use the GNU autotools.
| -- AUTHORS Altair authors information
| -- ChangeLog Delta change information
| -- COPYING Altair Copyright information
| -- NEWS Latest news and updates
| -- README README
| -- /api This directory contains all the function prototypes and definitions included in this API.
| | -- drmaa2.cpp
| | -- drmaa2.h
| -- /src The C++ interface definition
| -- /inc The header files required by the source code.
| -- /m4 The GNU m4 macros that are called by configure.ac.
| -- /doc The documentation generated by the Doxygen tool.
| -- /man Man pages
| -- /libdrmaa2 Autoconf and libtool specification to create library.
| -- /unittesting The code for the unit testing library of C++, called CppUnit.
| | -- /src
| | -- /inc
Dependent packages
cppunit, doxygen, PBSPro,
Questions
Question | Outcome |
---|---|