--ppn processors per node to use
--mem memory to request
--dir Directory to run the script in (default current directory)
+ --name, -N Name of the job
--debug, -d debugging level (Default 0)
--help, -h display this help
--man, -m display manual
use IO::File;
use Cwd qw(getcwd abs_path);
use POSIX qw(ceil);
+use List::Util qw(min);
use vars qw($DEBUG);
my %options = (nodes => 1,
'array_all_in_one_job|array-all-in-one-job!',
'ppn|processors-per-node=i',
'mem|memory=s',
+ 'time|walltime=s','cputime|cput=s','host=s',
+ 'pmem|process_mem|process-mem=s',
+ 'pvmem|process_virtual_mem|process-virtiual-mem=s',
+ 'max_file|max-file|file=s',
'dir=s',
+ 'name=s',
'debug|d+','help|h|?','man|m');
# pod2usage() if $options{help};
print STDERR join("\n",@USAGE_ERRORS) and exit 1 if @USAGE_ERRORS;
# OK. Generate the options to qsub which we'll be using
-my @qsub_options = generate_qsub_options(\%options);
+my @qsub_options = generate_qsub_options(\%options,\@ARGV);
if ($options{interactive}) {
print STDERR 'running: qsub '.join(' ',@qsub_options) if $DEBUG;
}
sub generate_qsub_options{
- my ($options) = @_;
+ my ($options,$args) = @_;
my @qo;
if (defined $options->{queue} and length $options->{queue}) {
push @qo,'-q',$options->{queue};
if (defined $options->{ppn}) {
$l[$#l] .= ':ppn='.$options->{ppn};
}
- if ($options->{mem}) {
- push @l,'mem='.$options->{mem};
+ my %l_options =
+ (mem => 'vmem',
+ time => 'walltime',
+ cputime => 'cput',
+ host => 'host',
+ pmem => 'pmem',
+ pvmem => 'pvmem',
+ max_file => 'file',
+ );
+ for my $k (keys %l_options) {
+ if ($options->{$k}) {
+ push @l,$l_options{$k}.'='.$options{$k};
+ }
}
push @qo,'-l',join(',',@l) if @l;
if ($options->{interactive}) {
push @qo,'-I';
}
+ if ($options->{name}) {
+ push @qo,'-N',$options->{name};
+ } else {
+ push @qo,'-N',join('_',@{$args}[0..min($#{$args},2)]);
+ }
return @qo;
}