gem5-users@gem5.org

The gem5 Users mailing list

View all threads

Garnet - Configure buffer depth - Garnet synthetic traffic - Standalone protocol

KS
Karim Soliman
Mon, Aug 12, 2024 10:41 AM

Dear gem5 Community,

I hope this email finds you well. I apologize in advance if my questions
seem basic, as I am still learning the ropes of gem5 and have encountered
some areas of confusion.

For my research, I am interested in configuring the depth of the input
buffers per router. I understand that the default buffer size is zero,
which signifies an infinite buffer.

I have reviewed the source code in
"src/mem/ruby/network/garnet/GarnetNetwork.py" and noticed that
buffers_per_data_vc is set to 4 by default, while buffers_per_ctrl_vc is
set to 1. If I modify the default value of buffers_per_data_vc to 8, would
this accurately configure the input buffer depth to 8?

Additionally, I would like to inquire about accessing the current number of
flits within the buffer. I reviewed the code in
"src/mem/ruby/network/garnet/InputUnit.cc" and
"src/mem/ruby/network/garnet/RoutingUnit.cc" but was unable to locate the
relevant functionality.

Thank you for your time and assistance.

Best Regards,
Eng. Karim Soliman
Teaching Assistant
Computer Engineering Department
Pharos University in Alexandria (P.U.A)

Dear gem5 Community, I hope this email finds you well. I apologize in advance if my questions seem basic, as I am still learning the ropes of gem5 and have encountered some areas of confusion. For my research, I am interested in configuring the depth of the input buffers per router. I understand that the default buffer size is zero, which signifies an infinite buffer. I have reviewed the source code in "src/mem/ruby/network/garnet/GarnetNetwork.py" and noticed that buffers_per_data_vc is set to 4 by default, while buffers_per_ctrl_vc is set to 1. If I modify the default value of buffers_per_data_vc to 8, would this accurately configure the input buffer depth to 8? Additionally, I would like to inquire about accessing the current number of flits within the buffer. I reviewed the code in "src/mem/ruby/network/garnet/InputUnit.cc" and "src/mem/ruby/network/garnet/RoutingUnit.cc" but was unable to locate the relevant functionality. Thank you for your time and assistance. Best Regards, *Eng. Karim Soliman* Teaching Assistant Computer Engineering Department Pharos University in Alexandria (P.U.A)
CW
C.-Y. Wu
Thu, Aug 29, 2024 5:23 PM

Hello,

My understanding is that, for a (Garnet) router, the VC buffer size is
marked by the (initial) credit value.

For example, the outport-East of Router 0 is connected to the inport-West
of Router 1. The outport-East of Router 0 keeps all the credit values,
corresponding to all VCs of Router 1's inport-West, in an "OutVcState"
vector. In the constructor of OutVcState
(src/mem/ruby/network/garnet/OutVcState.cc), the maximum credit values are
initialized to buffers_per_ctrl_vc (for vnet 0 and 1) or
buffers_per_data_vc (for vnet 2).
If you change those two values, you will see that an outport can push at
most buffers_per_ctrl_vc (or buffers_per_data_vc) flits into a VC buffer.
Because the credits will then run out. The behavior is the same as setting
the buffer depth. However, if you look at
src/mem/ruby/network/garnet/flitBuffer.cc, the class member "max_size"
seems indeed never set and the function isFull() is never called.

If you want to check the number of flits in a specific VC buffer,
you will have to check:

  • the class member virtualChannels (a vector of VirtualChannel) of InputUnit
  • the class member inputBuffer (type flitBuffer) of VirtualChannel
  • the member function getSize() of flitBuffer, which returns the size of
    m_buffer (type: std::deque) (Note that the size of std::deque is the number
    of elements in the queue.)

Best regards,

Chia

On Mon, Aug 12, 2024 at 12:42 PM Karim Soliman via gem5-users <
gem5-users@gem5.org> wrote:

Dear gem5 Community,

I hope this email finds you well. I apologize in advance if my questions
seem basic, as I am still learning the ropes of gem5 and have encountered
some areas of confusion.

For my research, I am interested in configuring the depth of the input
buffers per router. I understand that the default buffer size is zero,
which signifies an infinite buffer.

I have reviewed the source code in
"src/mem/ruby/network/garnet/GarnetNetwork.py" and noticed that
buffers_per_data_vc is set to 4 by default, while buffers_per_ctrl_vc is
set to 1. If I modify the default value of buffers_per_data_vc to 8,
would this accurately configure the input buffer depth to 8?

