wy_qcos.transpiler.cmss.mapping.na package
Subpackages
Submodules
wy_qcos.transpiler.cmss.mapping.na.na_mapping module
- class wy_qcos.transpiler.cmss.mapping.na.na_mapping.NASingleRoute
基类:
ABCNASingleRoute.
- prepare_data(qbit_num, gates, qpu_configs)
配置qpu_config、gates、qbit_num,量子比特映射.
- 参数:
qbit_num -- 比特数
gates -- 门列表
qpu_configs -- 拓扑
- execute_with_order()
遍历比特门,将逻辑量子比特映射到物理量子比特.
- 返回:
从逻辑映射到物理量子比特的门列表
- class wy_qcos.transpiler.cmss.mapping.na.na_mapping.NARoute
基类:
ABCNARoute.
- prepare_data(qbit_num, gates, qpu_configs)
配置qpu_config、gates、qbit_num,量子比特映射.
- 参数:
qbit_num -- 比特数
gates -- 门列表
qpu_configs -- 拓扑
- get_rx_dag()
Build a dependency graph (DAG) for IR using the rustworkx.
- 返回:
The DAG object with node attributes measure_op (list): List of measurement operation gates node_indices (dict): Mapping dictionary from original gate indices to rustworkx node i
- 返回类型:
dg (rx.PyDiGraph)
- get_init_mapping()
比特初始映射及映射表构建.
dg:量子线路拓扑 dg_opt:dg的深拷贝,用以将处理后的节点删除,并寻找新的可执行节点 mapping:比特所处存储区位置(目前比特与存储区一一对应,方便维护) oloc:比特对应的操作区位置,若不在操作区则为-1 oqloc:操作区中的比特,若不存在则为-1 ohas:操作区包含的所有比特 locked:锁定的量子比特(这些比特不能再移动位置) res:最终映射后的指令集列表
- get_front_layer()
获取当前可执行的节点,节点可执行的条件是入度为0.
- find_pos(dis)
在操作区中寻找可放置比特的位置,若不存在,则为-1.
- 参数:
dis (int) -- 与现有的比特间的距离至少为dis
- back(o)
将比特移回存储区,并更新映射表.
- 参数:
o -- 操作区位置
- put(q, o)
将比特移到操作区,并更新映射表.
- 参数:
q -- 需要操作的比特
o -- 操作区位置
- mov(o1, o2)
将比特从存取区的某一位置移到另一位置,并更新映射表.
- 参数:
o1 -- 操作区起始位置
o2 -- 操作区目标位置
- pre_back(nodes)
将操作区中不属于当前可执行门的比特移回存储区.
- 参数:
nodes (List) -- 当前可执行门列表
- get_empty_neighbor(p)
获取操作区某一位置的相邻空位置.
- 参数:
p -- 操作区位置
- get_unlocked_neighbor(p)
获取操作区某一位置的相邻非上锁位置.
- 参数:
p -- 操作区位置
- mov_to_neighbors(p1, p2)
将比特1和比特2移到相邻位置,前提为两个比特均已在操作区.
- 参数:
p1 -- 比特1当前所在的操作区位置
p2 -- 比特2当前所在的操作区位置
- put_to_neighbors1(p1, q)
将q放到p1的相邻位置,前提为q在存储区.
- 参数:
p1 -- 比特1当前所在的操作区位置
q -- 需要移动的比特
- put_to_neighbors2(q1, q2)
将比特q1, q2放到相邻位置,前提为q1, q2均在存储区.
- 参数:
q1 -- 比特1
q2 -- 比特2
- execute_multi_nodes(nodes)
执行两比特门.
- 参数:
nodes (List) -- 所有当前可执行的两比特门对应的节点
- mov_multi_nodes(nodes)
两比特门执行前,将比特先放置在操作区合适的位置.
- 参数:
nodes (List) -- 所有当前可执行的两比特门对应的节点
- execute_single_node(node)
执行单比特门.
- 参数:
node -- 当前可执行的单比特门对应的节点
- overlap(nd1, nd2)
判断两个单比特节点包含的门列表是否满足nd2为nd1的后缀.
- 参数:
nd1 -- 节点1
nd2 -- 节点2
- add_put(res, opt)
将overlap中的put操作放入对应的位置.
- 参数:
res -- 当前的指令集列表
opt -- put操作
- adjust_pos(pos, posq)
调整put操作的位置,调用add_put,放入合适的位置.
- 参数:
pos -- 所有的put操作
posq -- 操作对应的比特
- execute_single_node_opt()
执行单比特门,通过overlap进行优化.
- get_max_common()
从当前可执行节点中找可执行的节点.
- execute_with_order()
按顺序执行门,不进行优化.
- execute_with_opt()
按拓扑序执行门,进行简单的优化.