X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dqsub;h=c0696c17a4ea4164cd34243b676240343e0b767e;hb=9097cdad18f9e0a2a4e3dd677bccd0e09d1478a4;hp=fe95bba7f4279b5bc4cdb89f54da3761ba72a17f;hpb=8114b121daa2edbaf38bef1aaed2f5fe4fd028c2;p=uiuc_igb_scripts.git diff --git a/dqsub b/dqsub index fe95bba..c0696c1 100755 --- a/dqsub +++ b/dqsub @@ -34,6 +34,7 @@ dqsub [options] --account, -A Account name to use --join, -J join error and output streams (default) --name, -N Name of the job + --precommand Optional command to run before each command --debug, -d debugging level (Default 0) --help, -h display this help --man, -m display manual @@ -131,6 +132,7 @@ GetOptions(\%options, 'pmem|process_mem|process-mem=s', 'pvmem|process_virtual_mem|process-virtiual-mem=s', 'max_file|max-file|file=s', + 'precommand|pre-command|pre_command=s', 'dir=s', 'name=s', 'debug|d+','help|h|?','man|m'); @@ -156,8 +158,8 @@ if ($options{interactive} and @ARGV) { } if (not defined $options{batch}) { - qx/which sbatch/; - if ($?) { + qx{which sbatch >/dev/null 2>&1}; + if ($? == 0) { $options{batch} = 'slurm' } else { $options{batch} = 'pbs' @@ -191,8 +193,13 @@ if ($options{batch} eq 'pbs') { if ($options{interactive}) { - print STDERR 'running: qsub '.join(' ',@qsub_options) if $DEBUG; - exec($JOB_SUBMITTER,@qsub_options); + print STDERR 'running: '.$JOB_SUBMITTER.' '.join(' ',@qsub_options) if $DEBUG; + if ($options{batch} eq 'pbs') { + exec($JOB_SUBMITTER,@qsub_options); + } else { + exec('srun',@qsub_options,$ENV{SHELL}//'bash'); + } + } else { my @array = (); if ($options{array}) { @@ -201,7 +208,12 @@ if ($options{interactive}) { if ($options{array_all_in_one_job}) { $options{array_per_job} = scalar @array; } else { - push @qsub_options,'-t','1-'. ceil(scalar @array / $options{array_per_job}); + if ($options{batch} eq 'pbs') { + push @qsub_options,'-t'; + } else { + push @qsub_options,'-a'; + } + push @qsub_options,'1-'. ceil(scalar @array / $options{array_per_job}); if ($options{array_slot_limit}) { $qsub_options[$#qsub_options] .= '%'.$options{array_slot_limit}; } @@ -260,7 +272,7 @@ sub generate_qsub_options{ return @qo; } -sub generate_slrum_options{ +sub generate_slurm_options{ my ($options,$args) = @_; my @qo; if (defined $options->{queue} and length $options->{queue}) { @@ -282,14 +294,14 @@ sub generate_slrum_options{ ); for my $k (keys %options_map) { if ($options->{$k}) { - push @qo,'--'.$options_map{$k}.'=',$options{$k}; + push @qo,'--'.$options_map{$k}.'='.$options{$k}; } } if ($options{mem}) { - push @qo,'--mem=',$options{mem}; + push @qo,'--mem='.$options{mem}; } if ($options->{interactive}) { - push @qo,'-I'; + push @qo,'--pty'; } if ($options->{name}) { push @qo,'-J',$options->{name}; @@ -298,10 +310,6 @@ sub generate_slrum_options{ 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; } @@ -339,6 +347,14 @@ sub write_qsub_script { $script .= <{precommand}) { + $script .=<{precommand} +# precommand _END_ +EOF + } my $directory = getcwd; if (defined $opt->{dir}) { $directory = abs_path($opt->{dir});