gem5-users@gem5.org

The gem5 Users mailing list

View all threads

HeteroGarnet SE simulation - Suppressing functional read errors in Network.hh

PD
Preet Derasari
Thu, Mar 14, 2024 5:25 PM

Hi,

I am currently experimenting with HeteroGarnet and the Mesh_XY topology
with the weight table-based and XY routing algorithms. I discovered
something interesting while running the simple threads.cpp program (in
tests/test-progs/threads/src/threads.cpp) in SE mode with the following
config:

build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=8
--num-dirs=8 --cpu-type=DerivO3CPU --cpu-clock=2GHz --caches
--l1d_size=64kB --l1i_size=32kB --l2cache --num-l2caches=8 --l2_size=2MB
--mem-type=SimpleMemory --mem-size=4GB --ruby --network=garnet
--ruby-clock=2GHz --topology=Mesh_XY --mesh-rows=2 --router-latency=4
--link-latency=1 --link-width-bits=128 --routing-algorithm=1
--cmd=tests/test-progs/threads/bin/x86/linux/threads

I found the following:
--> with routing-algorithm=0, i.e., weight table-based routing, the code
runs to completion.
--> with routing-algorithm=1, i.e., XY routing, the code ends abruptly
while throwing the following error: src/mem/ruby/network/Network.hh:123:
fatal: Functional read not implemented.

Now, when I recompile gem5 after suppressing the error (by commenting the
fatal line and adding a return true line), the code runs to completion
correctly
.

This makes little sense to me, despite reading prior email threads that
address this (https://www.mail-archive.com/gem5-users@gem5.org/msg19618.html).
Does anyone know why that error occurs and if it is okay to suppress it to
get the simulated code to completion?

I appreciate any help. Thank you.

Sincerely,
Preet.

Hi, I am currently experimenting with *HeteroGarnet* and the *Mesh_XY* topology with the *weight table-based* and *XY routing algorithms*. I discovered something interesting while running the simple *threads.cpp* program (in tests/test-progs/threads/src/threads.cpp) in *SE mode* with the following config: *build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=8 --num-dirs=8 --cpu-type=DerivO3CPU --cpu-clock=2GHz --caches --l1d_size=64kB --l1i_size=32kB --l2cache --num-l2caches=8 --l2_size=2MB --mem-type=SimpleMemory --mem-size=4GB --ruby --network=garnet --ruby-clock=2GHz --topology=Mesh_XY --mesh-rows=2 --router-latency=4 --link-latency=1 --link-width-bits=128 --routing-algorithm=1 --cmd=tests/test-progs/threads/bin/x86/linux/threads* I found the following: --> with routing-algorithm=0, i.e., weight table-based routing, the code runs to completion. --> with routing-algorithm=1, i.e., XY routing, the code ends abruptly while throwing the following error: *src/mem/ruby/network/Network.hh:123: fatal: Functional read not implemented.* *Now, when I recompile gem5 after suppressing the error (by commenting the fatal line and adding a return true line), the code runs to completion correctly*. This makes little sense to me, despite reading prior email threads that address this (https://www.mail-archive.com/gem5-users@gem5.org/msg19618.html). Does anyone know why that error occurs and if it is okay to suppress it to get the simulated code to completion? I appreciate any help. Thank you. Sincerely, Preet.