Hello World: Ang Iyong Unang Quantum Circuit
Bumuo ng Bell state (dalawang entangled na qubit) at patakbuhin ito sa tatlong paraan:
-
Ideal simulation — perpektong mga resulta, walang kinakailangang account
-
Noisy simulation — tumutulad sa tunay na device, walang kinakailangang account
-
Tunay na quantum hardware — nangangailangan ng libreng IBM Quantum account (mga hakbang sa pag-setup sa ibaba)
Bumuo ng circuit
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit": "qiskit", "qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit import QuantumCircuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
qc.draw(output="mpl")
Opsyon 1: Ideal simulation (walang kinakailangang account)
Gumagamit ng StatevectorSampler — isang lokal na simulator na may perpekto at walang-ingay na mga resulta.
from qiskit.primitives import StatevectorSampler
result = StatevectorSampler().run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
from qiskit.visualization import plot_histogram
plot_histogram(counts)
Opsyon 2: Noisy simulation (walang kinakailangang account)
Gumagamit ng FakeManilaV2 — isang lokal na simulator na tumutulad sa tunay na IBM quantum device, kasama ang mga katangian ng ingay nito. Dapat munang i-transpile (i-adjust) ang circuit sa gate set at qubit connectivity ng device.
from qiskit.primitives import BackendSamplerV2
from qiskit_ibm_runtime.fake_provider import FakeManilaV2
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
backend = FakeManilaV2()
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_qc = pm.run(qc)
result = BackendSamplerV2(backend=backend).run([isa_qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
plot_histogram(counts)
Opsyon 3: Tunay na quantum hardware
Nangangailangan ng libreng IBM Quantum account. Para mag-set up ng isa:
-
Mag-register sa quantum.cloud.ibm.com/registration — walang kinakailangang credit card para sa unang 30 araw
-
Mag-sign in sa quantum.cloud.ibm.com at piliin ang rehiyon na us-east (kinakailangan para sa libreng Open Plan)
-
Lumikha ng instance (libreng Open Plan) sa Instances kung wala ka pa
-
Lumikha ng API key sa quantum.cloud.ibm.com (o sa cloud.ibm.com/iam/apikeys)
-
Kopyahin ang iyong CRN (Cloud Resource Name) mula sa iyong pahina ng Instances
Pagkatapos, kung hindi mo pa nase-save ang iyong mga credentials dito, patakbuhin ang cell sa ibaba. Palitan ang <your-api-key> ng API key mula sa hakbang 4, at ang <your-crn> ng CRN mula sa hakbang 5. Hangga't hindi mo ito ginagawa, walang sine-save ang cell, kaya hindi kailanman mao-overwrite ng pagpapatakbo ng bawat cell ang account na na-save mo dati.
from qiskit_ibm_runtime import QiskitRuntimeService
token = "<your-api-key>"
instance = "<your-crn>"
if token.startswith("<") or instance.startswith("<"):
print("Paste your API key and CRN above first; nothing was saved.")
else:
QiskitRuntimeService.save_account(
channel="ibm_quantum_platform",
token=token,
instance=instance,
set_as_default=True,
overwrite=True,
)
print("Account saved.")
Paalala: Ang mga job sa tunay na hardware ay maaaring tumagal nang ilang sandali depende sa queue times. Kung tumatakbo pa rin ang cell, maaari mong tingnan ang iyong job status at makita ang mga resulta sa quantum.cloud.ibm.com/workloads.
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
print(f"Running on {backend.name}")
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_qc = pm.run(qc)
result = SamplerV2(mode=backend).run([isa_qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
plot_histogram(counts)
Ano ang susunod?
-
Tutorials — sunud-sunod na mga gabay sa mga algorithm, error mitigation, transpilation, at iba pa
-
Guides — sangguniang materyal sa pagpapatakbo ng mga circuit, primitive, at ang Qiskit Runtime
-
Courses — nakaayos na mga landas ng pag-aaral mula sa mga batayan ng quantum hanggang sa utility-scale computing
-
Modules — malalim na mga konseptuwal na module sa computer science at quantum mechanics