[gem5-users] Re: Gem5 - Garnet - Full System

2023-09-18 Thread Karim Soliman via gem5-users
Thank you, Gabriel, for your valuable feedback.

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


On Mon, Sep 18, 2023 at 11:48 PM gabriel.busnot--- via gem5-users <
gem5-users@gem5.org> wrote:

> Hi Karim,
>
> The short answer to “can I use a single vnet for MESI_Two_Level is
> “probably not”, just as for any provided Ruby protocol.
>
> The reason is that vnets provide traffic isolation between different
> message classes (request, response, etc.). This isolation is required to
> avoid deadlocks. Designing a protocol working with a single vnet is
> possible but would be super expensive to implement as a lot of reordering
> capabilities would be required from the units (ruby machines).
>
> The closer you can get from using a single network is to have each
> physical link support all vnets, which is the default for both
> SimpleNetwork and Garnet. However, you cannot get around the “virtual
> channels” (usually a dedicated buffer for each vnet at both end of each
> link).
>
> BTW, the error you are observing is telling you that you cannot have more
> than one input and/or output with a given vnet ID for each ruby machine.
> This is an arbitrary limitation baked deep into SLICC/Ruby to simplify
> things.
>
> Regards,
>
> Gabriel
> ___
> 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


[gem5-users] Re: Simulation of MSHR and write-back buffer in Ruby?

2023-09-18 Thread Ghadeer Almusaddar via gem5-users
Hello Gabriel,

Thank you so much for sharing.

all the best,
Ghadeer

On Mon, Sep 18, 2023 at 11:30 AM gabriel.busnot--- via gem5-users <
gem5-users@gem5.org> wrote:

> Hi Ghadeer,
>
> I think this thread could help you with that:
> https://gem5-workspace.slack.com/archives/C03K26BGTKL/p1694723886410439.
>
> Regards,
>
> Gabriel
> ___
> 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


[gem5-users] Re: Sharing cache lines at memory level

2023-09-18 Thread Jason Lowe-Power via gem5-users
Hi Arteen,

This is dependent on the Ruby coherence protocol you are using. It sounds
like you're using MESI_Three_Level or MESI_Two_Level in which the LLC is a
single logical cache that is banked between different instances. If you
want something more like "cluster-private" LLC slices, then you'll have to
use a different coherence protocol. CHI may be the most flexible for your
use case.

See the following documentation for more information
https://www.gem5.org/documentation/general_docs/ruby/
https://www.gem5.org/documentation/general_docs/ruby/CHI/

In the sidebar you can find descriptions of each of the other protocols as
well.

Cheers,
Jason

On Sun, Sep 17, 2023 at 11:32 AM Arteen Abrishami via gem5-users <
gem5-users@gem5.org> wrote:

> Hello everyone,
>
> I’m an undergraduate student working on a project where I am to evaluate a
> hardware accelerator my PhD student is working on in a chiplet-based
> system. We are running garnet2.0, and it would be infeasible to port it to
> garnet3.0.
>
> So far, I’ve had success configuring a chiplet configuration in Python and
> I’ve also been able to achieve a 1:n (n chiplets) memory to LLC mapping.
> Unfortunately, we found that there was deadlock under certain workloads.
> This led to the discovery that cache lines were not able to be shared
> across multiple chiplets (from memory -> cache).
>
> To simulate accurately, this is a requirement. I’ve been attempting to
> look into this issue, but I wanted to ask here for insight. I was able to
> find success with creating “cluster-private” LLC chiplets with built-in
> gem5 configurations. It doesn’t seem likely this feature would be provided
> without also allowing cache lines to be shared across the clusters.
>
> Could anyone point me in the right direction?
>
> Thanks,
> Arteen
> ___
> 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


[gem5-users] Re: Gem5 - Garnet - Full System

2023-09-18 Thread gabriel.busnot--- via gem5-users
Hi Karim,

The short answer to “can I use a single vnet for MESI_Two_Level is “probably 
not”, just as for any provided Ruby protocol.

The reason is that vnets provide traffic isolation between different message 
classes (request, response, etc.). This isolation is required to avoid 
deadlocks. Designing a protocol working with a single vnet is possible but 
would be super expensive to implement as a lot of reordering capabilities would 
be required from the units (ruby machines).

