X-Git-Url: https://git.donarmstrong.com/?p=uiuc_igb_scripts.git;a=blobdiff_plain;f=dqsub;h=1682d058c4871516720932a1a80f29ef2cd447ad;hp=27b8b39c5b43e97a0da442b65e241fd9aa247438;hb=819b503b14406a8509f6ea12a425513b5916d9df;hpb=e6e19e0274ff4ce9fe45ae9debfd5eebd40a5d69 diff --git a/dqsub b/dqsub index 27b8b39..1682d05 100755 --- a/dqsub +++ b/dqsub @@ -31,6 +31,8 @@ dqsub [options] --ppn processors per node to use --mem memory to request --dir Directory to run the script in (default current directory) + --account, -A Account name to use + --join, -J join error and output streams (default) --name, -N Name of the job --debug, -d debugging level (Default 0) --help, -h display this help @@ -60,6 +62,15 @@ command run in the current directory. File to read array arguments from. If not provided, and B<--array> is given, arguments will be read from STDIN. +=item B<--account, -A> + +Account name to use + +=item B<--join, J> + +Whether to join STDOUT and STDERR. On by default; disable with +C<--nojoin>. + =item B<--debug, -d> Debug verbosity. (Default 0) @@ -94,6 +105,7 @@ my %options = (nodes => 1, man => 0, interactive => 0, array_per_job => 1, + join => 1, ); GetOptions(\%options, @@ -106,6 +118,8 @@ GetOptions(\%options, 'array_slot_limit|array-slot-limit=i', 'array_all_in_one_job|array-all-in-one-job!', 'ppn|processors-per-node=i', + 'account|A=s', + 'join|J!', 'mem|memory=s', 'time|walltime=s','cputime|cput=s','host=s', 'pmem|process_mem|process-mem=s', @@ -136,7 +150,10 @@ if ($options{interactive} and @ARGV) { } # pod2usage(join("\n",@USAGE_ERRORS)) if @USAGE_ERRORS; -print STDERR join("\n",@USAGE_ERRORS) and exit 1 if @USAGE_ERRORS; +if (@USAGE_ERRORS) { + print STDERR map {"$_\n"} @USAGE_ERRORS; + exit 1; +} # OK. Generate the options to qsub which we'll be using my @qsub_options = generate_qsub_options(\%options,\@ARGV); @@ -178,6 +195,9 @@ sub generate_qsub_options{ if (defined $options->{ppn}) { $l[$#l] .= ':ppn='.$options->{ppn}; } + if (defined $options->{account}) { + push @qo,'-A',$options->{account}; + } my %l_options = (mem => 'vmem', time => 'walltime', @@ -199,7 +219,13 @@ sub generate_qsub_options{ if ($options->{name}) { push @qo,'-N',$options->{name}; } else { - push @qo,'-N',join('_',@{$args}[0..min($#{$args},2)]); + push @qo,'-N',join('_', + map {my $a = $_; $a =~ s/[^a-zA-Z0-9]*//g; $a;} + @{$args}[0..min($#{$args},2)]); + } + # join error and output streams + if ($options->{join}) { + push @qo,'-j','oe'; } return @qo; } @@ -234,7 +260,7 @@ sub write_qsub_script { my ($opt,$arg,$array) = @_; my $script = "#!/bin/bash\n"; - my $command = join(' ',map {qq('$_')} @{$arg}); + my $command = join(' ',map {$_ =~ /\s/?qq('$_'):$_} @{$arg}); $script .= <