#!/usr/bin/env python #----------------------------------# # -- Author: V. Garonne # -- Mail: garonne@lal.in2p3.fr # -- Date: 08/25/2006 # -- Name: generateGantt # -- Description: script to generate # -- the gantt chart from a input file # -- It uses Paw. #----------------------------------# import os import sys import time import string import commands def usage (): print 'Usage : > generateGannt ' if __name__ == '__main__': if len(sys.argv) != 2: usage () sys.exit(-1) # First read the file file = sys.argv[1] f = open (file) lines = f.readlines() f.close () # Instanciate constants total = len(lines) min = time.time() max = 0.0 for line in lines: package, start, end = string.split(line) #print float(end)-float(start) if float(start)< min: min = float(start) if float(end)> max: max = float(end) # then compute for each package its line packages = {} for line in lines: package, start, end = string.split(line) packages[package] = {'start': float(start)-min , 'end':float(end)-min} deb = 0.0 index = 0 step = 0.01 i = float(max)-float(min) done = list() start = list() while i>0: for package in packages: if not package in done: if packages[package]['end']>i: index = index + 1 packages[package]['index']= index done.append(package) #print i,index, package if not package in start: if packages[package]['start']> i: index = index - 1 start.append(package) #print i, 'start', package, packages[package]['start'], packages[package]['end'], packages[package]['end']-packages[package]['start'] i = i-step y = 0 for package in packages: print package if packages[package]['index'] > y: y = packages[package]['index'] f = open ("gantt.dat", "w+") for index in xrange(total+1): for package in packages: if packages[package]['index'] == index: line = str(packages[package]['index'])+'\t'+str(packages[package]['start'])+'\t'+ str(packages[package]['end'])+'\n' f.write (line) f.close () # f = open ("gantt.dat", "w+") # index = 1 # for line in lines: # package, start, end = string.split(line) # f.write (str(index)+ ' ' + str(float(start)-min)+ ' ' + str(float(end)-min) + '\n') # index = index + 1 # f.close () content= ''' ops opt nsta Total = %s v/cre y([Total]) r v/cre x1([Total]) r v/cre x2([Total]) r v/read y,x1,x2 gantt.dat deb = 0.0 max = %s totaly = %s set NDVY [Totaly].15 NULL [deb] [max] 1 [Totaly] SET BORD 1 SET FAIS 1 SET PLCI 2 SET FACI 3 *HISTOGRAM/CREATE/2DHISTO 1 'Gannt chart' 0 10000 [max] 0 0 [Total] SET BORD 1 SET FAIS 1 SET PLCI 2 SET FACI 3 DO i= 1,[Total] y2 = y([i])+0.5 GRAPHICS/PRIMITIVES/BOX x1([i]) x2([i]) y([i]) [y2] ENDDO GRAPHICS/HPLOT/ATITLE 'Time(s)' 'Total number of parallel execution' ! 220 cps '''%(str(total), str(float(max)-float(min)), str(y)) f = open ("gantt.kumac", "w+") f.write (content) f.close () f = open ("exec.kumac", "w+") f.write ("\n\n gantt.kumac") f.close () status, output = commands.getstatusoutput ("paw