Template Function sequant::opt::schedule::fingerprint_of¶
Defined in File schedule_pin.hpp
Function Documentation¶
-
template<meta::eval_node_range R>
eval::schedule::Fingerprint sequant::opt::schedule::fingerprint_of(R const &forest, std::vector<std::string> root_labels, OptimizeOptions const &opts, std::vector<std::wstring> const &mode_order)¶ Everything beyond the per-term trees that shapes the fused DAG: the batchability predicates evaluated on one representative Index per basis present in
forest(keyed by IndexBasis::base_key(), the key the engine’s loops and the DAG record’s mode spellings carry, which is the basis name when the basis is named), the volatile leaf labels, the scalar BatchPolicy and OptimizeOptions settings that steer structure,mode_orderand the active Context (vacuum, basis, strict bra-ket symmetry, cardinal tensor labels, canonicalization method and the named-index flag, the settings a term key depends on). Size-dependent settings are deliberately absent (see planner_record).Two limits: a predicate is evaluated on one index per basis, so a policy that also reads the index itself (its proto indices, an attribute that varies within a basis) is fingerprinted by that one index alone and a difference there surfaces as a different DAG rather than a mismatch; and the tensor canonicalizers and index comparers the Context registers are not spelled, so a difference there surfaces as a key miss, which PinSession::finish names.