Skip to main content

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

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?