gem5-users@gem5.org

The gem5 Users mailing list

View all threads

Chiplet Simulation with Gem5

PD
Preet Derasari
Wed, Feb 21, 2024 4:16 PM

Hi,

Does anyone know how to do a chiplet based simulation on the latest Gem5
version with garnet?

My basic requirements are: running distributed C++ applications (using
multi-threading) on the Gem5 O3CPYU type, having the ability to control the
number of cores on individual chiplet dies (even one core per die is
sufficient), control the D-to-D bandwidth, and getting various statistics
including power consumption per die and in the interposer, overall latency
of communication between dies.

On the other hand these are optional: configuring a package with different
topologies (mesh XY, butterfly, etc), possibly different packaging
techniques (like 2D, 2.5D, 3D), simulate heterogenous components like GPU
with CPU, and other NoC parameters like flit with, interposer width, etc.

I tried an older version of Gem5 from Dr. Tushar Krishna's group called
gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an
older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu
20.04 system. Despite that I was not able to run their benchmark beyond a
certain instruction limit (using max-insts) since the simulator started
throwing assertion errors in the garnet2.0/OutVcState.cc code.

I would really appreciate it if someone can point me towards the right
direction here.

Thank you. Best regards,
Preet.

Hi, Does anyone know how to do a chiplet based simulation on the latest Gem5 version with garnet? My basic requirements are: running distributed C++ applications (using multi-threading) on the Gem5 O3CPYU type, having the ability to control the number of cores on individual chiplet dies (even one core per die is sufficient), control the D-to-D bandwidth, and getting various statistics including power consumption per die and in the interposer, overall latency of communication between dies. On the other hand these are optional: configuring a package with different topologies (mesh XY, butterfly, etc), possibly different packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components like GPU with CPU, and other NoC parameters like flit with, interposer width, etc. I tried an older version of Gem5 from Dr. Tushar Krishna's group called gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu 20.04 system. Despite that I was not able to run their benchmark beyond a certain instruction limit (using max-insts) since the simulator started throwing assertion errors in the garnet2.0/OutVcState.cc code. I would really appreciate it if someone can point me towards the right direction here. Thank you. Best regards, Preet.
KT
Krishna, Tushar
Wed, Feb 21, 2024 4:24 PM

The latest version of garnet in the gem5 repo allows you to model multi-chiplet NoCs. [The gem5_chips repo is deprecated - and was actually forked off an earlier version of HeteroGarnet].
Here is its documentation on the gem5 wiki: https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/

Best,
Tushar
On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users gem5-users@gem5.org, wrote:
Hi,

Does anyone know how to do a chiplet based simulation on the latest Gem5 version with garnet?

My basic requirements are: running distributed C++ applications (using multi-threading) on the Gem5 O3CPYU type, having the ability to control the number of cores on individual chiplet dies (even one core per die is sufficient), control the D-to-D bandwidth, and getting various statistics including power consumption per die and in the interposer, overall latency of communication between dies.

On the other hand these are optional: configuring a package with different topologies (mesh XY, butterfly, etc), possibly different packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components like GPU with CPU, and other NoC parameters like flit with, interposer width, etc.

I tried an older version of Gem5 from Dr. Tushar Krishna's group called gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu 20.04 system. Despite that I was not able to run their benchmark beyond a certain instruction limit (using max-insts) since the simulator started throwing assertion errors in the garnet2.0/OutVcState.cc code.

I would really appreciate it if someone can point me towards the right direction here.

Thank you. Best regards,
Preet.

The latest version of garnet in the gem5 repo allows you to model multi-chiplet NoCs. [The gem5_chips repo is deprecated - and was actually forked off an earlier version of HeteroGarnet]. Here is its documentation on the gem5 wiki: https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/ Best, Tushar On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users <gem5-users@gem5.org>, wrote: Hi, Does anyone know how to do a chiplet based simulation on the latest Gem5 version with garnet? My basic requirements are: running distributed C++ applications (using multi-threading) on the Gem5 O3CPYU type, having the ability to control the number of cores on individual chiplet dies (even one core per die is sufficient), control the D-to-D bandwidth, and getting various statistics including power consumption per die and in the interposer, overall latency of communication between dies. On the other hand these are optional: configuring a package with different topologies (mesh XY, butterfly, etc), possibly different packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components like GPU with CPU, and other NoC parameters like flit with, interposer width, etc. I tried an older version of Gem5 from Dr. Tushar Krishna's group called gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu 20.04 system. Despite that I was not able to run their benchmark beyond a certain instruction limit (using max-insts) since the simulator started throwing assertion errors in the garnet2.0/OutVcState.cc code. I would really appreciate it if someone can point me towards the right direction here. Thank you. Best regards, Preet.
PD
Preet Derasari
Wed, Feb 21, 2024 9:52 PM

Dear Dr. Krishna,

Thank you so much for your response.

I read the documentation you linked to in your email and have a few
questions.

  1. Are there any example config files that you are aware of that can help
    me start with chiplet simulation (with some basic routing techniques and
    topologies)? If so, could you point me to them?
  2. How does HeteroGarnet assign processing and other nodes to an
    application? Can I use methods like CPUSET() in C++ to assign a simulated
    core (node) to a thread (created using thread)?
  3. Can I perform SE mode simulations of my applications, or is HeteroGarnet
    only applicable to FS (or the new gem5 v22 "boards")?

I really appreciate your help.

Thank you. Sincerely,
Preet.

On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar tushar@ece.gatech.edu
wrote:

The latest version of garnet in the gem5 repo allows you to model
multi-chiplet NoCs. [The gem5_chips repo is deprecated - and was
actually forked off an earlier version of HeteroGarnet].

Here is its documentation on the gem5 wiki:
https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/

Best,
Tushar
On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users <
gem5-users@gem5.org>, wrote:

Hi,

Does anyone know how to do a chiplet based simulation on the latest Gem5
version with garnet?

My basic requirements are: running distributed C++ applications (using
multi-threading) on the Gem5 O3CPYU type, having the ability to control the
number of cores on individual chiplet dies (even one core per die is
sufficient), control the D-to-D bandwidth, and getting various statistics
including power consumption per die and in the interposer, overall latency
of communication between dies.

On the other hand these are optional: configuring a package with different
topologies (mesh XY, butterfly, etc), possibly different packaging
techniques (like 2D, 2.5D, 3D), simulate heterogenous components like GPU
with CPU, and other NoC parameters like flit with, interposer width, etc.

I tried an older version of Gem5 from Dr. Tushar Krishna's group called
gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an
older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu
20.04 system. Despite that I was not able to run their benchmark beyond a
certain instruction limit (using max-insts) since the simulator started
throwing assertion errors in the garnet2.0/OutVcState.cc code.

I would really appreciate it if someone can point me towards the right
direction here.

Thank you. Best regards,
Preet.

Dear Dr. Krishna, Thank you so much for your response. I read the documentation you linked to in your email and have a few questions. 1. Are there any example config files that you are aware of that can help me start with chiplet simulation (with some basic routing techniques and topologies)? If so, could you point me to them? 2. How does HeteroGarnet assign processing and other nodes to an application? Can I use methods like CPUSET() in C++ to assign a simulated core (node) to a thread (created using thread)? 3. Can I perform SE mode simulations of my applications, or is HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")? I really appreciate your help. Thank you. Sincerely, Preet. On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar <tushar@ece.gatech.edu> wrote: > The latest version of garnet in the gem5 repo allows you to model > multi-chiplet NoCs. *[The gem5_chips repo is deprecated - and was > actually forked off an earlier version of HeteroGarnet].* > Here is its documentation on the gem5 wiki: > https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/ > > Best, > Tushar > On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users < > gem5-users@gem5.org>, wrote: > > Hi, > > Does anyone know how to do a chiplet based simulation on the latest Gem5 > version with garnet? > > My basic requirements are: running distributed C++ applications (using > multi-threading) on the Gem5 O3CPYU type, having the ability to control the > number of cores on individual chiplet dies (even one core per die is > sufficient), control the D-to-D bandwidth, and getting various statistics > including power consumption per die and in the interposer, overall latency > of communication between dies. > > On the other hand these are optional: configuring a package with different > topologies (mesh XY, butterfly, etc), possibly different packaging > techniques (like 2D, 2.5D, 3D), simulate heterogenous components like GPU > with CPU, and other NoC parameters like flit with, interposer width, etc. > > I tried an older version of Gem5 from Dr. Tushar Krishna's group called > gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an > older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu > 20.04 system. Despite that I was not able to run their benchmark beyond a > certain instruction limit (using max-insts) since the simulator started > throwing assertion errors in the garnet2.0/OutVcState.cc code. > > I would really appreciate it if someone can point me towards the right > direction here. > > Thank you. Best regards, > Preet. > >
SB
Srikant Bharadwaj
Thu, Feb 22, 2024 1:07 AM

Hi Preet,

  1. I am attaching a config file for Kite Large topology that you can use as
    a reference for building chiplet-based topologies. More info on Kite Large
    can be found in this paper:
    https://dl.acm.org/doi/abs/10.5555/3437539.3437683
  2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can
    handle any thread pinning that happens on the core levels as long as the
    cores are connected to each other using a topology and Heterogarnet is
    enabled.
  3. Yes, you can perform SE mode simulations as well as Garnet standalone
    simulations with HeteroGarnet. Let me know if you have any questions.

