X-Git-Url: https://git.donarmstrong.com/?p=uiuc_igb_scripts.git;a=blobdiff_plain;f=dqsub;h=c0696c17a4ea4164cd34243b676240343e0b767e;hp=4919219ccf1a23a1192f5440102d8f9c9c28454b;hb=59314b681ad15e7605871d89853625a69e2d4bf0;hpb=577e2367d3996745363fcf87fcb60e983f934454 diff --git a/dqsub b/dqsub index 4919219..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,7 +158,7 @@ if ($options{interactive} and @ARGV) { } if (not defined $options{batch}) { - qx/which sbatch/; + qx{which sbatch >/dev/null 2>&1}; if ($? == 0) { $options{batch} = 'slurm' } else { @@ -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}; } @@ -282,14 +294,14 @@ sub generate_slurm_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_slurm_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});