Skip to content

v0.8.0

Choose a tag to compare

@jcmgray jcmgray released this 05 May 01:58
· 11 commits to main since this release

Enhancements

  • "auto" and "auto-hq" presets now default to parallel="auto"
  • HyperOptimizer: now defaults to using subtree reconfiguration (turned off if any other refinement options are explitly given)
  • ContractionTree.subtree_reconfigure: add maxiter="auto" option, which defaults to min(tree.N, maxiter_auto_cap), where maxiter_auto_cap is a new argument to the preset constructors (default 128 for auto and 1024 for auto-hq).
  • Added a benchmarking example - Benchmarking and cotengra
  • Default node type for ContractionTree changed to SSA-based representation, which is faster and uses less memory for big trees. Factored out node logic into a new nodeops module, with dynamic namespaces supporting both frozenset-based and SSA-based nodes.
  • ContractionTree: add get_peak_size, reorder_for_peak_size, and max_contraction_size.
  • ContractionTree: support single input "contractions" (trivial trees with a single tensor).
  • HyperOptimizer.search: support single terms (#77).
  • Change default finishing optimize step (e.g. for slicing/subtree reconfigure) to "auto".
  • Subtree reconfigure: add select="descend" mode.
  • PartitionTreeBuilder.build_divide: default to random-greedy-128 for super_optimize.
  • Greedy optimizers: add max_neighbors option to limit candidate pair generation, which helps for graphs with very large batch indices.
  • Allow hashing optimize when given as a list of lists (e.g. nested SSA paths).
  • Refactor the optlib interface for cleaner integration of multiple Bayesian / population-based optimizers; add sbplx, sses (steady-state evolutionary strategy), and neldermead / neldermead-adapt simple internal optimizers.
  • Add implementation="pytblis" for contraction via pytblis.
  • Update parallel logic for sub-workers, allowing nested parallelism without oversubscription.
  • DiskDict: add get, keys, values, items, __delitem__; enhance clear and cleanup methods.
  • Python optimal optimizer: accept float factors (#58).
  • Update schematic module with improvements pulled in from quimb.
  • einsum via bmm (implementation="cotengra"): update einsum-string parsing to follow more recent numpy behavior.

Bug fixes

  • Fix a rare bug relating to wrongly cached index ordering in ContractionTree.
  • Fix + test tensorflow contraction with strip_exponent (#81).
  • ContractionTree.contract_nodes: always check for root, fixing an edge case in incremental contraction.

Infrastructure

  • Move CI and developer workflow to Pixi (per-environment jobs, formatting tasks, readthedocs config). Add torch/jax/tensorflow test jobs. Various dependabot bumps.