Tutorial: Multi-QPU Network
Use QuantumNet™ to create entanglement links between quantum processors, teleport quantum states, and execute distributed operations across a multi-QPU network.
Time: 20 minutes · Prerequisites: API key configured, network access enabled
Step 1 — Check Network Status
import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';
from softqcos_sdk import QCOSClient
client = QCOSClient()
status = client.network.status()
print(f"Network: {status['status']}")
print(f"Nodes: {status['num_nodes']}")
print(f"Links: {status['num_links']}")
softqcos network status
Step 2 — View Network Topology
topology = client.network.topology()
print(f"Nodes:")
for node in topology["nodes"]:
print(f" {node['node_id']:15s} | {node['backend']:20s} | {node['qubits']} qubits")
print(f"\nLinks:")
for link in topology["links"]:
print(f" {link['node_a']} ↔ {link['node_b']} | Fidelity: {link['fidelity']:.4f}")
softqcos network topology
Step 3 — Create Entanglement Link
Establish a Bell pair between two network nodes:
entanglement = client.network.entangle(
node_a="node_alpha",
node_b="node_beta",
protocol="bss" # Bell State Sharing
)
print(f"Link ID: {entanglement['link_id']}")
print(f"Fidelity: {entanglement['fidelity']:.4f}")
print(f"Status: {entanglement['status']}")
softqcos network entangle --node-a node_alpha --node-b node_beta --protocol bss
Step 4 — Teleport a Quantum State
Teleport a qubit state from one node to another:
teleport = client.network.teleport(
source="node_alpha",
target="node_beta",
qubit="|+⟩" # Superposition state
)
print(f"Teleport ID: {teleport['job_id']}")
print(f"Success: {teleport['success']}")
print(f"Fidelity: {teleport['fidelity']:.4f}")
print(f"Classical bits sent: {teleport['classical_bits']}")
softqcos network teleport --source node_alpha --target node_beta --qubit "|+⟩"
Step 5 — Remote CNOT Gate
Execute a CNOT gate between qubits on different nodes:
rcnot = client.network.remote_cnot(
control="node_alpha",
target="node_beta"
)
print(f"Job ID: {rcnot['job_id']}")
print(f"Gate fidelity: {rcnot['fidelity']:.4f}")
softqcos network remote-cnot --control node_alpha --target node_beta
Step 6 — Synchronize with Barrier
Ensure all nodes reach a synchronization point:
barrier = client.network.barrier(
nodes=["node_alpha", "node_beta", "node_gamma"]
)
print(f"Barrier: {barrier['status']}")
print(f"Synchronized nodes: {barrier['synchronized']}")
softqcos network barrier --nodes node_alpha,node_beta,node_gamma
Step 7 — Get Network Evidence
# Get evidence for a network job
evidence = client.network.job_evidence(teleport["job_id"])
print(f"Hash: {evidence['hash']}")
print(f"Valid: {evidence['valid']}")
# Full evidence bundle
bundle = client.network.evidence_bundle(teleport["job_id"])
print(f"Artifacts: {len(bundle['artifacts'])}")
softqcos network job-evidence <job_id>
softqcos network evidence-bundle <job_id>
Phase 0 Research: Ion Species
Explore ion species for quantum networking research:
# List available ion species
species = client.network.ion_species()
for s in species:
print(f"{s['name']:12s} | Charge: {s['charge']} | Wavelength: {s['wavelength']}nm")
# Parameter sweep
sweep = client.network.phase0_sweep(
species="Yb171",
param="laser_power",
range_min=0.1,
range_max=10.0,
steps=50
)
print(f"Sweep ID: {sweep['sweep_id']}")
# Analyze results
analysis = client.network.phase0b_analyze(sweep_id=sweep["sweep_id"])
print(f"Optimal value: {analysis['optimal_value']}")
# Get recommendations
recs = client.network.phase0b_recommend(sweep_id=sweep["sweep_id"])
for r in recs["recommendations"]:
print(f" {r['parameter']}: {r['value']} ({r['reason']})")
What's Next?
- ROI Analysis — Cost analysis for multi-QPU workloads
- Evidence & Audit — Evidence verification
- Network API Reference — All methods