当前位置:   article > 正文

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

gem5 garnet

简介

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

命令行

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));
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

=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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

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

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

但是这个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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

比如我们看统计结果: 一共只有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)
  • 1

参考的注入率和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.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/489260
推荐阅读
相关标签
  

闽ICP备14008679号