Change the virtual network for request, forward, and response to a single
vnet (0) in the following files and then set the
src/mem/ruby/protocol/Garnet_standalone-cache.sm
src/mem/ruby/protocol/Garnet_standalone-dir.sm

Then restrict the number of vnets to 1 in configs/ruby/Garnet_standalone.py
Make sure you do a clean build as you are changing the SLICC files.

Srikant

On Sat, Mar 25, 2023 at 1:13 AM Karim Soliman <karim.soli...@pua.edu.eg>
wrote:

> 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