Thanks,
Srikant

On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users <
gem5-users@gem5.org> wrote:

Dear Dr. Krishna,

Thank you so much for your response.

I read the documentation you linked to in your email and have a few
questions.

  1. Are there any example config files that you are aware of that can help
    me start with chiplet simulation (with some basic routing techniques and
    topologies)? If so, could you point me to them?
  2. How does HeteroGarnet assign processing and other nodes to an
    application? Can I use methods like CPUSET() in C++ to assign a simulated
    core (node) to a thread (created using thread)?
  3. Can I perform SE mode simulations of my applications, or is
    HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")?

I really appreciate your help.

Thank you. Sincerely,
Preet.

On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar tushar@ece.gatech.edu
wrote:

The latest version of garnet in the gem5 repo allows you to model
multi-chiplet NoCs. [The gem5_chips repo is deprecated - and was
actually forked off an earlier version of HeteroGarnet].

Here is its documentation on the gem5 wiki:
https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/

Best,
Tushar
On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users <
gem5-users@gem5.org>, wrote:

Hi,

Does anyone know how to do a chiplet based simulation on the latest Gem5
version with garnet?

My basic requirements are: running distributed C++ applications (using
multi-threading) on the Gem5 O3CPYU type, having the ability to control the
number of cores on individual chiplet dies (even one core per die is
sufficient), control the D-to-D bandwidth, and getting various statistics
including power consumption per die and in the interposer, overall latency
of communication between dies.

On the other hand these are optional: configuring a package with
different topologies (mesh XY, butterfly, etc), possibly different
packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components
like GPU with CPU, and other NoC parameters like flit with, interposer
width, etc.

I tried an older version of Gem5 from Dr. Tushar Krishna's group called
gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an
older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu
20.04 system. Despite that I was not able to run their benchmark beyond a
certain instruction limit (using max-insts) since the simulator started
throwing assertion errors in the garnet2.0/OutVcState.cc code.

I would really appreciate it if someone can point me towards the right
direction here.

Thank you. Best regards,
Preet.


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

Hi Preet, 1. I am attaching a config file for Kite Large topology that you can use as a reference for building chiplet-based topologies. More info on Kite Large can be found in this paper: https://dl.acm.org/doi/abs/10.5555/3437539.3437683 2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can handle any thread pinning that happens on the core levels as long as the cores are connected to each other using a topology and Heterogarnet is enabled. 3. Yes, you can perform SE mode simulations as well as Garnet standalone simulations with HeteroGarnet. Let me know if you have any questions. Thanks, Srikant On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users < gem5-users@gem5.org> wrote: > Dear Dr. Krishna, > > Thank you so much for your response. > > I read the documentation you linked to in your email and have a few > questions. > 1. Are there any example config files that you are aware of that can help > me start with chiplet simulation (with some basic routing techniques and > topologies)? If so, could you point me to them? > 2. How does HeteroGarnet assign processing and other nodes to an > application? Can I use methods like CPUSET() in C++ to assign a simulated > core (node) to a thread (created using thread)? > 3. Can I perform SE mode simulations of my applications, or is > HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")? > > I really appreciate your help. > > Thank you. Sincerely, > Preet. > > > On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar <tushar@ece.gatech.edu> > wrote: > >> The latest version of garnet in the gem5 repo allows you to model >> multi-chiplet NoCs. *[The gem5_chips repo is deprecated - and was >> actually forked off an earlier version of HeteroGarnet].* >> Here is its documentation on the gem5 wiki: >> https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/ >> >> Best, >> Tushar >> On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users < >> gem5-users@gem5.org>, wrote: >> >> Hi, >> >> Does anyone know how to do a chiplet based simulation on the latest Gem5 >> version with garnet? >> >> My basic requirements are: running distributed C++ applications (using >> multi-threading) on the Gem5 O3CPYU type, having the ability to control the >> number of cores on individual chiplet dies (even one core per die is >> sufficient), control the D-to-D bandwidth, and getting various statistics >> including power consumption per die and in the interposer, overall latency >> of communication between dies. >> >> On the other hand these are optional: configuring a package with >> different topologies (mesh XY, butterfly, etc), possibly different >> packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components >> like GPU with CPU, and other NoC parameters like flit with, interposer >> width, etc. >> >> I tried an older version of Gem5 from Dr. Tushar Krishna's group called >> gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an >> older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu >> 20.04 system. Despite that I was not able to run their benchmark beyond a >> certain instruction limit (using max-insts) since the simulator started >> throwing assertion errors in the garnet2.0/OutVcState.cc code. >> >> I would really appreciate it if someone can point me towards the right >> direction here. >> >> Thank you. Best regards, >> Preet. >> >> _______________________________________________ > gem5-users mailing list -- gem5-users@gem5.org > To unsubscribe send an email to gem5-users-leave@gem5.org >
PD
Preet Derasari
Thu, Feb 22, 2024 8:05 PM

Hi Srikant,

Thank you so much for answering my questions and providing the reference
file.

Since I am new to NoC simulation and using Garnet 3.0 (HeteroGarnet), I
feel a little lost regarding running a SE or FS mode simulation.

