ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/OSUT3Analysis/DBTools/scripts/osusub
(Generate patch)

Comparing UserCode/OSUT3Analysis/DBTools/scripts/osusub (file contents):
Revision 1.2 by ahart, Thu Jun 14 17:42:30 2012 UTC vs.
Revision 1.9 by ahart, Wed Dec 12 07:42:10 2012 UTC

# Line 4 | Line 4 | use strict;
4   use Mysql;
5   use File::Copy;
6   use Getopt::Long;
7 + use POSIX;
8  
9   sub printHelp;
10   sub outputPset;
# Line 11 | Line 12 | sub outputRunList;
12   sub getLocation;
13   sub outputCondor;
14  
15 < our $db;
15 > our $db = Mysql->connect ("cmshead", "ntuple", "osuT3User");
16  
17   my %opt;
18   Getopt::Long::Configure ("bundling");
# Line 32 | Line 33 | if (-e $ARGV[2])
33      exit;
34    }
35   mkdir $ARGV[2];
36 < outputRunList ($ARGV[0], $ARGV[2]);
36 > my $nFiles = outputRunList ($ARGV[0], $ARGV[2]);
37 > my $nJobs = $ARGV[3];
38 > my $realNJobs = ceil ($nFiles / ceil ($nFiles / $nJobs));
39   outputPset ($ARGV[2]);
40 < outputCondor ($ARGV[2], $ARGV[3]);
40 > outputCondor ($ARGV[2], $realNJobs, $ARGV[0]);
41   copy ($ARGV[1], "$ARGV[2]/userConfig_cfg.py");
42   chdir $ARGV[2];
43 + print "Submitting $realNJobs jobs to run on $nFiles files.\n";
44   system ("condor_submit condor.sub");
45  
46   sub
# Line 70 | Line 74 | outputRunList
74    my $dataset = shift;
75    my $workingDir = shift;
76  
77 <  my ($location, $nFiles, $status) = getLocation ($dataset);
77 >  my ($location, $nFiles, $status, $crossSection) = getLocation ($dataset);
78    if ($status ne "present")
79      {
80        print "This dataset is not marked as present on the Tier 3!\n";
81 <      exit;
81 >      print "Continue anyway? (y/N): ";
82 >      my $response = <STDIN>;
83 >      $response =~ s/\n//g;
84 >      exit if !$response || lc ($response) ne "y";
85      }
86    if (!(-e $location))
87      {
# Line 87 | Line 94 | outputRunList
94    if (@files - 2 != $nFiles)
95      {
96        print "Number of files does not match database entry!\n";
97 <      exit;
97 >      print "Continue anyway? (y/N): ";
98 >      my $response = <STDIN>;
99 >      $response =~ s/\n//g;
100 >      exit if !$response || lc ($response) ne "y";
101      }
102    open (RUNLIST, ">$workingDir/runList.py");
103    print RUNLIST "runList = [\n";
# Line 101 | Line 111 | outputRunList
111      }
112    print RUNLIST "]";
113    close (RUNLIST);
114 +  if ($crossSection && $crossSection >= 0.0)
115 +    {
116 +      open (CROSS_SECTION, ">$workingDir/crossSectionInPicobarn.txt");
117 +      print CROSS_SECTION "$crossSection\n";
118 +      close (CROSS_SECTION);
119 +    }
120 +
121 +  return $nFiles;
122   }
123  
124   sub
# Line 112 | Line 130 | getLocation
130    my $queryDataset = $dataset;
131    $queryDataset =~ s/\*/%/g;
132    $queryDataset =~ s/(.*)/%$1%/g;
133 <  $db = Mysql->connect ("cmshead", "ntuple", "osuT3User");
116 <  my $query = "select dataset,user,creationTime,location,nFiles,status from ntuple where dataset like '$queryDataset' order by lastUpdateTime";
133 >  my $query = "select dataset,user,creationTime,location,nFiles,status,crossSectionInPicobarn from ntuple where dataset like '$queryDataset' order by creationTime";
134    $db->selectdb ("ntuple");
135    $results = $db->query ($query);
136    if ($results->numrows () == 1)
137      {
138        my @row = $results->fetchrow ();
139 <      return ($row[3], $row[4], $row[5]);
139 >      return ($row[3], $row[4], $row[5], $row[6]);
140      }
141    if ($results->numrows () == 0)
142      {
# Line 132 | Line 149 | getLocation
149    for (my $i = 1; $i <= $results->numrows (); $i++)
150      {
151        my @row = $results->fetchrow ();
152 <      $map{"$i"} = [$row[3], $row[4], $row[5]];
152 >      $map{"$i"} = [$row[3], $row[4], $row[5], $row[6]];
153        printf "(%2d) $row[0]\n", $i;
154        print "     created by $row[1] on $row[2]\n";
155      }
# Line 145 | Line 162 | getLocation
162        exit;
163      }
164  
165 <  return ($map{$response}[0], $map{$response}[1], $map{$response}[2]);
165 >  return ($map{$response}[0], $map{$response}[1], $map{$response}[2], $map{$response}[3]);
166   }
167  
168   sub
# Line 153 | Line 170 | outputCondor
170   {
171    my $workingDir = shift;
172    my $nJobs = shift;
173 +  my $dataset = shift;
174  
175    my $cmsRun = `which cmsRun`;
176    open (SUB, ">$workingDir/condor.sub");
# Line 160 | Line 178 | outputCondor
178    print SUB "Executable              = $cmsRun\n";
179    print SUB "Universe                = vanilla\n";
180    print SUB "Getenv                  = True\n";
181 <  print SUB "Arguments               = config_cfg.py $nJobs \$(Process)\n";
181 >  print SUB "Arguments               = config_cfg.py $nJobs \$(Process) $dataset\n";
182    print SUB "\n";
183    print SUB "Output                  = condor_\$(Process).out\n";
184    print SUB "Error                   = condor_\$(Process).err\n";
185    print SUB "Log                     = condor_\$(Process).log\n";
186    print SUB "\n";
187 +  print SUB "+IsLocalJob             = true\n";
188 +  print SUB "Rank                    = TARGET.IsLocalSlot\n";
189 +  print SUB "\n";
190    print SUB "Queue $nJobs\n";
191  
192    close (SUB);
# Line 177 | Line 198 | printHelp
198    my $exeName = $0;
199    $exeName =~ s/^.*\/([^\/]*)$/$1/;
200  
201 <  print "Usage: $exeName [OPTIONS] DATASET CONFIG DIRECTORY NJOBS\n";
201 >  print "Usage: $exeName [OPTION]... DATASET CONFIG DIRECTORY NJOBS\n";
202    print "Submits CMSSW jobs to the OSU Tier 3 compute nodes using Condor.\n";
203    print "\n";
204    printf "%-29s%s\n", "  -h, --help", "print this help message";

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines