[Bio] / FortyEight / PipelineUtils.pm Repository:
ViewVC logotype

Annotation of /FortyEight/PipelineUtils.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download) (as text)

1 : olson 1.1
2 :     package PipelineUtils;
3 :     use strict;
4 :    
5 :     use base 'Exporter';
6 :    
7 : olson 1.2 our @EXPORT = qw(sge_submit get_sge_deadline_arg find_fs_resource get_sge_priority);
8 : olson 1.1
9 :     sub sge_submit
10 :     {
11 :     my($meta, $sge_args, $cmd) = @_;
12 :    
13 :     my @sge_opts;
14 :     if (my $res = $meta->get_metadata("lustre_resource"))
15 :     {
16 :     push @sge_opts, -l => $res;
17 :     }
18 : olson 1.2 #
19 :     # Require any node we run on to have the rast_qualified attribute.
20 :     # This makes sure the operating environment on the node
21 :     # has everything we need.
22 :     #
23 :     push(@sge_opts, -l => "rast_qualified");
24 : olson 1.1 push(@sge_opts, get_sge_deadline_arg($meta));
25 :     push(@sge_opts, get_sge_user_priority($meta));
26 :     if (my $res = $meta->get_metadata("sge_priority"))
27 :     {
28 :     if (ref($res) eq 'ARRAY')
29 :     {
30 :     push @sge_opts, @$res;
31 :     }
32 :     elsif (!ref($res))
33 :     {
34 :     push @sge_opts, split(/\s+/, $res);
35 :     }
36 :     }
37 :    
38 :     my $sge_cmd = "qsub @sge_opts $sge_args $cmd";
39 :    
40 :     $meta->add_log_entry($0, $sge_cmd);
41 :    
42 :     if (!open(Q, "$sge_cmd 2>&1 |"))
43 :     {
44 :     die "Qsub failed: $!";
45 :     }
46 :     my $sge_job_id;
47 :     my $submit_output;
48 :     while (<Q>)
49 :     {
50 :     $submit_output .= $_;
51 :     print "Qsub: $_";
52 :     if (/Your\s+job\s+(\d+)/)
53 :     {
54 :     $sge_job_id = $1;
55 :     }
56 :     elsif (/Your\s+job-array\s+(\d+)/)
57 :     {
58 :     $sge_job_id = $1;
59 :     }
60 :     }
61 :     $meta->add_log_entry($0, ["qsub_output", $submit_output]);
62 :     if (!close(Q))
63 :     {
64 :     die "Qsub close failed: $!";
65 :     }
66 :    
67 :     if (!$sge_job_id)
68 :     {
69 :     die "did not get job id from qsub";
70 :     }
71 :    
72 :     return $sge_job_id;
73 :     }
74 :    
75 :     sub get_sge_deadline_arg
76 :     {
77 :     my($meta) = @_;
78 :     if ($FIG_Config::use_deadline_scheduling)
79 :     {
80 :     my $dl = $meta->get_metadata("sge_deadline");
81 :     if ($dl ne '')
82 :     {
83 :     if (wantarray)
84 :     {
85 :     return("-dl", $dl);
86 :     }
87 :     else
88 :     {
89 :     return "-dl $dl";
90 :     }
91 :     }
92 :     }
93 :     return;
94 :     }
95 :    
96 :     sub get_sge_user_priority
97 :     {
98 :     my($meta) = @_;
99 :     if ($FIG_Config::use_priority_scheduling)
100 :     {
101 :     my $prio = $meta->get_metadata("sge_priority");
102 :     if (defined($prio))
103 :     {
104 :     return $prio;
105 :     }
106 :     else
107 :     {
108 :     return;
109 :     }
110 :     }
111 :     }
112 :    
113 :     sub find_fs_resource
114 :     {
115 :     my($job) = @_;
116 :     my $fs_resource;
117 :     if (my $fileserver = $job->find_job_fileserver())
118 :     {
119 :     if ($fileserver eq 'rast.mcs.anl.gov')
120 :     {
121 :     $fs_resource = "-l local_rast";
122 :     }
123 :     elsif ($fileserver eq 'cgat.mcs.anl.gov')
124 :     {
125 :     $fs_resource = "-l local_cgat";
126 :     }
127 :     elsif ($fileserver eq 'lustre')
128 :     {
129 :     $fs_resource = "-l lustre_lustre1";
130 :     }
131 :     }
132 :    
133 :     return $fs_resource;
134 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3