コード例 #1
0
ファイル: read.py プロジェクト: pompp/pompp_tools
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)
コード例 #2
0
ファイル: mk-ubmt-table.py プロジェクト: pompp/pompp_tools
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 )
コード例 #3
0
ファイル: var-rapl-est.py プロジェクト: pompp/pompp_tools
    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):