接入接口
把 ArcTN 作为路径优化器或收缩树来源接入现有 Python 张量网络工作流。
本页目录
作为 opt_einsum PathOptimizer
import opt_einsum as oe
from arctn import ArcTNOptimizer
optimizer = ArcTNOptimizer(
preset="heavy", seed=0, max_time=30,
flops_weight=1, read_write_weight=64,
)
result = oe.contract(equation, *arrays, optimize=optimizer)
接口边界
opt_einsum 直接调用
ArcTNOptimizer.__call__,其 PathOptimizer 协议只能返回 path,不能同时返回 sliced legs。非 None 的memory_limit会抛出NotImplementedError;需要切片时,应走 Cotengra/Quimb 的search()tree dispatch,或直接使用arctn_tree/arctn_contract。
返回 Cotengra ContractionTree
from arctn import arctn_plan, arctn_tree
tree, info = arctn_tree(
inputs, output, size_dict,
preset="heavy", seed=0,
target_size=2**24, slicing_mode="fixed",
return_info=True,
)
result = tree.contract(arrays)
# 先生成计划;随后转换为树时不重新寻路
plan = arctn_plan(
inputs, output, size_dict,
target_size=2**24, slicing_mode="fixed",
)
same_plan_tree = plan.to_tree()
ArcTNOptimizer.search() 和 arctn_tree() 都会当场运行 planner;plan.to_tree() 只转换已经保存的路径和 sliced legs。三者得到的都是 Cotengra ContractionTree,而不是 TreeSA 算法或 Rust 的 arctn::tree 模块。
在 Quimb 中使用
Quimb 使用同一个 ArcTNOptimizer.search() 收缩树接口。网络构造、化简与切片收缩的完整示例见教程。
- 完整 Quimb 教程 — Circuit、任务化简、切片与手工 TensorNetwork
显式选择数组后端
使用 arctn_contract 时,可以选择 native 或显式指定数组后端。通过 Quimb 或 Cotengra 收缩树执行时,使用相应库的执行接口。
- 执行后端 — 支持的后端、数组类型和计时说明。