[ PROMPT_NODE_26300 ]
hardware
[ SKILL_DOCUMENTATION ]
# 硬件集成
本指南涵盖了通过 Cirq 的设备接口和服务提供商在真实量子硬件上运行量子电路的方法。
## 设备表示
### 设备类
python
import cirq
# 定义具有连接性的设备
class MyDevice(cirq.Device):
def __init__(self, qubits, connectivity):
self.qubits = qubits
self.connectivity = connectivity
@property
def metadata(self):
return cirq.DeviceMetadata(
self.qubits,
self.connectivity
)
def validate_operation(self, operation):
# 检查操作在该设备上是否有效
if len(operation.qubits) == 2:
q0, q1 = operation.qubits
if (q0, q1) not in self.connectivity:
raise ValueError(f"量子比特 {q0} 和 {q1} 未连接")
### 设备约束
python
# 检查设备元数据
device = cirq_google.Sycamore
# 获取量子比特拓扑
qubits = device.metadata.qubit_set
print(f"可用量子比特: {len(qubits)}")
# 检查连接性
for q0 in qubits:
neighbors = device.metadata.nx_graph.neighbors(q0)
print(f"{q0} 连接至: {list(neighbors)}")
# 验证电路是否符合设备要求
try:
device.validate_circuit(circuit)
print("电路对该设备有效")
except ValueError as e:
print(f"无效电路: {e}")
## 量子比特选择
### 最佳量子比特选择
python
import cirq_google
# 获取校准指标
processor = cirq_google.get_engine().get_processor('weber')
calibration = processor.get_current_calibration()
# 查找具有最低错误率的量子比特
def select_best_qubits(calibration, n_qubits):
"""选择具有最佳单量子比特门保真度的 n 个量子比特。"""
qubit_fidelities = {}
for qubit in calibration.keys():
if 'single_qubit_rb_average_error_per_gate' in calibration[qubit]:
error = calibration[qubit]['single_qubit_rb_average_error_per_gate']
qubit_fidelities[qubit] = 1 - error
# 按保真度排序
best_qubits = sorted(
qubit_fidelities.items(),
key=lambda x: x[1],
reverse=True
)[:n_qubits]
return [q for q, _ in best_qubits]
best_qubits = select_best_qubits(calibration, n_qubits=10)
### 拓扑感知选择
python
def select_connected_qubits(device, n_qubits):
"""选择形成路径或网格的连接量子比特。"""
graph = device.metadata.nx_graph
# 查找连接的子图
import networkx as nx
for node in graph