Yes, please can you help me to modify the files into src/mem/ruby/
as I understand till now, inside garnet 3.0 we have 3 types of
messages/classes

   - requests
   - forward
   - response.

Each one of these classes has its own virtual network separated from the
other classes.

   - requests, and forward are control packets and with size 8 bytes - and
   they use virtual network 0 and 1 (1-flit) size.
   - responses are considered as data packets with size = 72 bytes and
   using virtual network 2 (5-flit) size.

So, according to this structure, deadlock may never happen, how can I force
all the three classes to use only one virtual channel ?

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


On Sat, Mar 25, 2023 at 4:00 PM Srikant Bharadwaj <srikan...@gmail.com>
wrote:

> Hi Karim,
>
> The virtual network is the protocol level sub network. The virtual
> channels indicate the number of parallel buffer streams in each virtual
> network. To achieve a protocol deadlock you will have to set a single
> virtual network and then force the different types of messages (request,
> response, etc.) to go through the single virtual network.
>
> For changing the number of virtual networks, you can modify the quantity
> in configs/Network.py
> Forcing the different messages to take that virtual network requires
> changes in the protocol file in src/mem/ruby/ files.
>
> Let me know if you have any questions about changing them .
>
> Srikant
>
> On Sat, Mar 25, 2023 at 12:15 AM Karim Soliman via gem5-users <
> gem5-users@gem5.org> wrote:
>
>> Hey everyone,
>> For learning purposes, I'm trying to understand the deadlock and virtual
>> channels, so in gem5/garnet 3.0 in file
>> mem/ruby/network/garnet/InputUnit.cc
>> I have tried to output the following:
>> std::cout << " - VCs " << m_router->get_num_vcs() << " Vnetworks: " <<
>> m_router->get_num_vnets() << " VCs per Vnet: " << m_router->
>> get_vc_per_vnet() <<  " - route.vnet: " << route.vnet <<  std::endl;
>> Using Mesh_XY topology to inspect the variables.
>> I'm also used the options –-vcs-per-vnet and –-inj-vnet
>>
>> The following is my simulation command:
>> sudo build/NULL/gem5.debug configs/example/garnet_synth_traffic.py
>> --network=garnet --topology=Mesh_XY --mesh-rows=4 --num-cpus=16
>> --num-dirs=16 --sim-cycles=5000000 --injectionrate=0.2
>> --synthetic=uniform_random --vcs-per-vnet=1 --inj-vnet=0
>>
>> the variables output are
>> m_router->get_num_vcs() = 5
>> m_router->get_num_vnets() = 5
>> m_router->get_vc_per_vnet = 1
>>
>> My questions are, Why is the output 5 virtual channels? and what's the
>> virtual network?
>> Also, I'm trying to force the simulation to get into deadlock by
>> increasing the injectinorate and always using only 1 virtual channel per
>> link.
>> but the simulation never went to a deadlock, why? I'm using only one
>> virtual channel.
>>
>>
>> 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