def read_ubmt_table( ubmt_file ): try: f=open( ubmt_file, "r" ) except IOError: print "ERROR: in read_ubmt_table: u-bench data", print "(%s) cannot be opened" % ubmt_file sys.exit(1) # nread=0 npkgs = machine.get_npkgs() pkg_max = [ 0.0 for ipkg in range(npkgs) ] drm_max = [ 0.0 for ipkg in range(npkgs) ] pkg_min = [ 0.0 for ipkg in range(npkgs) ] drm_min = [ 0.0 for ipkg in range(npkgs) ] for line in f: toks = line.split() pkgid = int(toks[0]) pkg_max[pkgid] = float( toks[1] ) drm_max[pkgid] = float( toks[2] ) pkg_min[pkgid] = float( toks[3] ) drm_min[pkgid] = float( toks[4] ) nread += 1 if nread == 0: pkg_max = [] drm_max = [] pkg_min = [] drm_min = [] return (pkg_max, drm_max, pkg_min, drm_min)
def read_ave_pwrs_with_freq( header, ifreq ): coef = 1.3 pkg_max = coef * machine.get_tdp_pkg() drm_max = coef * machine.get_tdp_drm() secfiles = ric.get_sec_file_list( header ) ric.reset_sec() nsec = ric.get_nsec_ric( secfiles ) npkgs = machine.get_npkgs() tfreq = 0.1 * float( ifreq ) aves_pkg = [[0.0 for isec in range(nsec)] for ipkg in range(npkgs)] aves_drm = [[0.0 for isec in range(nsec)] for ipkg in range(npkgs)] for secfile in secfiles: try: f = open( secfile, "r" ) except IOError: print "ERROR: Failure opening file %s" % secfile sys.exit(1) # pkgid = machine.get_pkgid( f ) # f.seek(0) (nitera, etms, pkgs, drms, tots, frqs) = \ ric.etime_pwrs_freq_by_trial( f ) for isec in range(nsec): ave_pkg = 0.0 ave_drm = 0.0 neff = 0 for itera in range(nitera): dif = fabs( tfreq - frqs[itera][isec] ) if dif < 0.01: pkg = pkgs[itera][isec] drm = drms[itera][isec] if pkg < pkg_max and drm < drm_max: ave_pkg += pkg ave_drm += drm neff += 1 else: # debug print "warning: %s iter=%d" % (secfile, itera) # if neff < 1: print "ERROR: No effective data in %s" % secfile f.close() # aves_pkg[pkgid][isec] = ave_pkg/float(neff) aves_drm[pkgid][isec] = ave_drm/float(neff) # f.close() # return ( aves_pkg, aves_drm )
ubmt_table = sys.argv[1] app_data = sys.argv[2] pbs_nodefile = sys.argv[3] nprocs = int( sys.argv[4] ) module_pwr_cap = float( sys.argv[5] ) conf_header = sys.argv[6] if debug: print "ubmt_table = %s" % ubmt_table print "app_data = %s" % app_data print "pbs_nodefile = %s" % pbs_nodefile print "nprocs = %d" % nprocs print "module power cap = %7.3f W" % module_pwr_cap print "config header = %s" % conf_header npkgs = machine.get_npkgs() (rmaxpkg, rmaxdrm, rminpkg, rmindrm) = read.read_ubmt_table( ubmt_table ) # (secnames, app_maxpkg, app_maxdrm, app_minpkg, app_mindrm) = \ read.read_app_data(app_data) nsec = len(secnames) if nsec < 1: print "ERROR: Illegal # of sections (%d)" % nsec sys.exit(1) app_est_maxpkg=[[0.0 for isec in range(nsec)] for ipkg in range(npkgs)] app_est_maxdrm=[[0.0 for isec in range(nsec)] for ipkg in range(npkgs)] app_est_minpkg=[[0.0 for isec in range(nsec)] for ipkg in range(npkgs)] app_est_mindrm=[[0.0 for isec in range(nsec)] for ipkg in range(npkgs)] for ipkg in range(npkgs): for isec in range(nsec):