The closer you can get from using a single network is to have each physical 
link support all vnets, which is the default for both SimpleNetwork and Garnet. 
However, you cannot get around the “virtual channels” (usually a dedicated 
buffer for each vnet at both end of each link).

BTW, the error you are observing is telling you that you cannot have more than 
one input and/or output with a given vnet ID for each ruby machine. This is an 
arbitrary limitation baked deep into SLICC/Ruby to simplify things.

Regards,

Gabriel
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org


[gem5-users] Re: Simulation of MSHR and write-back buffer in Ruby?

2023-09-18 Thread gabriel.busnot--- via gem5-users
Hi Ghadeer,

I think this thread could help you with that: 
https://gem5-workspace.slack.com/archives/C03K26BGTKL/p1694723886410439.

Regards,

Gabriel
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org


[gem5-users] Gem5 - Garnet - Full System

2023-09-18 Thread Karim Soliman via gem5-users
Hey everyone, hope you are doing well.
For my research purposes, I'm using Gem5 in FS mode, with PARSEC benchmark
suite to do some research related to Network-on-Chip.
I have built gem5 using the default command and I'm using 2-D Mesh topology

   - python3 `which scons` build/X86/gem5.opt -j n

and I'm also using the default protocol "MESI_Two_Level" defined in the
"./gem5/build_opts/X86" file.
The default protocol uses 3 virtual networks to inject messages.

I want to use only one virtual network instead of using 3 virtual networks.
Can I change the protocol to inject all the messages into one virtual
network? If so, how?

I tried to change the value of virtual_network in these files to be the
same

   - gem5/src/mem/ruby/protocol/MESI_Two_Level-dir.sm
   - gem5/src/mem/ruby/protocol/MESI_Two_Level-dma.sm
   - gem5/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm
   - gem5/src/mem/ruby/protocol/MESI_Two_Level-L2cache.sm

MessageBuffer * requestToDir, network="From", virtual_network="0",
vnet_type="request";
   MessageBuffer * responseToDir, network="From", virtual_network="1",
vnet_type="response";
   MessageBuffer * responseFromDir, network="To", virtual_network="1",
vnet_type="response";

But I got an assert error when one of the previous files had two identical
"network", and "virtual_network" values.

AssertionError: :
  File "/gem5/SConstruct", line 816:
duplicate=GetOption('duplicate_sources'))
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 614:
return method(*args, **kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 551:
return _SConscript(self.fs, *files, **subst_kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 256:
call_stack[-1].globals)
  File "/gem5/src/SConscript", line 557:
duplicate=GetOption('duplicate_sources'))
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 614:
return method(*args, **kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 551:
return _SConscript(self.fs, *files, **subst_kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 256:
call_stack[-1].globals)
  File "/gem5/src/mem/ruby/protocol/SConscript", line 105:
nodes = env.SLICC([], sources)
  File "/usr/lib/scons/SCons/Environment.py", line 260:
return MethodWrapper.__call__(self, target, source, *args, **kw)
  File "/usr/lib/scons/SCons/Environment.py", line 224:
return self.method(*nargs, **kwargs)
  File "/usr/lib/scons/SCons/Builder.py", line 645:
return self._execute(env, target, source, OverrideWarner(kw), ekw)
  File "/usr/lib/scons/SCons/Builder.py", line 564:
tlist, slist = self._create_nodes(env, target, source)
  File "/usr/lib/scons/SCons/Builder.py", line 528:
target, source = self.emitter(target=tlist, source=slist, env=env)
  File "/gem5/src/mem/ruby/protocol/SConscript", line 71:
slicc.writeCodeFiles(output_dir.abspath, slicc_includes)
  File "/gem5/src/mem/slicc/parser.py", line 83:
self.symtab.writeCodeFiles(code_path, includes)
  File "/gem5/src/mem/slicc/symbols/SymbolTable.py", line 151:
symbol.writeCodeFiles(path, includes)
  File "/gem5/src/mem/slicc/symbols/StateMachine.py", line 248:
self.printControllerCC(path, includes)
  File "/gem5/src/mem/slicc/symbols/StateMachine.py", line 719:
assert (vnet, network) not in vnet_dir_set



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