The decision for virtual network is made here:
<https://www.gem5.org/documentation/general_docs/ruby/garnet_synthetic_traffic/>
Garnet Synthetic 
Traffic<https://www.gem5.org/documentation/general_docs/ruby/garnet_synthetic_traffic/>
gem5.org<https://www.gem5.org/documentation/general_docs/ruby/garnet_synthetic_traffic/>
[apple-touch-icon.png]<https://www.gem5.org/documentation/general_docs/ruby/garnet_synthetic_traffic/>
And depends on the coherence protocol. For eg the garnet stand-alone protocol 
has three vnets.
<https://www.gem5.org/documentation/general_docs/ruby/Garnet_standalone/>
Garnet 
standalone<https://www.gem5.org/documentation/general_docs/ruby/Garnet_standalone/>
gem5.org<https://www.gem5.org/documentation/general_docs/ruby/Garnet_standalone/>
[apple-touch-icon.png]<https://www.gem5.org/documentation/general_docs/ruby/Garnet_standalone/>

By default req, fwd and resp Go to vnets 0, 1 and 2. For garnet synthetic the 
words req, fwd and resp are meaningless as it’s not simulating actual coherence 
.. just that req and fwd are 1 flit while resp is 5 flit.

You could either make changes at this level (might be harder) OR you can maybe 
hack into NetworkInterface.cc in the garnet folder .. see the wakeup function 
and how it gets packets from protocol and injects them into the vnets and make 
changes there ..

Cheers,
Tushar

On Sep 11, 2023, at 12:11 AM, Karim Soliman via gem5-users 
<gem5-users@gem5.org> wrote:


Hey everyone, hope you all are doing well.
For my research purposes, which is about Network-on-Chip routing algorithms and 
the effects of using different virtual networks and virtual channels.
I have successfully run the PARSEC benchmark suite with the 2D-Mesh topology 
and it's working well, I have used the following:

  *   Gem5 - version 23 [X86.opt]
  *   Linux kernel: x86-linux-kernel-4.19.83
  *   PARSEC disk image: downloaded from 
https://resources.gem5.org/resources/x86-parsec/versions?database=gem5-resources&version=1.0.0
  *   Used operating system is Ubuntu 18.04.

What I'm trying to do is set specific criteria for deciding which virtual 
network a packet will belong to when it's being injected.
I implemented such a method when I used a synthetic traffic generator and it 
worked, my modifications were in the file ==> 
src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.cc

I tried to std::cout the used virtual network and virtual channels, in ==> 
src/mem/ruby/network/garnet/InputUnit.cc, and I found that the default 
configurations being used in the simulation are 3 virtual networks [0, 1, 2] 
and each virtual network has 4 virtual channels.

I'm inquiring about where I can locate the function that handles the injection 
of packets into the network.

[https://upload.wikimedia.org/wikipedia/en/thumb/6/64/Pharos_University.jpg/220px-Pharos_University.jpg]
Best Regards,
Eng. Karim Soliman
Teaching Assistant
Computer Engineering Department
Pharos University in Alexandria (P.U.A)
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org

Reply via email to