-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwrapSLURM.pl
46 lines (40 loc) · 1.17 KB
/
wrapSLURM.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use warnings;
use strict;
use Getopt::Long;
use Cwd;
my ($commands, $nodes, $ppn, $mem, $walltime, $modules, $queue, $name, $tmpMem);
GetOptions( "commands=s" => \$commands,
"nodes=i" => \$nodes,
"ppn=i" => \$ppn,
"mem=s" => \$mem,
"tmpMem=s" => \$tmpMem,
"walltime=s" => \$walltime,
"modules=s" => \$modules,
"queue=s" => \$queue,
"jobname=s" => \$name);
$nodes = defined($nodes) ? $nodes : 1;
$ppn = defined($ppn) ? $ppn : 1;
$mem = defined($mem) ? $mem : "10gb";
$walltime = defined($walltime) ? $walltime : "6:00:00";
$queue = defined($queue) ? $queue : "ccgg";
$name = defined($name) ? $name : "wrappedJob";
$tmpMem = defined($tmpMem) ? $tmpMem : "10gb";
my $loadMods;
if (defined($modules)){
open(MOD, "<", $modules) or die "can't open modules to load";
while (<MOD>){
my $line = $_;
chomp($line);
$loadMods = "$line ;";
}
}
else{
$loadMods = "";
}
my $sbatch = "sbatch -e ${name}.%j.e -o ${name}.%j.o -p $queue --tmp=$tmpMem --time=$walltime --ntasks-per-node=$ppn --mem=$mem --nodes=$nodes --job-name=$name";
open(COM, "<", $commands);
while(<COM>){
my $line = $_;
chomp($line);
print "$sbatch --wrap=\" $loadMods $line\"\n";
}