Additionally, I would like to inquire about accessing the current number
of flits within the buffer. I reviewed the code in
"src/mem/ruby/network/garnet/InputUnit.cc" and
"src/mem/ruby/network/garnet/RoutingUnit.cc" but was unable to locate the
relevant functionality.

Thank you for your time and assistance.

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

Hello, My understanding is that, for a (Garnet) router, the VC buffer size is marked by the (initial) credit value. For example, the outport-East of Router 0 is connected to the inport-West of Router 1. The outport-East of Router 0 keeps all the credit values, corresponding to all VCs of Router 1's inport-West, in an "OutVcState" vector. In the constructor of OutVcState (src/mem/ruby/network/garnet/OutVcState.cc), the maximum credit values are initialized to buffers_per_ctrl_vc (for vnet 0 and 1) or buffers_per_data_vc (for vnet 2). If you change those two values, you will see that an outport can push at most buffers_per_ctrl_vc (or buffers_per_data_vc) flits into a VC buffer. Because the credits will then run out. The behavior is the same as setting the buffer depth. However, if you look at src/mem/ruby/network/garnet/flitBuffer.cc, the class member "max_size" seems indeed never set and the function isFull() is never called. If you want to check the number of flits in a specific VC buffer, you will have to check: - the class member virtualChannels (a vector of VirtualChannel) of InputUnit - the class member inputBuffer (type flitBuffer) of VirtualChannel - the member function getSize() of flitBuffer, which returns the size of m_buffer (type: std::deque) (Note that the size of std::deque is the number of elements in the queue.) Best regards, Chia On Mon, Aug 12, 2024 at 12:42 PM Karim Soliman via gem5-users < gem5-users@gem5.org> wrote: > Dear gem5 Community, > > I hope this email finds you well. I apologize in advance if my questions > seem basic, as I am still learning the ropes of gem5 and have encountered > some areas of confusion. > > For my research, I am interested in configuring the depth of the input > buffers per router. I understand that the default buffer size is zero, > which signifies an infinite buffer. > > I have reviewed the source code in > "src/mem/ruby/network/garnet/GarnetNetwork.py" and noticed that > buffers_per_data_vc is set to 4 by default, while buffers_per_ctrl_vc is > set to 1. If I modify the default value of buffers_per_data_vc to 8, > would this accurately configure the input buffer depth to 8? > > Additionally, I would like to inquire about accessing the current number > of flits within the buffer. I reviewed the code in > "src/mem/ruby/network/garnet/InputUnit.cc" and > "src/mem/ruby/network/garnet/RoutingUnit.cc" but was unable to locate the > relevant functionality. > > Thank you for your time and assistance. > > 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
Wed, Sep 4, 2024 2:26 AM

Thank you for taking the time to provide such a detailed and informative
answer.
I appreciate your kind attention to my inquiry. Your response has been very
helpful and will undoubtedly inform my next steps.

Karim Soliman
Teaching Assistant
Computer Engineering Department
Pharos University in Alexandria (P.U.A)

On Fri, Aug 30, 2024 at 1:25 AM C.-Y. Wu via gem5-users gem5-users@gem5.org
wrote:

Hello,

My understanding is that, for a (Garnet) router, the VC buffer size is
marked by the (initial) credit value.

For example, the outport-East of Router 0 is connected to the inport-West
of Router 1. The outport-East of Router 0 keeps all the credit values,
corresponding to all VCs of Router 1's inport-West, in an "OutVcState"
vector. In the constructor of OutVcState
(src/mem/ruby/network/garnet/OutVcState.cc), the maximum credit values are
initialized to buffers_per_ctrl_vc (for vnet 0 and 1) or
buffers_per_data_vc (for vnet 2).
If you change those two values, you will see that an outport can push at
most buffers_per_ctrl_vc (or buffers_per_data_vc) flits into a VC buffer.
Because the credits will then run out. The behavior is the same as setting
the buffer depth. However, if you look at
src/mem/ruby/network/garnet/flitBuffer.cc, the class member "max_size"
seems indeed never set and the function isFull() is never called.

