MessageFusionScenario
Communication scenarios · Implementation: mlsysim/engine/scenario_definitions/communication.py.
Construct this scenario with keyword inputs. The fields below show the types and defaults declared by this class.
count small messages sent one by one against one fused message on the same path.
Each small message is far below n* = alpha beta, so separately each costs its startup alone (the byte term is dropped); fused, the batch pays one startup plus its bytes.
Notes
Equation: Use the dimensional products, ratios, or selection rules documented on the calculated properties below.
Assumptions: The separate-message baseline is startup-dominated and neglects its payload serialization, while the fused path includes serialization once.
Excludes: Packing overhead and queueing are absent; the comparison becomes inaccurate when individual transfer time is not small relative to startup.
References
Derivation: the calculated properties below state their defining arithmetic and units. They are scenario accounting or input-selection rules, not independently measured relationships.
Examples
>>> from mlsysim import Scenarios
>>> case = Scenarios.RoutingMessageFusionNdr
>>> print(f"{case.crossover.m_as('kilobyte'):.1f} kB")
75.0 kBAttributes
| Name | Description |
|---|---|
| alpha | |
| bandwidth | |
| count | |
| crossover | Message size at which serialization equals one startup delay. Equation: alpha * | | [fused_message](#mlsysim.engine.scenario_types.MessageFusionScenario.fused_message) | Combined payload from all small messages. Equation:count * message. Units: bytes; | | [fused_time](#mlsysim.engine.scenario_types.MessageFusionScenario.fused_time) | One fused startup plus combined payload serialization. Equation:alpha + fused_message |
| message | |
| separate_time | Startup-only cost of sending the small messages separately. Equation: count * alpha. |
| speedup | Startup-dominated separate-send duration relative to fused duration. Equation: |
| startup_to_transfer | Startup delay measured in one-message serialization durations. Equation: alpha / | | [transfer_time](#mlsysim.engine.scenario_types.MessageFusionScenario.transfer_time) | Serialization duration of one unfused message. Equation:message / bandwidth``. Units: |
alpha
Type: Quantity.
Declared default: required.
bandwidth
Type: Quantity.
Declared default: required.
message
Type: Quantity.
Declared default: required.
count
Type: int.
Declared default: required.
crossover
engine.scenario_types.MessageFusionScenario.crossover
Message size at which serialization equals one startup delay. Equation: alpha * bandwidth. Units: bytes; bandwidth and startup are constant.
fused_message
engine.scenario_types.MessageFusionScenario.fused_message
Combined payload from all small messages. Equation: count * message. Units: bytes; fusion metadata is excluded.
separate_time
engine.scenario_types.MessageFusionScenario.separate_time
Startup-only cost of sending the small messages separately. Equation: count * alpha. Units: time; per-message serialization is intentionally omitted in this small-message approximation.
fused_time
engine.scenario_types.MessageFusionScenario.fused_time
One fused startup plus combined payload serialization. Equation: alpha + fused_message / bandwidth. Units: time; packing overhead is excluded.
speedup
engine.scenario_types.MessageFusionScenario.speedup
Startup-dominated separate-send duration relative to fused duration. Equation: separate_time / fused_time. Units: dimensionless; it inherits the asymmetric serialization approximation.
transfer_time
engine.scenario_types.MessageFusionScenario.transfer_time
Serialization duration of one unfused message. Equation: message / bandwidth. Units: nanoseconds; startup is excluded.
startup_to_transfer
engine.scenario_types.MessageFusionScenario.startup_to_transfer
Startup delay measured in one-message serialization durations. Equation: alpha / transfer_time. Units: dimensionless; larger values justify the startup-dominated approximation.