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:
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.
Best Regards,
Eng. Karim Soliman
Teaching Assistant
Computer Engineering Department
Pharos University in Alexandria (P.U.A)
The decision for virtual network is made here:
https://www.gem5.org/documentation/general_docs/ruby/garnet_synthetic_traffic/
Garnet Synthetic Traffichttps://www.gem5.org/documentation/general_docs/ruby/garnet_synthetic_traffic/
gem5.orghttps://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 standalonehttps://www.gem5.org/documentation/general_docs/ruby/Garnet_standalone/
gem5.orghttps://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:
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-leave@gem5.org
Thank you for your reply, I will check the NetworkInterface.cc file.
Best Regards,
Eng. Karim Soliman
Teaching Assistant
Computer Engineering Department
Pharos University in Alexandria (P.U.A)
On Mon, Sep 11, 2023 at 7:18 PM Krishna, Tushar tushar@ece.gatech.edu
wrote:
The decision for virtual network is made here:
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/
[image: apple-touch-icon.png]
https://www.gem5.org/documentation/general_docs/ruby/garnet_synthetic_traffic/
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.
Garnet standalone
https://www.gem5.org/documentation/general_docs/ruby/Garnet_standalone/
gem5.org
https://www.gem5.org/documentation/general_docs/ruby/Garnet_standalone/
[image: apple-touch-icon.png]
https://www.gem5.org/documentation/general_docs/ruby/Garnet_standalone/
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.
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-leave@gem5.org