gem5-users@gem5.org

The gem5 Users mailing list

View all threads

Ruby - HeteroGarnet - Running PARSEC benchmark on NoC

KS
Karim Soliman
Mon, Sep 11, 2023 4:10 AM

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)

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)
KT
Krishna, Tushar
Mon, Sep 11, 2023 11:18 AM

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

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-leave@gem5.org
KS
Karim Soliman
Tue, Sep 12, 2023 2:28 AM

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

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 > >