Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions shardy/integrations/python/jax/mpmd/pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,11 @@
from collections.abc import Collection, Mapping, Sequence, Set
import dataclasses
import enum
import hashlib
from typing import Callable

import cloudpickle

FragmentMergeRules = Sequence['FragmentMergeRule']
FragmentScheduleRules = Sequence['FragmentScheduleRule']

Expand Down Expand Up @@ -367,6 +370,21 @@ def build_rules_from_pipeline(
return all_schedule_rules, all_merge_rules


def fingerprint_pipeline_schedule(pipeline: PipelineSchedule) -> bytes:
"""Generates a fingerprint for a PipelineSchedule."""
hasher = hashlib.sha256()

if pipeline.schedule_merge_rule_builders:
for builder in pipeline.schedule_merge_rule_builders:
serialized_callable = cloudpickle.dumps(builder)
hasher.update(serialized_callable)

# required_mpmd_options is not hashed since the entire partitioning
# environment gets hashed later on.

return hasher.digest()


def maybe_unique_transpose_count(
fragment: FragmentInfo,
) -> int | None:
Expand Down
Loading