示例#1
0
def computeRouterPowerAndArea(router, stats_file, config, int_links, ext_links,
                              number_of_virtual_networks, vcs_per_vnet,
                              buffers_per_data_vc, buffers_per_control_vc,
                              ni_flit_size_bits):
    frequency = getClock(router, config)
    num_ports = 0
    for int_link in int_links:
        if config.get(int_link, "node_a") == router or \
           config.get(int_link, "node_b") == router:
            num_ports += 1

    for ext_link in ext_links:
        if config.get(ext_link, "int_node") == router:
            num_ports += 1

    pattern = router + ".router_utilization"
    lines = string.split(
        subprocess.check_output(["grep", pattern, stats_file]), '\n', -1)
    assert len(lines) >= 1

    ## Assume that the first line is the one required
    [l1, l2, l3] = lines[0].partition(" ")
    l4 = l3.strip().partition(" ")
    router_utilization = float(l4[0])

    print("%s.router_utilization: %.6f" % (router, router_utilization))
    print("%s Power: " % router)
    power = dsent.computeRouterPowerAndArea(frequency, router_utilization,
                                            num_ports, num_ports,
                                            number_of_virtual_networks,
                                            vcs_per_vnet, buffers_per_data_vc,
                                            ni_flit_size_bits)
示例#2
0
def computeRouterPowerAndArea(
        router, stats_file, config, number_of_virtual_networks, vcs_per_vnet,
        buffers_per_vc, attached_router_id, flit_size_bits, inj_rate):
    cycle_time_in_ps = getClock("system.ruby.clk_domain", config)
    frequency = 1000000000000 / cycle_time_in_ps
    num_ports = 4  # consider mesh

    for r in attached_router_id:
        if r == router:
            num_ports += 1

    power = dsent.computeRouterPowerAndArea(
        frequency, num_ports, num_ports, number_of_virtual_networks,
        vcs_per_vnet, buffers_per_vc, flit_size_bits, inj_rate)

    #print("router#" + str(router) + " Power: ", power)

    return power
def computeRouterPowerAndArea(
    router,
    stats_file,
    config,
    int_links,
    ext_links,
    number_of_virtual_networks,
    vcs_per_vnet,
    buffers_per_data_vc,
    buffers_per_control_vc,
    ni_flit_size_bits,
):
    frequency = getClock(router, config)
    num_ports = 0
    for int_link in int_links:
        if config.get(int_link, "node_a") == router or config.get(int_link, "node_b") == router:
            num_ports += 1

    for ext_link in ext_links:
        if config.get(ext_link, "int_node") == router:
            num_ports += 1

    pattern = router + ".router_utilization"
    lines = string.split(subprocess.check_output(["grep", pattern, stats_file]), "\n", -1)
    assert len(lines) >= 1

    ## Assume that the first line is the one required
    [l1, l2, l3] = lines[0].partition(" ")
    l4 = l3.strip().partition(" ")
    router_utilization = float(l4[0])

    print("%s.router_utilization: %.6f" % (router, router_utilization))
    print("%s Power: " % router)
    power = dsent.computeRouterPowerAndArea(
        frequency,
        router_utilization,
        num_ports,
        num_ports,
        number_of_virtual_networks,
        vcs_per_vnet,
        buffers_per_data_vc,
        ni_flit_size_bits,
    )
def computeRouterPowerAndArea(router, stats_file, config, int_links, ext_links,
                              number_of_virtual_networks, vcs_per_vnet,
                              buffers_per_data_vc, buffers_per_control_vc,
                              ni_flit_size_bits):
    frequency = getClock(router, config)
    num_ports = 0

    for int_link in int_links:
        if config.get(int_link, "node_a") == router or \
           config.get(int_link, "node_b") == router:
            num_ports += 1

    for ext_link in ext_links:
        if config.get(ext_link, "int_node") == router:
            num_ports += 1

    power = dsent.computeRouterPowerAndArea(frequency, num_ports, num_ports,
                                            number_of_virtual_networks,
                                            vcs_per_vnet, buffers_per_data_vc,
                                            ni_flit_size_bits)

    print("%s Power: " % router, power)
示例#5
0
def computeRouterPowerAndArea(router, stats_file, config, int_links, ext_links,
                              number_of_virtual_networks, vcs_per_vnet,
                              buffers_per_data_vc, buffers_per_control_vc,
                              ni_flit_size_bits):
    frequency = getClock(router, config)
    num_ports = 0

    for int_link in int_links:
        if config.get(int_link, "node_a") == router or \
           config.get(int_link, "node_b") == router:
           num_ports += 1

    for ext_link in ext_links:
        if config.get(ext_link, "int_node") == router:
           num_ports += 1

    power = dsent.computeRouterPowerAndArea(frequency, num_ports, num_ports,
                                            number_of_virtual_networks,
                                            vcs_per_vnet, buffers_per_data_vc,
                                            ni_flit_size_bits)

    print("%s Power: " % router, power)