Argument ${NETWORK_CONFIG}

--network-configuration: path to the network configuration file

Analytical Network Config

Example network configurations can be found at

$ ${ASTRA_SIM}/inputs/network/analytical/
  • topology-name: (string) put “Hierarchical”

  • dimensions-count: (uint) number of network dimensions

Note

Each configurations below is represented as an array of size dimensions-count, indexed by the dimension level.

  • topologies-per-dim: (string) network topology (“Ring”, “FullyConnected”, or “Switch”)

  • dimension-type: (string) dimension type (“Tile”, “Package”, “Node”, or “Pod”)

  • units-count: (uint) number of GPUs

  • links-count: (uint) number of links

  • link-latency: (uint) link latency (ns)

  • link-bandwidth: (uint) link bandwidth (GB/s or B/ns)

  • nic-latency: (uint) nic latency (ns)

  • router-latency: (uint) router latency (ns)

  • hbm-latency: (uint) memory latency (ns)

  • hbm-bandwidth: (uint) memory bandwidth (GB/s or B/ns)

  • hbm-scale: (uint) memory scaling factor

Garnet Network Config

Example network configurations can be found at

$ ${ASTRA_SIM}/inputs/network/garnet/
  • num-npus: (int) Total number of NPUs we are simulating

  • num-packages: (int) Total number of packages (each could contain one or multiple NPUs)

  • package-rows: (int) Number of package rows. it defines the vertical dimension size

  • topology: (NV_Switch/Torus3D) Determines the physical topology

  • local-rings: (int) Determines the number of rings in the local (intra-package) dimension

  • vertical-rings: (int) Determines the number of rings in the vertical (inter-package) dimension (applicable only on the Torus3D topology)

  • horizontal-rings: (int) Determines the number of rings in the horizontal (inter-package) dimension (applicable only on the Torus3D topology)

  • links-per-tile: (int) Determines the number of links for the alltoall (inter-package) dimesnion (applicable only on the NV_Switch topology)

  • flit-width: (int) The width of flits in bits

  • local-packet-size: (int) The size of intra-pcakge packets in bytes

  • package-packet-size: (int) The size of inter-pcakge packets in bytes

  • tile-link-width: (int) The width of intra-pcakge links in bits

  • package-link-width: (int) The width of inter-pcakge links in bits

  • vcs-per-vnet: (int) Number of VCs per each Vnet

  • routing-algorithm: (Ring_XY/AllToAll) Routing algorithm

  • router-latency: (int) Delay at each router

  • local-link-latency: (int) delay of intra-package links in cycles

  • package-link-latency: (int) delay of inter-package links in cycles

  • buffers-per-vc: (int) Buffer size per each VS in terms of number of flits

  • local-link-efficiency: (float) The ratio of (data/header+data) for intra-package packets

  • package-link-efficiency: (float) The ratio of (data/header+data) for inter-package packets

NS3 Network Config

Example network configurations can be found at

$ ${ASTRA_SIM}/extern/network_backend/ns-3/scratch/config/

The Network configuration file defines the knobs to the ns3 simulation.
Refer to this spreadsheet for a detailed description of each knobs.

Physical Topology

One important knob of the configuration is the physical topology. Examples are located in .../ns-3/scratch/topology, and the filenames are defined in the configuration file under TOPOLOGY_FILE.

Let’s take a sample file, 7_nodes_3_switch_topology.txt, and examine its components. This file describes a topology where there are 7 nodes, 3 of which are network switches (4, 5, 6). There are 8 links in total.

7 3 8 // {no. of nodes}  {no. of switches}  {no. of links}
4 5 6 // {List of node id for switches}
4 0 200Gbps 0.0005ms 0 // From here on each line corresponds to one link.
6 0 200Gbps 0.0005ms 0 // {id of one endpoint} {id of another endpoint} {bandwidth} {latency} {error rate of link}
4 1 200Gbps 0.0005ms 0
6 1 200Gbps 0.0005ms 0
5 2 200Gbps 0.0005ms 0
6 2 200Gbps 0.0005ms 0
5 3 200Gbps 0.0005ms 0
6 3 200Gbps 0.0005ms 0

Logical Topology

In addition to the ns3 configurations (including the physical topology), the binary for the NS3 backend takes a unique command line argument, --logical-topology-configuration=${LOGICAL_TOPOLOGY}.

Examples of this can be found at

$ ${ASTRA_SIM}/inputs/network/ns3

This file defines the logical topology, where each number corresponds to the number of NPUs in a dimension. If the file shows {8, 4}, the system layer will run a 2D topology, regardless of the physical connectivity.