v0.8.0
Enhancements
"auto"and"auto-hq"presets now default toparallel="auto"HyperOptimizer: now defaults to using subtree reconfiguration (turned off if any other refinement options are explitly given)ContractionTree.subtree_reconfigure: addmaxiter="auto"option, which defaults tomin(tree.N, maxiter_auto_cap), wheremaxiter_auto_capis a new argument to the preset constructors (default 128 forautoand 1024 forauto-hq).- Added a benchmarking example - Benchmarking and
cotengra - Default node type for
ContractionTreechanged to SSA-based representation, which is faster and uses less memory for big trees. Factored out node logic into a newnodeopsmodule, with dynamic namespaces supporting bothfrozenset-based and SSA-based nodes. ContractionTree: addget_peak_size,reorder_for_peak_size, andmax_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 torandom-greedy-128forsuper_optimize.- Greedy optimizers: add
max_neighborsoption to limit candidate pair generation, which helps for graphs with very large batch indices. - Allow hashing
optimizewhen given as a list of lists (e.g. nested SSA paths). - Refactor the
optlibinterface for cleaner integration of multiple Bayesian / population-based optimizers; addsbplx,sses(steady-state evolutionary strategy), andneldermead/neldermead-adaptsimple internal optimizers. - Add
implementation="pytblis"for contraction via pytblis. - Update parallel logic for sub-workers, allowing nested parallelism without oversubscription.
DiskDict: addget,keys,values,items,__delitem__; enhanceclearandcleanupmethods.- Python
optimaloptimizer: accept floatfactors(#58). - Update
schematicmodule with improvements pulled in fromquimb. einsumvia 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
tensorflowcontraction withstrip_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/tensorflowtest jobs. Various dependabot bumps.