If you want to check the number of flits in a specific VC buffer,
you will have to check:

  • the class member virtualChannels (a vector of VirtualChannel) of
    InputUnit
  • the class member inputBuffer (type flitBuffer) of VirtualChannel
  • the member function getSize() of flitBuffer, which returns the size of
    m_buffer (type: std::deque) (Note that the size of std::deque is the number
    of elements in the queue.)

Best regards,

Chia

On Mon, Aug 12, 2024 at 12:42 PM Karim Soliman via gem5-users <
gem5-users@gem5.org> wrote:

Dear gem5 Community,

I hope this email finds you well. I apologize in advance if my questions
seem basic, as I am still learning the ropes of gem5 and have encountered
some areas of confusion.

For my research, I am interested in configuring the depth of the input
buffers per router. I understand that the default buffer size is zero,
which signifies an infinite buffer.

I have reviewed the source code in
"src/mem/ruby/network/garnet/GarnetNetwork.py" and noticed that
buffers_per_data_vc is set to 4 by default, while buffers_per_ctrl_vc is
set to 1. If I modify the default value of buffers_per_data_vc to 8,
would this accurately configure the input buffer depth to 8?

Additionally, I would like to inquire about accessing the current number
of flits within the buffer. I reviewed the code in
"src/mem/ruby/network/garnet/InputUnit.cc" and
"src/mem/ruby/network/garnet/RoutingUnit.cc" but was unable to locate the
relevant functionality.

Thank you for your time and assistance.

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


gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-leave@gem5.org

Thank you for taking the time to provide such a detailed and informative answer. I appreciate your kind attention to my inquiry. Your response has been very helpful and will undoubtedly inform my next steps. *Karim Soliman* Teaching Assistant Computer Engineering Department Pharos University in Alexandria (P.U.A) On Fri, Aug 30, 2024 at 1:25 AM C.-Y. Wu via gem5-users <gem5-users@gem5.org> wrote: > Hello, > > My understanding is that, for a (Garnet) router, the VC buffer size is > marked by the (initial) credit value. > > For example, the outport-East of Router 0 is connected to the inport-West > of Router 1. The outport-East of Router 0 keeps all the credit values, > corresponding to all VCs of Router 1's inport-West, in an "OutVcState" > vector. In the constructor of OutVcState > (src/mem/ruby/network/garnet/OutVcState.cc), the maximum credit values are > initialized to buffers_per_ctrl_vc (for vnet 0 and 1) or > buffers_per_data_vc (for vnet 2). > If you change those two values, you will see that an outport can push at > most buffers_per_ctrl_vc (or buffers_per_data_vc) flits into a VC buffer. > Because the credits will then run out. The behavior is the same as setting > the buffer depth. However, if you look at > src/mem/ruby/network/garnet/flitBuffer.cc, the class member "max_size" > seems indeed never set and the function isFull() is never called. > > If you want to check the number of flits in a specific VC buffer, > you will have to check: > - the class member virtualChannels (a vector of VirtualChannel) of > InputUnit > - the class member inputBuffer (type flitBuffer) of VirtualChannel > - the member function getSize() of flitBuffer, which returns the size of > m_buffer (type: std::deque) (Note that the size of std::deque is the number > of elements in the queue.) > > Best regards, > > Chia > > > On Mon, Aug 12, 2024 at 12:42 PM Karim Soliman via gem5-users < > gem5-users@gem5.org> wrote: > >> Dear gem5 Community, >> >> I hope this email finds you well. I apologize in advance if my questions >> seem basic, as I am still learning the ropes of gem5 and have encountered >> some areas of confusion. >> >> For my research, I am interested in configuring the depth of the input >> buffers per router. I understand that the default buffer size is zero, >> which signifies an infinite buffer. >> >> I have reviewed the source code in >> "src/mem/ruby/network/garnet/GarnetNetwork.py" and noticed that >> buffers_per_data_vc is set to 4 by default, while buffers_per_ctrl_vc is >> set to 1. If I modify the default value of buffers_per_data_vc to 8, >> would this accurately configure the input buffer depth to 8? >> >> Additionally, I would like to inquire about accessing the current number >> of flits within the buffer. I reviewed the code in >> "src/mem/ruby/network/garnet/InputUnit.cc" and >> "src/mem/ruby/network/garnet/RoutingUnit.cc" but was unable to locate the >> relevant functionality. >> >> Thank you for your time and assistance. >> >> 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 >> > _______________________________________________ > gem5-users mailing list -- gem5-users@gem5.org > To unsubscribe send an email to gem5-users-leave@gem5.org >