Skip to main content

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 kB

Attributes

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.

Back to top