I checked the documentation on Gem5 posted (
https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/) and
read the Kite paper (https://dl.acm.org/doi/abs/10.5555/3437539.3437683).

Nevertheless I could not figure out how to run a simulation (specifically
in SE mode) where I can use the topology you provided.

I am using the deprecated se.py file in the following manner:
build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4
--num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches
--l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8
--mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet
--topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary>
--options="<binary args>"

When I run this command, I get the following message:


---=====
gem5 Simulator System.  https://www.gem5.org
gem5 is copyrighted software; use the --copyright option for details.

gem5 version 23.1.0.0
gem5 compiled Feb 19 2024 14:33:34
gem5 started Feb 22 2024 14:48:41
command line: build/X86/gem5.opt configs/deprecated/example/se.py
--num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches
--l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8
--mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet
--topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary>
'--options=<binary args>'

warn: The se.py script is deprecated. It will be removed in future releases
of  gem5.
TypeError: makeTopology() missing 1 required positional argument: 'Router'

At:
gem5/configs/ruby/Ruby.py(262): create_system
configs/deprecated/example/se.py(268): <module>
src/python/m5/main.py(669): main


---======

I understand that the se.py file may not be equipped to run a HeteroGarnet
simulation, but I could not find any other simulation files that would help
me.

I would really appreciate it if you could help me find a simulation file
along with any modifications needed to Gem5 to support a simulation with
the Kite Large topology.

Thank you again for your help.

Sincerely,
Preet.

On Wed, Feb 21, 2024 at 8:08 PM Srikant Bharadwaj srikantvv@gmail.com
wrote:

Hi Preet,

  1. I am attaching a config file for Kite Large topology that you can use
    as a reference for building chiplet-based topologies. More info on Kite
    Large can be found in this paper:
    https://dl.acm.org/doi/abs/10.5555/3437539.3437683
  2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can
    handle any thread pinning that happens on the core levels as long as the
    cores are connected to each other using a topology and Heterogarnet is
    enabled.
  3. Yes, you can perform SE mode simulations as well as Garnet standalone
    simulations with HeteroGarnet. Let me know if you have any questions.

Thanks,
Srikant

On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users <
gem5-users@gem5.org> wrote:

Dear Dr. Krishna,

Thank you so much for your response.

I read the documentation you linked to in your email and have a few
questions.

  1. Are there any example config files that you are aware of that can help
    me start with chiplet simulation (with some basic routing techniques and
    topologies)? If so, could you point me to them?
  2. How does HeteroGarnet assign processing and other nodes to an
    application? Can I use methods like CPUSET() in C++ to assign a simulated
    core (node) to a thread (created using thread)?
  3. Can I perform SE mode simulations of my applications, or is
    HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")?

I really appreciate your help.

Thank you. Sincerely,
Preet.

On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar tushar@ece.gatech.edu
wrote:

The latest version of garnet in the gem5 repo allows you to model
multi-chiplet NoCs. [The gem5_chips repo is deprecated - and was
actually forked off an earlier version of HeteroGarnet].

Here is its documentation on the gem5 wiki:
https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/

Best,
Tushar
On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users <
gem5-users@gem5.org>, wrote:

Hi,

Does anyone know how to do a chiplet based simulation on the latest Gem5
version with garnet?

My basic requirements are: running distributed C++ applications (using
multi-threading) on the Gem5 O3CPYU type, having the ability to control the
number of cores on individual chiplet dies (even one core per die is
sufficient), control the D-to-D bandwidth, and getting various statistics
including power consumption per die and in the interposer, overall latency
of communication between dies.

On the other hand these are optional: configuring a package with
different topologies (mesh XY, butterfly, etc), possibly different
packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components
like GPU with CPU, and other NoC parameters like flit with, interposer
width, etc.

I tried an older version of Gem5 from Dr. Tushar Krishna's group called
gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an
older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu
20.04 system. Despite that I was not able to run their benchmark beyond a
certain instruction limit (using max-insts) since the simulator started
throwing assertion errors in the garnet2.0/OutVcState.cc code.

I would really appreciate it if someone can point me towards the right
direction here.

Thank you. Best regards,
Preet.


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

Hi Srikant, Thank you so much for answering my questions and providing the reference file. Since I am new to NoC simulation and using Garnet 3.0 (HeteroGarnet), I feel a little lost regarding running a SE or FS mode simulation. I checked the documentation on Gem5 posted ( https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/) and read the Kite paper (https://dl.acm.org/doi/abs/10.5555/3437539.3437683). Nevertheless I could not figure out how to run a simulation (specifically in SE mode) where I can use the topology you provided. I am using the deprecated se.py file in the following manner: build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> --options="<binary args>" When I run this command, I get the following message: ======================================================================= gem5 Simulator System. https://www.gem5.org gem5 is copyrighted software; use the --copyright option for details. gem5 version 23.1.0.0 gem5 compiled Feb 19 2024 14:33:34 gem5 started Feb 22 2024 14:48:41 command line: build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> '--options=<binary args>' warn: The se.py script is deprecated. It will be removed in future releases of gem5. TypeError: makeTopology() missing 1 required positional argument: 'Router' At: gem5/configs/ruby/Ruby.py(262): create_system configs/deprecated/example/se.py(268): <module> src/python/m5/main.py(669): main ======================================================================== I understand that the se.py file may not be equipped to run a HeteroGarnet simulation, but I could not find any other simulation files that would help me. I would really appreciate it if you could help me find a simulation file along with any modifications needed to Gem5 to support a simulation with the Kite Large topology. Thank you again for your help. Sincerely, Preet. On Wed, Feb 21, 2024 at 8:08 PM Srikant Bharadwaj <srikantvv@gmail.com> wrote: > Hi Preet, > 1. I am attaching a config file for Kite Large topology that you can use > as a reference for building chiplet-based topologies. More info on Kite > Large can be found in this paper: > https://dl.acm.org/doi/abs/10.5555/3437539.3437683 > 2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can > handle any thread pinning that happens on the core levels as long as the > cores are connected to each other using a topology and Heterogarnet is > enabled. > 3. Yes, you can perform SE mode simulations as well as Garnet standalone > simulations with HeteroGarnet. Let me know if you have any questions. > > Thanks, > Srikant > > > > On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users < > gem5-users@gem5.org> wrote: > >> Dear Dr. Krishna, >> >> Thank you so much for your response. >> >> I read the documentation you linked to in your email and have a few >> questions. >> 1. Are there any example config files that you are aware of that can help >> me start with chiplet simulation (with some basic routing techniques and >> topologies)? If so, could you point me to them? >> 2. How does HeteroGarnet assign processing and other nodes to an >> application? Can I use methods like CPUSET() in C++ to assign a simulated >> core (node) to a thread (created using thread)? >> 3. Can I perform SE mode simulations of my applications, or is >> HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")? >> >> I really appreciate your help. >> >> Thank you. Sincerely, >> Preet. >> >> >> On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar <tushar@ece.gatech.edu> >> wrote: >> >>> The latest version of garnet in the gem5 repo allows you to model >>> multi-chiplet NoCs. *[The gem5_chips repo is deprecated - and was >>> actually forked off an earlier version of HeteroGarnet].* >>> Here is its documentation on the gem5 wiki: >>> https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/ >>> >>> Best, >>> Tushar >>> On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users < >>> gem5-users@gem5.org>, wrote: >>> >>> Hi, >>> >>> Does anyone know how to do a chiplet based simulation on the latest Gem5 >>> version with garnet? >>> >>> My basic requirements are: running distributed C++ applications (using >>> multi-threading) on the Gem5 O3CPYU type, having the ability to control the >>> number of cores on individual chiplet dies (even one core per die is >>> sufficient), control the D-to-D bandwidth, and getting various statistics >>> including power consumption per die and in the interposer, overall latency >>> of communication between dies. >>> >>> On the other hand these are optional: configuring a package with >>> different topologies (mesh XY, butterfly, etc), possibly different >>> packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components >>> like GPU with CPU, and other NoC parameters like flit with, interposer >>> width, etc. >>> >>> I tried an older version of Gem5 from Dr. Tushar Krishna's group called >>> gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an >>> older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu >>> 20.04 system. Despite that I was not able to run their benchmark beyond a >>> certain instruction limit (using max-insts) since the simulator started >>> throwing assertion errors in the garnet2.0/OutVcState.cc code. >>> >>> I would really appreciate it if someone can point me towards the right >>> direction here. >>> >>> Thank you. Best regards, >>> Preet. >>> >>> _______________________________________________ >> gem5-users mailing list -- gem5-users@gem5.org >> To unsubscribe send an email to gem5-users-leave@gem5.org >> >
Z
zhangcongwu@ict.ac.cn
Fri, Feb 23, 2024 7:45 AM

Hi Preet,

There's a missing parameter in configs/ruby/Ruby.py:259 (maybe different, search makeTopology), you should add a full_system param to this method.
The order of these parameters should be same as makeTopology in KiteLarge_EWMC.py.

Best,
Congwu Zhang

From: Preet Derasari via gem5-users
Date: 2024-02-23 04:05
To: Srikant Bharadwaj
CC: The gem5 Users mailing list; Krishna, Tushar; Preet Derasari
Subject: [gem5-users] Re: Chiplet Simulation with Gem5
Hi Srikant,

Thank you so much for answering my questions and providing the reference file.

Since I am new to NoC simulation and using Garnet 3.0 (HeteroGarnet), I feel a little lost regarding running a SE or FS mode simulation.

I checked the documentation on Gem5 posted (https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/) and read the Kite paper (https://dl.acm.org/doi/abs/10.5555/3437539.3437683).

Nevertheless I could not figure out how to run a simulation (specifically in SE mode) where I can use the topology you provided.

I am using the deprecated se.py file in the following manner:
build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> --options="<binary args>"

When I run this command, I get the following message:


---=====
gem5 Simulator System.  https://www.gem5.org
gem5 is copyrighted software; use the --copyright option for details.

gem5 version 23.1.0.0
gem5 compiled Feb 19 2024 14:33:34
gem5 started Feb 22 2024 14:48:41
command line: build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> '--options=<binary args>'

warn: The se.py script is deprecated. It will be removed in future releases of  gem5.
TypeError: makeTopology() missing 1 required positional argument: 'Router'

At:
gem5/configs/ruby/Ruby.py(262): create_system
configs/deprecated/example/se.py(268): <module>
src/python/m5/main.py(669): main


---======

I understand that the se.py file may not be equipped to run a HeteroGarnet simulation, but I could not find any other simulation files that would help me.

I would really appreciate it if you could help me find a simulation file along with any modifications needed to Gem5 to support a simulation with the Kite Large topology.

Thank you again for your help.

Sincerely,
Preet.

On Wed, Feb 21, 2024 at 8:08 PM Srikant Bharadwaj srikantvv@gmail.com wrote:
Hi Preet,

  1. I am attaching a config file for Kite Large topology that you can use as a reference for building chiplet-based topologies. More info on Kite Large can be found in this paper: https://dl.acm.org/doi/abs/10.5555/3437539.3437683
  2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can handle any thread pinning that happens on the core levels as long as the cores are connected to each other using a topology and Heterogarnet is enabled.
  3. Yes, you can perform SE mode simulations as well as Garnet standalone simulations with HeteroGarnet. Let me know if you have any questions.

Thanks,
Srikant

On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users gem5-users@gem5.org wrote:
Dear Dr. Krishna,

Thank you so much for your response.

I read the documentation you linked to in your email and have a few questions.

  1. Are there any example config files that you are aware of that can help me start with chiplet simulation (with some basic routing techniques and topologies)? If so, could you point me to them?
  2. How does HeteroGarnet assign processing and other nodes to an application? Can I use methods like CPUSET() in C++ to assign a simulated core (node) to a thread (created using thread)?
  3. Can I perform SE mode simulations of my applications, or is HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")?

I really appreciate your help.

Thank you. Sincerely,
Preet.

On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar tushar@ece.gatech.edu wrote:
The latest version of garnet in the gem5 repo allows you to model multi-chiplet NoCs. [The gem5_chips repo is deprecated - and was actually forked off an earlier version of HeteroGarnet].
Here is its documentation on the gem5 wiki: https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/

Best,
Tushar
On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users gem5-users@gem5.org, wrote:
Hi,

Does anyone know how to do a chiplet based simulation on the latest Gem5 version with garnet?

My basic requirements are: running distributed C++ applications (using multi-threading) on the Gem5 O3CPYU type, having the ability to control the number of cores on individual chiplet dies (even one core per die is sufficient), control the D-to-D bandwidth, and getting various statistics including power consumption per die and in the interposer, overall latency of communication between dies.

On the other hand these are optional: configuring a package with different topologies (mesh XY, butterfly, etc), possibly different packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components like GPU with CPU, and other NoC parameters like flit with, interposer width, etc.

I tried an older version of Gem5 from Dr. Tushar Krishna's group called gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu 20.04 system. Despite that I was not able to run their benchmark beyond a certain instruction limit (using max-insts) since the simulator started throwing assertion errors in the garnet2.0/OutVcState.cc code.

I would really appreciate it if someone can point me towards the right direction here.

Thank you. Best regards,
Preet.


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

Hi Preet, There's a missing parameter in configs/ruby/Ruby.py:259 (maybe different, search makeTopology), you should add a `full_system` param to this method. The order of these parameters should be same as `makeTopology` in `KiteLarge_EWMC.py`. Best, Congwu Zhang From: Preet Derasari via gem5-users Date: 2024-02-23 04:05 To: Srikant Bharadwaj CC: The gem5 Users mailing list; Krishna, Tushar; Preet Derasari Subject: [gem5-users] Re: Chiplet Simulation with Gem5 Hi Srikant, Thank you so much for answering my questions and providing the reference file. Since I am new to NoC simulation and using Garnet 3.0 (HeteroGarnet), I feel a little lost regarding running a SE or FS mode simulation. I checked the documentation on Gem5 posted (https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/) and read the Kite paper (https://dl.acm.org/doi/abs/10.5555/3437539.3437683). Nevertheless I could not figure out how to run a simulation (specifically in SE mode) where I can use the topology you provided. I am using the deprecated se.py file in the following manner: build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> --options="<binary args>" When I run this command, I get the following message: ======================================================================= gem5 Simulator System. https://www.gem5.org gem5 is copyrighted software; use the --copyright option for details. gem5 version 23.1.0.0 gem5 compiled Feb 19 2024 14:33:34 gem5 started Feb 22 2024 14:48:41 command line: build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> '--options=<binary args>' warn: The se.py script is deprecated. It will be removed in future releases of gem5. TypeError: makeTopology() missing 1 required positional argument: 'Router' At: gem5/configs/ruby/Ruby.py(262): create_system configs/deprecated/example/se.py(268): <module> src/python/m5/main.py(669): main ======================================================================== I understand that the se.py file may not be equipped to run a HeteroGarnet simulation, but I could not find any other simulation files that would help me. I would really appreciate it if you could help me find a simulation file along with any modifications needed to Gem5 to support a simulation with the Kite Large topology. Thank you again for your help. Sincerely, Preet. On Wed, Feb 21, 2024 at 8:08 PM Srikant Bharadwaj <srikantvv@gmail.com> wrote: Hi Preet, 1. I am attaching a config file for Kite Large topology that you can use as a reference for building chiplet-based topologies. More info on Kite Large can be found in this paper: https://dl.acm.org/doi/abs/10.5555/3437539.3437683 2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can handle any thread pinning that happens on the core levels as long as the cores are connected to each other using a topology and Heterogarnet is enabled. 3. Yes, you can perform SE mode simulations as well as Garnet standalone simulations with HeteroGarnet. Let me know if you have any questions. Thanks, Srikant On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users <gem5-users@gem5.org> wrote: Dear Dr. Krishna, Thank you so much for your response. I read the documentation you linked to in your email and have a few questions. 1. Are there any example config files that you are aware of that can help me start with chiplet simulation (with some basic routing techniques and topologies)? If so, could you point me to them? 2. How does HeteroGarnet assign processing and other nodes to an application? Can I use methods like CPUSET() in C++ to assign a simulated core (node) to a thread (created using thread)? 3. Can I perform SE mode simulations of my applications, or is HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")? I really appreciate your help. Thank you. Sincerely, Preet. On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar <tushar@ece.gatech.edu> wrote: The latest version of garnet in the gem5 repo allows you to model multi-chiplet NoCs. [The gem5_chips repo is deprecated - and was actually forked off an earlier version of HeteroGarnet]. Here is its documentation on the gem5 wiki: https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/ Best, Tushar On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users <gem5-users@gem5.org>, wrote: Hi, Does anyone know how to do a chiplet based simulation on the latest Gem5 version with garnet? My basic requirements are: running distributed C++ applications (using multi-threading) on the Gem5 O3CPYU type, having the ability to control the number of cores on individual chiplet dies (even one core per die is sufficient), control the D-to-D bandwidth, and getting various statistics including power consumption per die and in the interposer, overall latency of communication between dies. On the other hand these are optional: configuring a package with different topologies (mesh XY, butterfly, etc), possibly different packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components like GPU with CPU, and other NoC parameters like flit with, interposer width, etc. I tried an older version of Gem5 from Dr. Tushar Krishna's group called gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu 20.04 system. Despite that I was not able to run their benchmark beyond a certain instruction limit (using max-insts) since the simulator started throwing assertion errors in the garnet2.0/OutVcState.cc code. I would really appreciate it if someone can point me towards the right direction here. Thank you. Best regards, Preet. _______________________________________________ gem5-users mailing list -- gem5-users@gem5.org To unsubscribe send an email to gem5-users-leave@gem5.org
PD
Preet Derasari
Fri, Feb 23, 2024 4:18 PM

Hi Congwu Zhang,

I was able to fix that error with this information, but now there are some
other errors related to missing options that the KiteLarge_EWMC.py script
requires.
Some of these may be:
concentration_factor
num_chiplets
num_mem_ctrls
chiplet_width
chiplet_clock
top_vc
tsv_width
noi_width
tsv_clock
bottom_vc
mem_clock

This may not be an exhaustive list of all the options needed, but I figured
this out from the KiteLarge_EWMC.py file. I just looked for options
exclusively found in that file and nowhere else in Gem5.
As far as I know, if I want these options enabled, I may need to add them
to the Options.py file manually. Is that correct?
Also, if possible, do you know how I can add those options otherwise?

Thank you for your time and help. I really appreciate it.

Sincerely,
Preet.

On Fri, Feb 23, 2024 at 2:46 AM zhangcongwu--- via gem5-users <
gem5-users@gem5.org> wrote:

Hi Preet,

There's a missing parameter in configs/ruby/Ruby.py:259 (maybe different,
search makeTopology), you should add a full_system param to this method.
The order of these parameters should be same as makeTopology in
KiteLarge_EWMC.py.

Best,
Congwu Zhang

From: Preet Derasari via gem5-users gem5-users@gem5.org
Date: 2024-02-23 04:05
To: Srikant Bharadwaj srikantvv@gmail.com
CC: The gem5 Users mailing list gem5-users@gem5.org; Krishna, Tushar
tushar@ece.gatech.edu; Preet Derasari preetderasari@gmail.com
Subject: [gem5-users] Re: Chiplet Simulation with Gem5
Hi Srikant,

Thank you so much for answering my questions and providing the reference
file.

Since I am new to NoC simulation and using Garnet 3.0 (HeteroGarnet), I
feel a little lost regarding running a SE or FS mode simulation.

I checked the documentation on Gem5 posted (
https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/) and
read the Kite paper (https://dl.acm.org/doi/abs/10.5555/3437539.3437683).

Nevertheless I could not figure out how to run a simulation (specifically
in SE mode) where I can use the topology you provided.

I am using the deprecated se.py file in the following manner:
build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4
--num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches
--l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8
--mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet
--topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary>
--options="<binary args>"

When I run this command, I get the following message:


---=====
gem5 Simulator System.  https://www.gem5.org
gem5 is copyrighted software; use the --copyright option for details.

gem5 version 23.1.0.0
gem5 compiled Feb 19 2024 14:33:34
gem5 started Feb 22 2024 14:48:41
command line: build/X86/gem5.opt configs/deprecated/example/se.py
--num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches
--l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8
--mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet
--topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary>
'--options=<binary args>'

warn: The se.py script is deprecated. It will be removed in future
releases of  gem5.
TypeError: makeTopology() missing 1 required positional argument: 'Router'

At:
gem5/configs/ruby/Ruby.py(262): create_system
configs/deprecated/example/se.py(268): <module>
src/python/m5/main.py(669): main


---======

I understand that the se.py file may not be equipped to run a HeteroGarnet
simulation, but I could not find any other simulation files that would help
me.

I would really appreciate it if you could help me find a simulation file
along with any modifications needed to Gem5 to support a simulation with
the Kite Large topology.

Thank you again for your help.

Sincerely,
Preet.

On Wed, Feb 21, 2024 at 8:08 PM Srikant Bharadwaj srikantvv@gmail.com
wrote:

Hi Preet,

  1. I am attaching a config file for Kite Large topology that you can use
    as a reference for building chiplet-based topologies. More info on Kite
    Large can be found in this paper:
    https://dl.acm.org/doi/abs/10.5555/3437539.3437683
  2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can
    handle any thread pinning that happens on the core levels as long as the
    cores are connected to each other using a topology and Heterogarnet is
    enabled.
  3. Yes, you can perform SE mode simulations as well as Garnet standalone
    simulations with HeteroGarnet. Let me know if you have any questions.

Thanks,
Srikant

On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users <
gem5-users@gem5.org> wrote:

Dear Dr. Krishna,

Thank you so much for your response.

I read the documentation you linked to in your email and have a few
questions.

  1. Are there any example config files that you are aware of that can
    help me start with chiplet simulation (with some basic routing techniques
    and topologies)? If so, could you point me to them?
  2. How does HeteroGarnet assign processing and other nodes to an
    application? Can I use methods like CPUSET() in C++ to assign a simulated
    core (node) to a thread (created using thread)?
  3. Can I perform SE mode simulations of my applications, or is
    HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")?

I really appreciate your help.

Thank you. Sincerely,
Preet.

On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar tushar@ece.gatech.edu
wrote:

The latest version of garnet in the gem5 repo allows you to model
multi-chiplet NoCs. [The gem5_chips repo is deprecated - and was
actually forked off an earlier version of HeteroGarnet].

Here is its documentation on the gem5 wiki:
https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/

Best,
Tushar
On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users <
gem5-users@gem5.org>, wrote:

Hi,

Does anyone know how to do a chiplet based simulation on the latest
Gem5 version with garnet?

My basic requirements are: running distributed C++ applications (using
multi-threading) on the Gem5 O3CPYU type, having the ability to control the
number of cores on individual chiplet dies (even one core per die is
sufficient), control the D-to-D bandwidth, and getting various statistics
including power consumption per die and in the interposer, overall latency
of communication between dies.

On the other hand these are optional: configuring a package with
different topologies (mesh XY, butterfly, etc), possibly different
packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components
like GPU with CPU, and other NoC parameters like flit with, interposer
width, etc.

I tried an older version of Gem5 from Dr. Tushar Krishna's group called
gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use
an older version of Python (2.7) and GCC (8) to even compile Gem5 on an
Ubuntu 20.04 system. Despite that I was not able to run their benchmark
beyond a certain instruction limit (using max-insts) since the simulator
started throwing assertion errors in the garnet2.0/OutVcState.cc code.

I would really appreciate it if someone can point me towards the right
direction here.

Thank you. Best regards,
Preet.


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

Hi Congwu Zhang, I was able to fix that error with this information, but now there are some other errors related to missing options that the KiteLarge_EWMC.py script requires. Some of these may be: concentration_factor num_chiplets num_mem_ctrls chiplet_width chiplet_clock top_vc tsv_width noi_width tsv_clock bottom_vc mem_clock This may not be an exhaustive list of all the options needed, but I figured this out from the KiteLarge_EWMC.py file. I just looked for options exclusively found in that file and nowhere else in Gem5. As far as I know, if I want these options enabled, I may need to add them to the Options.py file manually. Is that correct? Also, if possible, do you know how I can add those options otherwise? Thank you for your time and help. I really appreciate it. Sincerely, Preet. On Fri, Feb 23, 2024 at 2:46 AM zhangcongwu--- via gem5-users < gem5-users@gem5.org> wrote: > Hi Preet, > > There's a missing parameter in configs/ruby/Ruby.py:259 (maybe different, > search makeTopology), you should add a `full_system` param to this method. > The order of these parameters should be same as `makeTopology` in > `KiteLarge_EWMC.py`. > > Best, > Congwu Zhang > > > *From:* Preet Derasari via gem5-users <gem5-users@gem5.org> > *Date:* 2024-02-23 04:05 > *To:* Srikant Bharadwaj <srikantvv@gmail.com> > *CC:* The gem5 Users mailing list <gem5-users@gem5.org>; Krishna, Tushar > <tushar@ece.gatech.edu>; Preet Derasari <preetderasari@gmail.com> > *Subject:* [gem5-users] Re: Chiplet Simulation with Gem5 > Hi Srikant, > > Thank you so much for answering my questions and providing the reference > file. > > Since I am new to NoC simulation and using Garnet 3.0 (HeteroGarnet), I > feel a little lost regarding running a SE or FS mode simulation. > > I checked the documentation on Gem5 posted ( > https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/) and > read the Kite paper (https://dl.acm.org/doi/abs/10.5555/3437539.3437683). > > Nevertheless I could not figure out how to run a simulation (specifically > in SE mode) where I can use the topology you provided. > > I am using the deprecated se.py file in the following manner: > build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 > --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches > --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 > --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet > --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> > --options="<binary args>" > > When I run this command, I get the following message: > ======================================================================= > gem5 Simulator System. https://www.gem5.org > gem5 is copyrighted software; use the --copyright option for details. > > gem5 version 23.1.0.0 > gem5 compiled Feb 19 2024 14:33:34 > gem5 started Feb 22 2024 14:48:41 > command line: build/X86/gem5.opt configs/deprecated/example/se.py > --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches > --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 > --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet > --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> > '--options=<binary args>' > > warn: The se.py script is deprecated. It will be removed in future > releases of gem5. > TypeError: makeTopology() missing 1 required positional argument: 'Router' > > At: > gem5/configs/ruby/Ruby.py(262): create_system > configs/deprecated/example/se.py(268): <module> > src/python/m5/main.py(669): main > ======================================================================== > > I understand that the se.py file may not be equipped to run a HeteroGarnet > simulation, but I could not find any other simulation files that would help > me. > > I would really appreciate it if you could help me find a simulation file > along with any modifications needed to Gem5 to support a simulation with > the Kite Large topology. > > Thank you again for your help. > > Sincerely, > Preet. > > > On Wed, Feb 21, 2024 at 8:08 PM Srikant Bharadwaj <srikantvv@gmail.com> > wrote: > >> Hi Preet, >> 1. I am attaching a config file for Kite Large topology that you can use >> as a reference for building chiplet-based topologies. More info on Kite >> Large can be found in this paper: >> https://dl.acm.org/doi/abs/10.5555/3437539.3437683 >> 2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can >> handle any thread pinning that happens on the core levels as long as the >> cores are connected to each other using a topology and Heterogarnet is >> enabled. >> 3. Yes, you can perform SE mode simulations as well as Garnet standalone >> simulations with HeteroGarnet. Let me know if you have any questions. >> >> Thanks, >> Srikant >> >> >> >> On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users < >> gem5-users@gem5.org> wrote: >> >>> Dear Dr. Krishna, >>> >>> Thank you so much for your response. >>> >>> I read the documentation you linked to in your email and have a few >>> questions. >>> 1. Are there any example config files that you are aware of that can >>> help me start with chiplet simulation (with some basic routing techniques >>> and topologies)? If so, could you point me to them? >>> 2. How does HeteroGarnet assign processing and other nodes to an >>> application? Can I use methods like CPUSET() in C++ to assign a simulated >>> core (node) to a thread (created using thread)? >>> 3. Can I perform SE mode simulations of my applications, or is >>> HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")? >>> >>> I really appreciate your help. >>> >>> Thank you. Sincerely, >>> Preet. >>> >>> >>> On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar <tushar@ece.gatech.edu> >>> wrote: >>> >>>> The latest version of garnet in the gem5 repo allows you to model >>>> multi-chiplet NoCs. *[The gem5_chips repo is deprecated - and was >>>> actually forked off an earlier version of HeteroGarnet].* >>>> Here is its documentation on the gem5 wiki: >>>> https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/ >>>> >>>> Best, >>>> Tushar >>>> On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users < >>>> gem5-users@gem5.org>, wrote: >>>> >>>> Hi, >>>> >>>> Does anyone know how to do a chiplet based simulation on the latest >>>> Gem5 version with garnet? >>>> >>>> My basic requirements are: running distributed C++ applications (using >>>> multi-threading) on the Gem5 O3CPYU type, having the ability to control the >>>> number of cores on individual chiplet dies (even one core per die is >>>> sufficient), control the D-to-D bandwidth, and getting various statistics >>>> including power consumption per die and in the interposer, overall latency >>>> of communication between dies. >>>> >>>> On the other hand these are optional: configuring a package with >>>> different topologies (mesh XY, butterfly, etc), possibly different >>>> packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components >>>> like GPU with CPU, and other NoC parameters like flit with, interposer >>>> width, etc. >>>> >>>> I tried an older version of Gem5 from Dr. Tushar Krishna's group called >>>> gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use >>>> an older version of Python (2.7) and GCC (8) to even compile Gem5 on an >>>> Ubuntu 20.04 system. Despite that I was not able to run their benchmark >>>> beyond a certain instruction limit (using max-insts) since the simulator >>>> started throwing assertion errors in the garnet2.0/OutVcState.cc code. >>>> >>>> I would really appreciate it if someone can point me towards the right >>>> direction here. >>>> >>>> Thank you. Best regards, >>>> Preet. >>>> >>>> _______________________________________________ >>> 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 >
Z
zhangcongwu@ict.ac.cn
Sat, Feb 24, 2024 1:37 AM

Hi Preet,

I think it's ok to add these options to Options.py, such as defining a function like addChipletOptions.
If you want to add these options in other files, you can add ruby related options in configs/ruby/Ruby.py.
For convenience, you should add them in a file.

Best,
Congwu

zhangcongwu@ict.ac.cn

From: Preet Derasari via gem5-users
Date: 2024-02-24 00:18
To: The gem5 Users mailing list
CC: zhangcongwu@ict.ac.cn; Preet Derasari
Subject: [gem5-users] Re: Chiplet Simulation with Gem5
Hi Congwu Zhang,

I was able to fix that error with this information, but now there are some other errors related to missing options that the KiteLarge_EWMC.py script requires.
Some of these may be:
concentration_factor
num_chiplets
num_mem_ctrls
chiplet_width
chiplet_clock
top_vc
tsv_width
noi_width
tsv_clock
bottom_vc
mem_clock

This may not be an exhaustive list of all the options needed, but I figured this out from the KiteLarge_EWMC.py file. I just looked for options exclusively found in that file and nowhere else in Gem5.
As far as I know, if I want these options enabled, I may need to add them to the Options.py file manually. Is that correct?
Also, if possible, do you know how I can add those options otherwise?

Thank you for your time and help. I really appreciate it.

Sincerely,
Preet.

On Fri, Feb 23, 2024 at 2:46 AM zhangcongwu--- via gem5-users gem5-users@gem5.org wrote:
Hi Preet,

There's a missing parameter in configs/ruby/Ruby.py:259 (maybe different, search makeTopology), you should add a full_system param to this method.
The order of these parameters should be same as makeTopology in KiteLarge_EWMC.py.

Best,
Congwu Zhang

From: Preet Derasari via gem5-users
Date: 2024-02-23 04:05
To: Srikant Bharadwaj
CC: The gem5 Users mailing list; Krishna, Tushar; Preet Derasari
Subject: [gem5-users] Re: Chiplet Simulation with Gem5
Hi Srikant,

Thank you so much for answering my questions and providing the reference file.

Since I am new to NoC simulation and using Garnet 3.0 (HeteroGarnet), I feel a little lost regarding running a SE or FS mode simulation.

I checked the documentation on Gem5 posted (https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/) and read the Kite paper (https://dl.acm.org/doi/abs/10.5555/3437539.3437683).

Nevertheless I could not figure out how to run a simulation (specifically in SE mode) where I can use the topology you provided.

I am using the deprecated se.py file in the following manner:
build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> --options="<binary args>"

When I run this command, I get the following message:


---=====
gem5 Simulator System.  https://www.gem5.org
gem5 is copyrighted software; use the --copyright option for details.

gem5 version 23.1.0.0
gem5 compiled Feb 19 2024 14:33:34
gem5 started Feb 22 2024 14:48:41
command line: build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> '--options=<binary args>'

warn: The se.py script is deprecated. It will be removed in future releases of  gem5.
TypeError: makeTopology() missing 1 required positional argument: 'Router'

At:
gem5/configs/ruby/Ruby.py(262): create_system
configs/deprecated/example/se.py(268): <module>
src/python/m5/main.py(669): main


---======

I understand that the se.py file may not be equipped to run a HeteroGarnet simulation, but I could not find any other simulation files that would help me.

I would really appreciate it if you could help me find a simulation file along with any modifications needed to Gem5 to support a simulation with the Kite Large topology.

Thank you again for your help.

Sincerely,
Preet.

On Wed, Feb 21, 2024 at 8:08 PM Srikant Bharadwaj srikantvv@gmail.com wrote:
Hi Preet,

  1. I am attaching a config file for Kite Large topology that you can use as a reference for building chiplet-based topologies. More info on Kite Large can be found in this paper: https://dl.acm.org/doi/abs/10.5555/3437539.3437683
  2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can handle any thread pinning that happens on the core levels as long as the cores are connected to each other using a topology and Heterogarnet is enabled.
  3. Yes, you can perform SE mode simulations as well as Garnet standalone simulations with HeteroGarnet. Let me know if you have any questions.

Thanks,
Srikant

On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users gem5-users@gem5.org wrote:
Dear Dr. Krishna,

Thank you so much for your response.

I read the documentation you linked to in your email and have a few questions.

  1. Are there any example config files that you are aware of that can help me start with chiplet simulation (with some basic routing techniques and topologies)? If so, could you point me to them?
  2. How does HeteroGarnet assign processing and other nodes to an application? Can I use methods like CPUSET() in C++ to assign a simulated core (node) to a thread (created using thread)?
  3. Can I perform SE mode simulations of my applications, or is HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")?

I really appreciate your help.

Thank you. Sincerely,
Preet.

On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar tushar@ece.gatech.edu wrote:
The latest version of garnet in the gem5 repo allows you to model multi-chiplet NoCs. [The gem5_chips repo is deprecated - and was actually forked off an earlier version of HeteroGarnet].
Here is its documentation on the gem5 wiki: https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/

Best,
Tushar
On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users gem5-users@gem5.org, wrote:
Hi,

Does anyone know how to do a chiplet based simulation on the latest Gem5 version with garnet?

My basic requirements are: running distributed C++ applications (using multi-threading) on the Gem5 O3CPYU type, having the ability to control the number of cores on individual chiplet dies (even one core per die is sufficient), control the D-to-D bandwidth, and getting various statistics including power consumption per die and in the interposer, overall latency of communication between dies.

On the other hand these are optional: configuring a package with different topologies (mesh XY, butterfly, etc), possibly different packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components like GPU with CPU, and other NoC parameters like flit with, interposer width, etc.

I tried an older version of Gem5 from Dr. Tushar Krishna's group called gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu 20.04 system. Despite that I was not able to run their benchmark beyond a certain instruction limit (using max-insts) since the simulator started throwing assertion errors in the garnet2.0/OutVcState.cc code.

I would really appreciate it if someone can point me towards the right direction here.

Thank you. Best regards,
Preet.


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

Hi Preet, I think it's ok to add these options to Options.py, such as defining a function like `addChipletOptions`. If you want to add these options in other files, you can add ruby related options in `configs/ruby/Ruby.py`. For convenience, you should add them in a file. Best, Congwu zhangcongwu@ict.ac.cn From: Preet Derasari via gem5-users Date: 2024-02-24 00:18 To: The gem5 Users mailing list CC: zhangcongwu@ict.ac.cn; Preet Derasari Subject: [gem5-users] Re: Chiplet Simulation with Gem5 Hi Congwu Zhang, I was able to fix that error with this information, but now there are some other errors related to missing options that the KiteLarge_EWMC.py script requires. Some of these may be: concentration_factor num_chiplets num_mem_ctrls chiplet_width chiplet_clock top_vc tsv_width noi_width tsv_clock bottom_vc mem_clock This may not be an exhaustive list of all the options needed, but I figured this out from the KiteLarge_EWMC.py file. I just looked for options exclusively found in that file and nowhere else in Gem5. As far as I know, if I want these options enabled, I may need to add them to the Options.py file manually. Is that correct? Also, if possible, do you know how I can add those options otherwise? Thank you for your time and help. I really appreciate it. Sincerely, Preet. On Fri, Feb 23, 2024 at 2:46 AM zhangcongwu--- via gem5-users <gem5-users@gem5.org> wrote: Hi Preet, There's a missing parameter in configs/ruby/Ruby.py:259 (maybe different, search makeTopology), you should add a `full_system` param to this method. The order of these parameters should be same as `makeTopology` in `KiteLarge_EWMC.py`. Best, Congwu Zhang From: Preet Derasari via gem5-users Date: 2024-02-23 04:05 To: Srikant Bharadwaj CC: The gem5 Users mailing list; Krishna, Tushar; Preet Derasari Subject: [gem5-users] Re: Chiplet Simulation with Gem5 Hi Srikant, Thank you so much for answering my questions and providing the reference file. Since I am new to NoC simulation and using Garnet 3.0 (HeteroGarnet), I feel a little lost regarding running a SE or FS mode simulation. I checked the documentation on Gem5 posted (https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/) and read the Kite paper (https://dl.acm.org/doi/abs/10.5555/3437539.3437683). Nevertheless I could not figure out how to run a simulation (specifically in SE mode) where I can use the topology you provided. I am using the deprecated se.py file in the following manner: build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> --options="<binary args>" When I run this command, I get the following message: ======================================================================= gem5 Simulator System. https://www.gem5.org gem5 is copyrighted software; use the --copyright option for details. gem5 version 23.1.0.0 gem5 compiled Feb 19 2024 14:33:34 gem5 started Feb 22 2024 14:48:41 command line: build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> '--options=<binary args>' warn: The se.py script is deprecated. It will be removed in future releases of gem5. TypeError: makeTopology() missing 1 required positional argument: 'Router' At: gem5/configs/ruby/Ruby.py(262): create_system configs/deprecated/example/se.py(268): <module> src/python/m5/main.py(669): main ======================================================================== I understand that the se.py file may not be equipped to run a HeteroGarnet simulation, but I could not find any other simulation files that would help me. I would really appreciate it if you could help me find a simulation file along with any modifications needed to Gem5 to support a simulation with the Kite Large topology. Thank you again for your help. Sincerely, Preet. On Wed, Feb 21, 2024 at 8:08 PM Srikant Bharadwaj <srikantvv@gmail.com> wrote: Hi Preet, 1. I am attaching a config file for Kite Large topology that you can use as a reference for building chiplet-based topologies. More info on Kite Large can be found in this paper: https://dl.acm.org/doi/abs/10.5555/3437539.3437683 2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can handle any thread pinning that happens on the core levels as long as the cores are connected to each other using a topology and Heterogarnet is enabled. 3. Yes, you can perform SE mode simulations as well as Garnet standalone simulations with HeteroGarnet. Let me know if you have any questions. Thanks, Srikant On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users <gem5-users@gem5.org> wrote: Dear Dr. Krishna, Thank you so much for your response. I read the documentation you linked to in your email and have a few questions. 1. Are there any example config files that you are aware of that can help me start with chiplet simulation (with some basic routing techniques and topologies)? If so, could you point me to them? 2. How does HeteroGarnet assign processing and other nodes to an application? Can I use methods like CPUSET() in C++ to assign a simulated core (node) to a thread (created using thread)? 3. Can I perform SE mode simulations of my applications, or is HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")? I really appreciate your help. Thank you. Sincerely, Preet. On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar <tushar@ece.gatech.edu> wrote: The latest version of garnet in the gem5 repo allows you to model multi-chiplet NoCs. [The gem5_chips repo is deprecated - and was actually forked off an earlier version of HeteroGarnet]. Here is its documentation on the gem5 wiki: https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/ Best, Tushar On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users <gem5-users@gem5.org>, wrote: Hi, Does anyone know how to do a chiplet based simulation on the latest Gem5 version with garnet? My basic requirements are: running distributed C++ applications (using multi-threading) on the Gem5 O3CPYU type, having the ability to control the number of cores on individual chiplet dies (even one core per die is sufficient), control the D-to-D bandwidth, and getting various statistics including power consumption per die and in the interposer, overall latency of communication between dies. On the other hand these are optional: configuring a package with different topologies (mesh XY, butterfly, etc), possibly different packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components like GPU with CPU, and other NoC parameters like flit with, interposer width, etc. I tried an older version of Gem5 from Dr. Tushar Krishna's group called gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had to use an older version of Python (2.7) and GCC (8) to even compile Gem5 on an Ubuntu 20.04 system. Despite that I was not able to run their benchmark beyond a certain instruction limit (using max-insts) since the simulator started throwing assertion errors in the garnet2.0/OutVcState.cc code. I would really appreciate it if someone can point me towards the right direction here. Thank you. Best regards, Preet. _______________________________________________ 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
PD
Preet Derasari
Wed, Feb 28, 2024 7:04 PM

Hi Congwu,

Thank you for your valuable feedback.

Since I am still learning how to use HeteroGarnet with Gem5, I decided to
start with a simple topology that is the Mesh_XY.py

I am successfully able to run my application on multiple cores (4 in this
case) connected in a mesh topology using this command:

build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4
--num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches
--l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --l2cache
--num-l2caches=4 --l2_size=2MB --mem-size=8GB --ruby --network=garnet
--topology=Mesh_XY --mesh-rows=2 --cmd=/path/to/app/binary --options="<cmd options>"

But when I want to use m5ops to mark the ROI within my application (using
m5_dump_reset_stats(0,0)), I get the following error:

src/mem/ruby/network/Network.hh:122: fatal: Functional read not
implemented.

Does this mean that I cannot use m5ops with HeteroGarnet? Or should I use
some other m5ops instead?

I would really appreciate your advice.

Thank you. Sincerely,
Preet.

On Fri, Feb 23, 2024 at 8:37 PM zhangcongwu@ict.ac.cn zhangcongwu@ict.ac.cn
wrote:

Hi Preet,

I think it's ok to add these options to Options.py, such as defining a
function like addChipletOptions.
If you want to add these options in other files, you can add ruby related
options in configs/ruby/Ruby.py.
For convenience, you should add them in a file.

Best,
Congwu

zhangcongwu@ict.ac.cn

From: Preet Derasari via gem5-users gem5-users@gem5.org
Date: 2024-02-24 00:18
To: The gem5 Users mailing list gem5-users@gem5.org
CC: zhangcongwu@ict.ac.cn; Preet Derasari preetderasari@gmail.com
Subject: [gem5-users] Re: Chiplet Simulation with Gem5
Hi Congwu Zhang,

I was able to fix that error with this information, but now there are some
other errors related to missing options that the KiteLarge_EWMC.py script
requires.
Some of these may be:
concentration_factor
num_chiplets
num_mem_ctrls
chiplet_width
chiplet_clock
top_vc
tsv_width
noi_width
tsv_clock
bottom_vc
mem_clock

This may not be an exhaustive list of all the options needed, but I
figured this out from the KiteLarge_EWMC.py file. I just looked for options
exclusively found in that file and nowhere else in Gem5.
As far as I know, if I want these options enabled, I may need to add them
to the Options.py file manually. Is that correct?
Also, if possible, do you know how I can add those options otherwise?

Thank you for your time and help. I really appreciate it.

Sincerely,
Preet.

On Fri, Feb 23, 2024 at 2:46 AM zhangcongwu--- via gem5-users <
gem5-users@gem5.org> wrote:

Hi Preet,

There's a missing parameter in configs/ruby/Ruby.py:259 (maybe different,
search makeTopology), you should add a full_system param to this method.
The order of these parameters should be same as makeTopology in
KiteLarge_EWMC.py.

Best,
Congwu Zhang

From: Preet Derasari via gem5-users gem5-users@gem5.org
Date: 2024-02-23 04:05
To: Srikant Bharadwaj srikantvv@gmail.com
CC: The gem5 Users mailing list gem5-users@gem5.org; Krishna, Tushar
tushar@ece.gatech.edu; Preet Derasari preetderasari@gmail.com
Subject: [gem5-users] Re: Chiplet Simulation with Gem5
Hi Srikant,

Thank you so much for answering my questions and providing the reference
file.

Since I am new to NoC simulation and using Garnet 3.0 (HeteroGarnet), I
feel a little lost regarding running a SE or FS mode simulation.

I checked the documentation on Gem5 posted (
https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/) and
read the Kite paper (https://dl.acm.org/doi/abs/10.5555/3437539.3437683).

Nevertheless I could not figure out how to run a simulation (specifically
in SE mode) where I can use the topology you provided.

I am using the deprecated se.py file in the following manner:
build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4
--num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches
--l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8
--mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet
--topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary>
--options="<binary args>"

When I run this command, I get the following message:


---=====
gem5 Simulator System.  https://www.gem5.org
gem5 is copyrighted software; use the --copyright option for details.

gem5 version 23.1.0.0
gem5 compiled Feb 19 2024 14:33:34
gem5 started Feb 22 2024 14:48:41
command line: build/X86/gem5.opt configs/deprecated/example/se.py
--num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches
--l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8
--mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet
--topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary>
'--options=<binary args>'

warn: The se.py script is deprecated. It will be removed in future
releases of  gem5.
TypeError: makeTopology() missing 1 required positional argument: 'Router'

At:
gem5/configs/ruby/Ruby.py(262): create_system
configs/deprecated/example/se.py(268): <module>
src/python/m5/main.py(669): main


---======

I understand that the se.py file may not be equipped to run a
HeteroGarnet simulation, but I could not find any other simulation files
that would help me.

I would really appreciate it if you could help me find a simulation file
along with any modifications needed to Gem5 to support a simulation with
the Kite Large topology.

Thank you again for your help.

Sincerely,
Preet.

On Wed, Feb 21, 2024 at 8:08 PM Srikant Bharadwaj srikantvv@gmail.com
wrote:

Hi Preet,

  1. I am attaching a config file for Kite Large topology that you can use
    as a reference for building chiplet-based topologies. More info on Kite
    Large can be found in this paper:
    https://dl.acm.org/doi/abs/10.5555/3437539.3437683
  2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can
    handle any thread pinning that happens on the core levels as long as the
    cores are connected to each other using a topology and Heterogarnet is
    enabled.
  3. Yes, you can perform SE mode simulations as well as Garnet standalone
    simulations with HeteroGarnet. Let me know if you have any questions.

Thanks,
Srikant

On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users <
gem5-users@gem5.org> wrote:

Dear Dr. Krishna,

Thank you so much for your response.

I read the documentation you linked to in your email and have a few
questions.

  1. Are there any example config files that you are aware of that can
    help me start with chiplet simulation (with some basic routing techniques
    and topologies)? If so, could you point me to them?
  2. How does HeteroGarnet assign processing and other nodes to an
    application? Can I use methods like CPUSET() in C++ to assign a simulated
    core (node) to a thread (created using thread)?
  3. Can I perform SE mode simulations of my applications, or is
    HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")?

I really appreciate your help.

Thank you. Sincerely,
Preet.

On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar tushar@ece.gatech.edu
wrote:

The latest version of garnet in the gem5 repo allows you to model
multi-chiplet NoCs. [The gem5_chips repo is deprecated - and was
actually forked off an earlier version of HeteroGarnet].

Here is its documentation on the gem5 wiki:
https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/

Best,
Tushar
On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users <
gem5-users@gem5.org>, wrote:

Hi,

Does anyone know how to do a chiplet based simulation on the latest
Gem5 version with garnet?

My basic requirements are: running distributed C++ applications (using
multi-threading) on the Gem5 O3CPYU type, having the ability to control the
number of cores on individual chiplet dies (even one core per die is
sufficient), control the D-to-D bandwidth, and getting various statistics
including power consumption per die and in the interposer, overall latency
of communication between dies.

On the other hand these are optional: configuring a package with
different topologies (mesh XY, butterfly, etc), possibly different
packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components
like GPU with CPU, and other NoC parameters like flit with, interposer
width, etc.

I tried an older version of Gem5 from Dr. Tushar Krishna's group
called gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had
to use an older version of Python (2.7) and GCC (8) to even compile Gem5 on
an Ubuntu 20.04 system. Despite that I was not able to run their benchmark
beyond a certain instruction limit (using max-insts) since the simulator
started throwing assertion errors in the garnet2.0/OutVcState.cc code.

I would really appreciate it if someone can point me towards the right
direction here.

Thank you. Best regards,
Preet.


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

Hi Congwu, Thank you for your valuable feedback. Since I am still learning how to use HeteroGarnet with Gem5, I decided to start with a simple topology that is the Mesh_XY.py I am successfully able to run my application on multiple cores (4 in this case) connected in a mesh topology using this command: *build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 --l2cache --num-l2caches=4 --l2_size=2MB --mem-size=8GB --ruby --network=garnet --topology=Mesh_XY --mesh-rows=2 --cmd=/path/to/app/binary --options="<cmd options>"* But when I want to use m5ops to mark the ROI within my application (using m5_dump_reset_stats(0,0)), I get the following error: *src/mem/ruby/network/Network.hh:122: fatal: Functional read not implemented.* Does this mean that I cannot use m5ops with HeteroGarnet? Or should I use some other m5ops instead? I would really appreciate your advice. Thank you. Sincerely, Preet. On Fri, Feb 23, 2024 at 8:37 PM zhangcongwu@ict.ac.cn <zhangcongwu@ict.ac.cn> wrote: > Hi Preet, > > I think it's ok to add these options to Options.py, such as defining a > function like `addChipletOptions`. > If you want to add these options in other files, you can add ruby related > options in `configs/ruby/Ruby.py`. > For convenience, you should add them in a file. > > Best, > Congwu > ------------------------------ > zhangcongwu@ict.ac.cn > > > *From:* Preet Derasari via gem5-users <gem5-users@gem5.org> > *Date:* 2024-02-24 00:18 > *To:* The gem5 Users mailing list <gem5-users@gem5.org> > *CC:* zhangcongwu@ict.ac.cn; Preet Derasari <preetderasari@gmail.com> > *Subject:* [gem5-users] Re: Chiplet Simulation with Gem5 > Hi Congwu Zhang, > > I was able to fix that error with this information, but now there are some > other errors related to missing options that the KiteLarge_EWMC.py script > requires. > Some of these may be: > concentration_factor > num_chiplets > num_mem_ctrls > chiplet_width > chiplet_clock > top_vc > tsv_width > noi_width > tsv_clock > bottom_vc > mem_clock > > This may not be an exhaustive list of all the options needed, but I > figured this out from the KiteLarge_EWMC.py file. I just looked for options > exclusively found in that file and nowhere else in Gem5. > As far as I know, if I want these options enabled, I may need to add them > to the Options.py file manually. Is that correct? > Also, if possible, do you know how I can add those options otherwise? > > Thank you for your time and help. I really appreciate it. > > Sincerely, > Preet. > > > On Fri, Feb 23, 2024 at 2:46 AM zhangcongwu--- via gem5-users < > gem5-users@gem5.org> wrote: > >> Hi Preet, >> >> There's a missing parameter in configs/ruby/Ruby.py:259 (maybe different, >> search makeTopology), you should add a `full_system` param to this method. >> The order of these parameters should be same as `makeTopology` in >> `KiteLarge_EWMC.py`. >> >> Best, >> Congwu Zhang >> >> >> *From:* Preet Derasari via gem5-users <gem5-users@gem5.org> >> *Date:* 2024-02-23 04:05 >> *To:* Srikant Bharadwaj <srikantvv@gmail.com> >> *CC:* The gem5 Users mailing list <gem5-users@gem5.org>; Krishna, Tushar >> <tushar@ece.gatech.edu>; Preet Derasari <preetderasari@gmail.com> >> *Subject:* [gem5-users] Re: Chiplet Simulation with Gem5 >> Hi Srikant, >> >> Thank you so much for answering my questions and providing the reference >> file. >> >> Since I am new to NoC simulation and using Garnet 3.0 (HeteroGarnet), I >> feel a little lost regarding running a SE or FS mode simulation. >> >> I checked the documentation on Gem5 posted ( >> https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/) and >> read the Kite paper (https://dl.acm.org/doi/abs/10.5555/3437539.3437683). >> >> Nevertheless I could not figure out how to run a simulation (specifically >> in SE mode) where I can use the topology you provided. >> >> I am using the deprecated se.py file in the following manner: >> build/X86/gem5.opt configs/deprecated/example/se.py --num-cpus=4 >> --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches >> --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 >> --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet >> --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> >> --options="<binary args>" >> >> When I run this command, I get the following message: >> ======================================================================= >> gem5 Simulator System. https://www.gem5.org >> gem5 is copyrighted software; use the --copyright option for details. >> >> gem5 version 23.1.0.0 >> gem5 compiled Feb 19 2024 14:33:34 >> gem5 started Feb 22 2024 14:48:41 >> command line: build/X86/gem5.opt configs/deprecated/example/se.py >> --num-cpus=4 --num-dirs=4 --cpu-type=DerivO3CPU --cpu-clock=2.5GHz --caches >> --l1d_size=64kB --l1d_assoc=8 --l1i_size=32kB --l1i_assoc=8 >> --mem-type=SimpleMemory --mem-size=8GB --ruby --network=garnet >> --topology=KiteLarge_EWMC --mesh-rows=2 --cmd=</path/to/binary> >> '--options=<binary args>' >> >> warn: The se.py script is deprecated. It will be removed in future >> releases of gem5. >> TypeError: makeTopology() missing 1 required positional argument: 'Router' >> >> At: >> gem5/configs/ruby/Ruby.py(262): create_system >> configs/deprecated/example/se.py(268): <module> >> src/python/m5/main.py(669): main >> ======================================================================== >> >> I understand that the se.py file may not be equipped to run a >> HeteroGarnet simulation, but I could not find any other simulation files >> that would help me. >> >> I would really appreciate it if you could help me find a simulation file >> along with any modifications needed to Gem5 to support a simulation with >> the Kite Large topology. >> >> Thank you again for your help. >> >> Sincerely, >> Preet. >> >> >> On Wed, Feb 21, 2024 at 8:08 PM Srikant Bharadwaj <srikantvv@gmail.com> >> wrote: >> >>> Hi Preet, >>> 1. I am attaching a config file for Kite Large topology that you can use >>> as a reference for building chiplet-based topologies. More info on Kite >>> Large can be found in this paper: >>> https://dl.acm.org/doi/abs/10.5555/3437539.3437683 >>> 2. HeteroGarnet only handles the network traffic. So HeteroGarnet is can >>> handle any thread pinning that happens on the core levels as long as the >>> cores are connected to each other using a topology and Heterogarnet is >>> enabled. >>> 3. Yes, you can perform SE mode simulations as well as Garnet standalone >>> simulations with HeteroGarnet. Let me know if you have any questions. >>> >>> Thanks, >>> Srikant >>> >>> >>> >>> On Wed, Feb 21, 2024 at 1:55 PM Preet Derasari via gem5-users < >>> gem5-users@gem5.org> wrote: >>> >>>> Dear Dr. Krishna, >>>> >>>> Thank you so much for your response. >>>> >>>> I read the documentation you linked to in your email and have a few >>>> questions. >>>> 1. Are there any example config files that you are aware of that can >>>> help me start with chiplet simulation (with some basic routing techniques >>>> and topologies)? If so, could you point me to them? >>>> 2. How does HeteroGarnet assign processing and other nodes to an >>>> application? Can I use methods like CPUSET() in C++ to assign a simulated >>>> core (node) to a thread (created using thread)? >>>> 3. Can I perform SE mode simulations of my applications, or is >>>> HeteroGarnet only applicable to FS (or the new gem5 v22 "boards")? >>>> >>>> I really appreciate your help. >>>> >>>> Thank you. Sincerely, >>>> Preet. >>>> >>>> >>>> On Wed, Feb 21, 2024 at 11:24 AM Krishna, Tushar <tushar@ece.gatech.edu> >>>> wrote: >>>> >>>>> The latest version of garnet in the gem5 repo allows you to model >>>>> multi-chiplet NoCs. *[The gem5_chips repo is deprecated - and was >>>>> actually forked off an earlier version of HeteroGarnet].* >>>>> Here is its documentation on the gem5 wiki: >>>>> https://www.gem5.org/documentation/general_docs/ruby/heterogarnet/ >>>>> >>>>> Best, >>>>> Tushar >>>>> On Feb 21, 2024 at 11:17 AM -0500, Preet Derasari via gem5-users < >>>>> gem5-users@gem5.org>, wrote: >>>>> >>>>> Hi, >>>>> >>>>> Does anyone know how to do a chiplet based simulation on the latest >>>>> Gem5 version with garnet? >>>>> >>>>> My basic requirements are: running distributed C++ applications (using >>>>> multi-threading) on the Gem5 O3CPYU type, having the ability to control the >>>>> number of cores on individual chiplet dies (even one core per die is >>>>> sufficient), control the D-to-D bandwidth, and getting various statistics >>>>> including power consumption per die and in the interposer, overall latency >>>>> of communication between dies. >>>>> >>>>> On the other hand these are optional: configuring a package with >>>>> different topologies (mesh XY, butterfly, etc), possibly different >>>>> packaging techniques (like 2D, 2.5D, 3D), simulate heterogenous components >>>>> like GPU with CPU, and other NoC parameters like flit with, interposer >>>>> width, etc. >>>>> >>>>> I tried an older version of Gem5 from Dr. Tushar Krishna's group >>>>> called gem5_chips (https://github.com/GT-CHIPS/gem5_chips) but I had >>>>> to use an older version of Python (2.7) and GCC (8) to even compile Gem5 on >>>>> an Ubuntu 20.04 system. Despite that I was not able to run their benchmark >>>>> beyond a certain instruction limit (using max-insts) since the simulator >>>>> started throwing assertion errors in the garnet2.0/OutVcState.cc code. >>>>> >>>>> I would really appreciate it if someone can point me towards the right >>>>> direction here. >>>>> >>>>> Thank you. Best regards, >>>>> Preet. >>>>> >>>>> _______________________________________________ >>>> 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 >> >