Skip to content
This repository has been archived by the owner on Jul 15, 2024. It is now read-only.

Commit

Permalink
Basic Implementation... Probably Broken in some way.
Browse files Browse the repository at this point in the history
  • Loading branch information
Bryan J Lunt committed Jun 4, 2013
1 parent 5890cc8 commit 6596e7b
Show file tree
Hide file tree
Showing 7 changed files with 106 additions and 152 deletions.
17 changes: 9 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@

CPP=g++
CC=gcc

CFLAGS=$(shell pbs-config --cflags) -I/usr/lib/jvm/java-1.7.0-openjdk.x86_64/include/ -I/usr/lib/jvm/java-1.7.0-openjdk.x86_64/include/linux
LIBS=$(shell pbs-config --libs) -ldrmaa
LIBS=$(shell pbs-config --libs) -ldrmaa -lstdc++

LIBNAME=lib/libjdrmaa.so

all: clean lib javac

javac: jdrmaa_wrap.c
javac: jdrmaa_wrap.cxx
javac jdrmaa/*.java
javac test/*.java

lib: jdrmaa_wrap.c jdrmaa.i
$(CC) $(CFLAGS) $(LIBS) -fPIC -c jdrmaa_wrap.c
lib: jdrmaa_wrap.cxx jdrmaa.i
$(CPP) $(CFLAGS) $(LIBS) -fPIC -c jdrmaa_wrap.cxx
$(CC) $(LIBS) -shared jdrmaa_wrap.o -o $(LIBNAME)

jdrmaa_wrap.c: jdrmaa.i
swig -java -package jdrmaa -outdir jdrmaa $(CFLAGS) jdrmaa.i
jdrmaa_wrap.cxx: jdrmaa.i
swig -c++ -java -package jdrmaa -outdir jdrmaa $(CFLAGS) jdrmaa.i

clean:
rm -f jdrmaa_wrap.c jdrmaa_wrap.o $(LIBNAME) jdrmaa/* test/*.class
rm -f jdrmaa_wrap.* $(LIBNAME) jdrmaa/* test/*.class
25 changes: 25 additions & 0 deletions constants.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#ifndef STOLEN_CONSTS
#define STOLEN_CONSTS

#define DRMAA_TIMEOUT_NO_WAIT 0
#define DRMAA_TIMEOUT_WAIT_FOREVER -1
#define DRMAA_PS_UNDETERMINED 0x00
#define DRMAA_PS_QUEUED_ACTIVE 0x10
#define DRMAA_PS_SYSTEM_ON_HOLD 0x11
#define DRMAA_PS_USER_ON_HOLD 0x12
#define DRMAA_PS_USER_SYSTEM_ON_HOLD 0x13
#define DRMAA_PS_RUNNING 0x20
#define DRMAA_PS_SYSTEM_SUSPENDED 0x21
#define DRMAA_PS_USER_SUSPENDED 0x22
#define DRMAA_PS_USER_SYSTEM_SUSPENDED 0x23
#define DRMAA_PS_DONE 0x30
#define DRMAA_PS_FAILED 0x40
#define DRMAA_CONTROL_SUSPEND 0
#define DRMAA_CONTROL_RESUME 1
#define DRMAA_CONTROL_HOLD 2
#define DRMAA_CONTROL_RELEASE 3
#define DRMAA_CONTROL_TERMINATE 4
#define DRMAA_JOB_IDS_SESSION_ALL "DRMAA_JOB_IDS_SESSION_ALL"
#define DRMAA_JOB_IDS_SESSION_ANY "DRMAA_JOB_IDS_SESSION_ANY"

#endif
62 changes: 0 additions & 62 deletions drmaa_impl_stolen.h

This file was deleted.

70 changes: 61 additions & 9 deletions jdrmaa.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,63 @@
#include <drmaa.h>


class DRMAA{
public:
static char *get_contact(){
char *contact = (char*)malloc(1024*sizeof(char));
drmaa_get_contact(contact,1024,NULL,0);
return contact;//I bet this memory leaks.
}

static int init(){
return drmaa_init(NULL,NULL,0);
}

static int init(const char *contact){
return drmaa_init(contact,NULL,0);
}

static int exit(){
return drmaa_exit(NULL,0);
}

static void control(const char *job_id, int action){
drmaa_control(job_id,action,NULL,0);
}

static int job_ps(const char *job_id){
int retval;
drmaa_job_ps(job_id, &retval,NULL,0);
return retval;
}

static int synchronize(const char *job_ids[], signed long timeout, int dispose){
return drmaa_synchronize(job_ids,timeout,dispose,NULL,0);
}

//static int wait(const char *job_id
};

#define JOB_ID_SIZE 256
class Job{
public:
char *id;

Job(){
id = (char*)malloc(JOB_ID_SIZE*sizeof(char));
}

~Job(){
free(id);
}

};

class JobTemplate{
private:
drmaa_job_template_t *jt;


public:
JobTemplate(){
drmaa_allocate_job_template(&jt,NULL,0);
}
Expand All @@ -18,13 +73,13 @@ class JobTemplate{
char *get_attribute(const char *name){
int reason;
char *retval;
retval = malloc(1024*sizeof(char));
retval = (char*)malloc(1024*sizeof(char));
reason = drmaa_get_attribute(jt,name,retval,1024,NULL,0);
return retval;
}

int set_vector_attribute(const char *name, const char *value[]){
return drmaa_set_vector_attribute($self,name,value,NULL,0);
return drmaa_set_vector_attribute(jt,name,value,NULL,0);
}

/*
Expand All @@ -35,13 +90,10 @@ class JobTemplate{
* }
* */

