sstsimulator / sst-macro

SST Macro Element Library
http://sst-simulator.org/
Other
34 stars 41 forks source link

Clarification on latency and bandwidth parameters between pisces and logp switch #616

Closed afranques closed 3 years ago

afranques commented 3 years ago

I am looking at the small_torus.ini configuration file (which I saw is being used in the sendrecv skeleton test), and I was wondering, since switch.name = pisces (which I assume then uses the latency/bandwidth values given in the switch.link and switch.xbar sections), how come there is also a switch.logp section, which includes the switch.logp.out_in_latency and switch.logp.hop_latency parameters? I thought that switches could either be pisces or logp, but not both. I checked the parameter definitions in Chapter 8 of the user's manual, but there was no reference to either switch.logp.out_in_latency or switch.logp.hop_latency (although they are used in the example of Section 3.2 in a similar way as in the aforementioned small_torus.ini).

At first I thought that since switch.name = pisces, the switch.logp section would be disregarded, but then I tried modifying the values of switch.logp.out_in_latency and switch.logp.hop_latency and I saw they affected the simulation time, which means they are being taken into consideration. I also tried modifying switch.link.latency and leaving switch.logp section as it was, just in case what was actually being disabled was the pisces model, but I also saw that changes in this switch.link.latency affected the simulation time, which means that they are all being used for calculating things. This led me to the questions:

  1. What's the difference between switch.link.latency, switch.logp.out_in_latency and switch.logp.hop_latency?
  2. What's the difference between the logp switch, which I saw is the one in charge of reading the switch.logp.out_in_latency and switch.logp.hop_latency parameters, and the pisces switch, which is the one in charge of reading the switch.link parameters (among others)?

Thanks in advance!

jpkenny commented 3 years ago

The macro interconnect actually constructs both a logp and a pisces network. This is an optimization for performance for small messages. The logp network is a simple bandwidth/latency model. There's a cutoff parameter, "negligible_size", that determines which messages go over which network. If you set that to zero everything will go over the pisces network.

switch.link.latency -- latency for the pisces links switch.logp.out_in_latency -- injection/ejection(NIC) latency for the logp network switch.logp.hop_latency -- switch link latency for the logp network

Hope this helps, Joe

afranques commented 3 years ago

Ahh, that makes sense! I hadn't thought about that cutoff setting, although now I remember reading it in the manual.

Thanks again! Antonio