Skip to content

tenzr::TorusCostModel

Analytic cost model comparing torus and ring all-reduce times.

#include <torus_model.h>

Public Functions

Name
TorusCostModel(TorusDimensions dims, NetworkParameters params)
const TorusDimensions & Dimensions() const
The modelled torus dimensions.
const NetworkParameters & Parameters() const
The modelled network parameters.
double PredictTimeSeconds(uint64_t payload_bytes) const
double PredictRingTimeSeconds(uint64_t payload_bytes, double ring_bandwidth =0.0) const
double SpeedupOverRing(uint64_t payload_bytes, double ring_bandwidth =0.0) const
std::string GenerateReport(uint64_t payload_bytes) const
TorusDimensions OptimizeDimensions(int64_t total_nodes)

Public Functions Documentation

function TorusCostModel

TorusCostModel(
    TorusDimensions dims,
    NetworkParameters params
)

Parameters:

  • dims Torus dimensions.
  • params Latency and bandwidth parameters.

Create a cost model for the given torus and network parameters.

function Dimensions

inline const TorusDimensions & Dimensions() const

The modelled torus dimensions.

function Parameters

inline const NetworkParameters & Parameters() const

The modelled network parameters.

function PredictTimeSeconds

double PredictTimeSeconds(
    uint64_t payload_bytes
) const

Parameters:

  • payload_bytes Payload size in bytes.
  • payload_bytes Number of bytes reduced.

Return:

  • Predicted time in seconds.
  • Predicted time in seconds.

Predict torus all-reduce time for a payload. Predict all-reduce time over the 3D torus using the Section 5 cost model.

function PredictRingTimeSeconds

double PredictRingTimeSeconds(
    uint64_t payload_bytes,
    double ring_bandwidth =0.0
) const

Parameters:

  • payload_bytes Payload size in bytes.
  • ring_bandwidth Ring bandwidth in bytes/sec, or single-link when <= 0.
  • payload_bytes Number of bytes reduced.
  • ring_bandwidth Ring bandwidth in bytes/second; derived from the model when non-positive.

Return:

  • Predicted time in seconds.
  • Predicted time in seconds.

Predict ring all-reduce time for a payload. Predict all-reduce time over a single ring of the same node count.

function SpeedupOverRing

double SpeedupOverRing(
    uint64_t payload_bytes,
    double ring_bandwidth =0.0
) const

Parameters:

  • payload_bytes Payload size in bytes.
  • ring_bandwidth Ring bandwidth in bytes/sec, or single-link when <= 0.
  • payload_bytes Number of bytes reduced.
  • ring_bandwidth Optional ring bandwidth; defaults to the model's.

Return:

  • Speedup factor.
  • Speedup factor of torus over ring.

Predicted speedup of the torus over a ring for a payload. Ratio of ring all-reduce time to torus all-reduce time.

function GenerateReport

std::string GenerateReport(
    uint64_t payload_bytes
) const

Parameters:

  • payload_bytes Payload size in bytes.
  • payload_bytes Payload size to model.

Return:

  • Formatted report text.
  • Multi-line report text.

Render a full comparison report for a payload. Build a formatted torus-vs-ring cost analysis report.

function OptimizeDimensions

static TorusDimensions OptimizeDimensions(
    int64_t total_nodes
)

Parameters:

  • total_nodes Total node count to factor.
  • total_nodes Number of nodes to factor into three dimensions.

Return:

  • Chosen torus dimensions.
  • Best kx x ky x kz factorization found.

Find the factorisation minimising latency for a node count. Choose the torus factorization of total_nodes that minimizes total hops.