char *start(){
Job* start(){
int reason;
char *retval;
retval = malloc(256*sizeof(char));
reason = drmaa_run_job(retval, 256, $self, NULL, 0);
Job *retval = new Job();
reason = drmaa_run_job(retval->id, JOB_ID_SIZE, jt, NULL, 0);
return retval;
}


};
70 changes: 3 additions & 67 deletions jdrmaa.i
Original file line number Diff line number Diff line change
@@ -1,72 +1,8 @@
%module jdrmaa
%include "typemaps.i"
%{
#include "drmaa_impl_stolen.h"
#include <drmaa.h>
#include "jdrmaa.h"
%}



%ignore drmaa_allocate_job_template;
%ignore drmaa_delete_job_template;
%ignore drmaa_set_attribute;
%ignore drmaa_get_attribute;
%ignore drmaa_set_vector_attribute;
%ignore drmaa_get_vector_attribute;
%ignore drmaa_run_job;

%include "drmaa_impl_stolen.h"
%include <drmaa.h>

%extend drmaa_job_template_s {
drmaa_job_template_s(){
drmaa_job_template_t *jt;
drmaa_allocate_job_template(&jt,NULL,0);
return jt;
}

~drmma_job_template_s(){
drmaa_delete_job_template($self,NULL,0);
}

int set_attribute(const char *name, const char *value){
return drmaa_set_attribute($self, name, value, NULL, 0);
}


char *get_attribute(const char *name){
int reason;
char *retval;
retval = malloc(1024*sizeof(char));
reason = drmaa_get_attribute($self,name,retval,1024,NULL,0);
return retval;
}

int set_vector_attribute(const char *name, const char *value[]){
return drmaa_set_vector_attribute($self,name,value,NULL,0);
}

drmaa_attr_values_t *get_vector_attribute(const char *name){
drmaa_attr_values_t *values;
drmaa_get_vector_attribute($self,name,&values,NULL,0);
return values;
}

char *start(){
int reason;
char *retval;
retval = malloc(256*sizeof(char));
reason = drmaa_run_job(retval, 256, $self, NULL, 0);
return retval;
}
};

drmaa_attr_names_t foo_get_attribute_names(){
int reason;
drmaa_attr_names_t *retval;
reason = drmaa_get_attribute_names(&retval,NULL,0);
return retval;
}

%extend drmaa_attr_names_s {
}
%include "jdrmaa.h"
%include "constants.h"
Empty file added lib/.gitignore
Empty file.
14 changes: 8 additions & 6 deletions test/Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@
public class Test {
public static void main(String argv[]) {
System.loadLibrary("jdrmaa");
jdrmaa.drmaa_init(null,null,0);
DRMAA.init();

drmaa_job_template_s myTemplate = new drmaa_job_template_s();
myTemplate.set_attribute("drmaa_remote_command","/tmp/test.sh");
myTemplate.set_attribute("drmaa_job_name","Job Submit from DRMAA");
System.out.println(myTemplate.get_attribute("drmaa_job_name"));
System.out.println(myTemplate.start());
JobTemplate jt = new JobTemplate();
jt.set_attribute("drmaa_remote_command","/tmp/test.sh");
jt.set_attribute("drmaa_job_name","Job Submit from DRMAA");
System.out.println(jt.get_attribute("drmaa_job_name"));
Job newJob = jt.start();
System.out.println(newJob.getId());

DRMAA.exit();
//System.out.println(example.getMy_variable());
//System.out.println(example.fact(5));
//System.out.println(example.get_time());
Expand Down

0 comments on commit 6596e7b

Please sign in to comment.