GEM5 Garnet Standalone 命令行与stats.txt结果分析

简介

展示了不同的命令行与结果,作为初步的了解.

命令行

sim-cycles要大,不然没结果

./build/NULL/gem5.debug configs/example/garnet_synth_traffic.py
–num-cpus=16
–num-dirs=16
–network=garnet
–topology=Mesh_XY
–mesh-rows=4
–sim-cycles=1000000 --inj-vnet=-1
–synthetic=uniform_random
–injectionrate=1
这里我们设为1000000.太小了可能收到的flit太少了.

–inj-vnet = -1 三个网络都传包

=-1时,有三个vnet的统计结果

源代码: src/mem/ruby/network/garnet/GarnetNetwork.cc

  m_flits_received
        .init(m_virtual_networks)
        .name(name() + ".flits_received")
        .flags(statistics::pdf | statistics::total | statistics::nozero |
            statistics::oneline)
        ;

    for (int i = 0; i < m_virtual_networks; i++) {
        m_flits_received.subname(i, csprintf("vnet-%i", i));
        m_flits_injected.subname(i, csprintf("vnet-%i", i));
        m_flit_network_latency.subname(i, csprintf("vnet-%i", i));
        m_flit_queueing_latency.subname(i, csprintf("vnet-%i", i));
    }

统计结果里就有三个包的结果
在这里插入图片描述

=0/1/2 时对应的网络

例如–inj-vnet=0
命令行如下.

./build/NULL/gem5.debug configs/example/garnet_synth_traffic.py   \
        --num-cpus=16 \
        --num-dirs=16 \
        --network=garnet \
        --topology=Mesh_XY \
        --mesh-rows=4  \
        --sim-cycles=1000000  --inj-vnet=0 \
        --synthetic=uniform_random \
        --injectionrate=1

在这里插入图片描述
可以看出, 三列里只有第一列有值15897也是全部的 fltis数了,说明所有的flit都从vnet 0 走,也符合我们的命令行–inj-vnet=0 的设定.

然而, 下面的代码似乎并没有实现,这个分三列更像是 statistics::pdf的结果.

 m_flits_received.subname(i, csprintf("vnet-%i", i));

但是这个latency很大

在这里插入图片描述

stats flags

flagsDescriptions
Stats::noneNothing extra to print.
Stats::totalPrint the total.
Stats::pdfPrint the percent of the total that this entry represents.
Stats::cdfPrint the cumulative percentage of total upto this entry.
Stats::distPrint the distribution.
Stats::nozeroDon’t print if this is zero.
Stats::nonanDon’t print if this is NAN
Stats::onelinePrint all values on a single line. Useful only for histograms.

减小注入率

官网给的参考配置 --injectionrate=0.01 太小了,10万个cycles数,发的包很少.

./build/NULL/gem5.debug configs/example/garnet_synth_traffic.py   \
        --num-cpus=16 \
        --num-dirs=16 \
        --network=garnet \
        --topology=Mesh_XY \
        --mesh-rows=4  \
        --sim-cycles=1000000  --inj-vnet=0 \
        --synthetic=uniform_random \
        --injectionrate=0.01

比如我们看统计结果: 一共只有145个flit.

在这里插入图片描述
但是这个平均 delay还是很大:
在这里插入图片描述

原因
发现: clock不是1 tick而是1000,也就是一个cycle不是 1 ps 而是1ns, latency 5000多,意味着 就是5000 ps,也就是 5 ns,相当于5 cycles.

system.clk_domain.clock                          1000                       # Clock period in ticks (Tick)

参考的注入率和cycles

Fuzzy Flow Regulation for Network-on-Chip based
Chip Multiprocessors Systems 使用了 0.02 packet/cycle,注意,他还假设都是 1个packet =5 个flit,也就是 用vn2
在这里插入图片描述
他使用的设置如下:
uniform random
在这里插入图片描述
bit permutation traffic
在这里插入图片描述
总packets数大概是 2万个包.没有表或数字,但是有个图.

在这里插入图片描述

参考设置 小结

运行是10e6 的cycles,注入率从0.012 packet/flit慢慢增加, 2*10e4的packet数, 默认的delay是3个cycle queueing, 79的network delay.

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值