Hi everyone:
When I'm using Garnet 3.0 emulation, I want to set a bubble in the
buffer to avoid deadlock because the routing creates a loop dependency and
thus deadlock, but I don't know how to set it? If someone can help me, I
would appreciate it!
best regards!
Chunfeng
Hi Chunfeng,
Can you be more specific about “the buffer” you are referring to?
Also, “routing creating deadlock” sounds more like a routing and/or topology issue than a micro-architecture issue.
Introducing a bubble as a deadlock avoidance countermeasure sounds like a slippery option. If you can assert that it is what you need, though, you should have sufficient knowledge of Garnet to locate the offending buffer and identify the condition that requires such a bubble to be inserted. Then you can implement this change yourself in Garnet’s code. Do not hesitate to ask for help if you are facing issue in the process.
Regards,
Gabriel
Hi Gabriel,
Thank you so much for helping me!
I wanted to build a ring topology in Garnet 3.0, and while I was
implementing the routing algorithm I found that packets would form ring
dependencies as they were delivered, causing serious congestion problems.
In the Standalone protocol, there will be three virtual networks, and the
buffers I am referring to are the virtual networks.
To avoid the congestion problem, I grouped the transmitted data into 3
classes, each class of data is transmitted on its own separate virtual
network, but due to the limited virtual channels in the virtual network,
when the injection rate is particularly high, all virtual channels will be
filled with packets and thus cannot be delivered forward.
My goal is to set up a bubble (empty virtual channel) to ensure that at
least one virtual channel is available in the virtual network, so that
packets can keep passing forward and solve the congestion problem. But I
don't know how to go about setting up this bubble? Do you know how is to
set up a bubble?
Regards,
Chunfeng
gabriel.busnot--- via gem5-users gem5-users@gem5.org 于2023年6月27日周二
16:50写道:
Hi Chunfeng,
Can you be more specific about “the buffer” you are referring to?
Also, “routing creating deadlock” sounds more like a routing and/or
topology issue than a micro-architecture issue.
Introducing a bubble as a deadlock avoidance countermeasure sounds like a
slippery option. If you can assert that it is what you need, though, you
should have sufficient knowledge of Garnet to locate the offending buffer
and identify the condition that requires such a bubble to be inserted. Then
you can implement this change yourself in Garnet’s code. Do not hesitate to
ask for help if you are facing issue in the process.
Regards,
Gabriel
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-leave@gem5.org
Hi chunfeng,
Are the packets in your routing algorithm moving clockwise or counterclockwise? This type of routing algorithm can be prone to deadlock.
To prevent deadlock from occurring, consider implementing deadlock-free algorithms such as XY routing.
Alternatively, you can use deadlock-free schemes (static Bubble, BBR) to enable the use of custom routing algorithms that might cause deadlocks.
References:
A. Ramrakhyani and T. Krishna, “Static bubble: A framework for deadlock-free irregular on-chip topologies,”
in 2017 IEEE International Symposium on High Performance Computer Architecture (HPCA), pp. 253–264, 2017.
M. Parasar, A. Sinha, and T. Krishna, “Brownian bubble router: Enabling deadlock freedom via guaranteed forward progress,”
in 2018 Twelfth IEEE/ACM International Symposium on Networks-on-Chip (NOCS), pp. 1–8, 2018.
------------------ Original ------------------
From: "Chunfeng Li via gem5-users"<gem5-users@gem5.org>;
Date: Wed, Jun 28, 2023 02:54 PM
To: "gem5-users"<gem5-users@gem5.org>;
Cc: "Chunfeng Li"<lichunfeng.bit@gmail.com>;
Subject: [gem5-users] Re: garnet3.0 simulation question - How How to set bubbles in the buffer to avoid deadlock when using Garnet 3.0 emulation.
Hi Gabriel,
Thank you so much for helping me!
I wanted to build a ring topology in Garnet 3.0, and while I was implementing the routing algorithm I found that packets would form ring dependencies as they were delivered, causing serious congestion problems. In the Standalone protocol, there will be three virtual networks, and the buffers I am referring to are the virtual networks.
To avoid the congestion problem, I grouped the transmitted data into 3 classes, each class of data is transmitted on its own separate virtual network, but due to the limited virtual channels in the virtual network, when the injection rate is particularly high, all virtual channels will be filled with packets and thus cannot be delivered forward.
My goal is to set up a bubble (empty virtual channel) to ensure that at least one virtual channel is available in the virtual network, so that packets can keep passing forward and solve the congestion problem. But I don't know how to go about setting up this bubble? Do you know how is to set up a bubble?
Regards,
Chunfeng
gabriel.busnot--- via gem5-users <gem5-users@gem5.org> 于2023年6月27日周二 16:50写道:
Hi Chunfeng,
Can you be more specific about “the buffer” you are referring to?
Also, “routing creating deadlock” sounds more like a routing and/or topology issue than a micro-architecture issue.
Introducing a bubble as a deadlock avoidance countermeasure sounds like a slippery option. If you can assert that it is what you need, though, you should have sufficient knowledge of Garnet to locate the offending buffer and identify the condition that requires such a bubble to be inserted. Then you can implement this change yourself in Garnet’s code. Do not hesitate to ask for help if you are facing issue in the process.
Regards,
Gabriel
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-leave@gem5.org
Hi zifeng
Thank you so much for your suggestion, I will review it carefully and
consider applying it to my routing algorithm.
My goal is to implement an efficient routing algorithm in a ring topology,
but the limited number of virtual channels makes it easy to form circular
dependencies, congestion and deadlocks that prevent packets from reaching
their destinations. In the routing algorithm with clockwise and
counterclockwise rings, the two rings do not appear to cross.
I want to set up a bubble in Garnet 3.0 so that the counterclockwise and
clockwise rings can keep flowing. But I don't know how to set it up. When I
try to set up in the NetworkInterface.cc and SwitchAllocator.cc files in
Garnet 3.0 to check if at least 2 virtual channels are still available each
time a packet is injected and forwarded, Garnet 3.0 stops all packet
forwarding and I am not sure what is happening.
Regards,
Chunfeng
赵子丰 via gem5-users gem5-users@gem5.org 于2023年6月28日周三 15:16写道:
Hi chunfeng,
Are the packets in your routing algorithm moving clockwise or
counterclockwise? This type of routing algorithm can be prone to deadlock.
To prevent deadlock from occurring, consider implementing deadlock-free
algorithms such as XY routing.
Alternatively, you can use deadlock-free schemes (static Bubble, BBR) to
enable the use of custom routing algorithms that might cause deadlocks.
References:
*1. A. Ramrakhyani and T. Krishna, “Static bubble: A framework for **deadlock-free
irregular on-chip topologies,” *
*in 2017 IEEE International **Symposium on High Performance Computer
Architecture (HPCA), *pp. 253–264, 2017.
*2. M. Parasar, A. Sinha, and T. Krishna, “Brownian bubble router:
Enabling **deadlock freedom via guaranteed forward progress,” *
*in 2018 Twelfth **IEEE/ACM International Symposium on Networks-on-Chip
(NOCS), *pp. 1–8, 2018.
------------------ Original ------------------
*From: * "Chunfeng Li via gem5-users"gem5-users@gem5.org;
*Date: * Wed, Jun 28, 2023 02:54 PM
*To: * "gem5-users"gem5-users@gem5.org;
*Cc: * "Chunfeng Li"lichunfeng.bit@gmail.com;
*Subject: * [gem5-users] Re: garnet3.0 simulation question - How How to
set bubbles in the buffer to avoid deadlock when using Garnet 3.0 emulation.
Hi Gabriel,
Thank you so much for helping me!
I wanted to build a ring topology in Garnet 3.0, and while I was
implementing the routing algorithm I found that packets would form ring
dependencies as they were delivered, causing serious congestion problems.
In the Standalone protocol, there will be three virtual networks, and the
buffers I am referring to are the virtual networks.
To avoid the congestion problem, I grouped the transmitted data into 3
classes, each class of data is transmitted on its own separate virtual
network, but due to the limited virtual channels in the virtual network,
when the injection rate is particularly high, all virtual channels will be
filled with packets and thus cannot be delivered forward.
My goal is to set up a bubble (empty virtual channel) to ensure that at
least one virtual channel is available in the virtual network, so that
packets can keep passing forward and solve the congestion problem. But I
don't know how to go about setting up this bubble? Do you know how is to
set up a bubble?
Regards,
Chunfeng
gabriel.busnot--- via gem5-users gem5-users@gem5.org 于2023年6月27日周二
16:50写道:
Hi Chunfeng,
Can you be more specific about “the buffer” you are referring to?
Also, “routing creating deadlock” sounds more like a routing and/or
topology issue than a micro-architecture issue.
Introducing a bubble as a deadlock avoidance countermeasure sounds like a
slippery option. If you can assert that it is what you need, though, you
should have sufficient knowledge of Garnet to locate the offending buffer
and identify the condition that requires such a bubble to be inserted. Then
you can implement this change yourself in Garnet’s code. Do not hesitate to
ask for help if you are facing issue in the process.
Regards,
Gabriel
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