Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PR to allow user to specify the inclusion of nested resource estimates #39

Merged
merged 5 commits into from
Jun 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
![pylint](https://img.shields.io/badge/PyLint-9.45-yellow?logo=python&logoColor=white)
![pylint](https://img.shields.io/badge/PyLint-9.48-yellow?logo=python&logoColor=white)
# Quantum Computing Application Specifications

Documentation of Applications for Quantum Computers
Expand Down
135 changes: 72 additions & 63 deletions notebooks/HighTemperatureSuperConductorExample.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,20 @@
},
{
"cell_type": "code",
"execution_count": 20,
"execution_count": 1,
"metadata": {
"tags": []
},
"outputs": [],
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/jonhas/anaconda3/envs/cmp/lib/python3.11/site-packages/attr/_make.py:918: RuntimeWarning: Running interpreter doesn't sufficiently support code object introspection. Some features like bare super() or accessing __class__ will not work with slotted classes.\n",
" set_closure_cell(cell, cls)\n"
]
}
],
"source": [
"import time\n",
"\n",
Expand All @@ -72,7 +81,7 @@
},
{
"cell_type": "code",
"execution_count": 21,
"execution_count": 2,
"metadata": {
"tags": []
},
Expand Down Expand Up @@ -174,18 +183,18 @@
"output_type": "stream",
"text": [
"Estimating one_band\n",
"Time to generate circuit for GSEE: 8.066699956543744e-05 seconds\n",
" Time to decompose high level <class 'cirq.ops.common_gates.HPowGate circuit: 0.00020158299594186246 seconds \n",
" Time to transform decomposed <class 'cirq.ops.common_gates.HPowGate circuit to Clifford+T: 0.0004812920233234763 seconds\n",
" Time to decompose high level <class 'cirq.ops.identity.IdentityGate circuit: 2.72089964710176e-05 seconds \n",
" Time to transform decomposed <class 'cirq.ops.identity.IdentityGate circuit to Clifford+T: 9.29099041968584e-06 seconds\n",
" Time to decompose high level <class 'pyLIQTR.PhaseEstimation.pe_gates.PhaseOffset circuit: 0.00012083398178219795 seconds \n",
" Time to transform decomposed <class 'pyLIQTR.PhaseEstimation.pe_gates.PhaseOffset circuit to Clifford+T: 0.00011850000009872019 seconds\n",
" Time to decompose high level <class 'pyLIQTR.PhaseEstimation.pe_gates.Trotter_Unitary circuit: 0.049456957989605144 seconds \n",
" Time to transform decomposed <class 'pyLIQTR.PhaseEstimation.pe_gates.Trotter_Unitary circuit to Clifford+T: 0.36098670901264995 seconds\n",
" Time to decompose high level <class 'cirq.ops.measurement_gate.MeasurementGate circuit: 0.00025645800633355975 seconds \n",
" Time to transform decomposed <class 'cirq.ops.measurement_gate.MeasurementGate circuit to Clifford+T: 7.162499241530895e-05 seconds\n",
"Time to estimate one_band: 0.6886332079884596\n"
"Time to generate circuit for GSEE: 8.7958003859967e-05 seconds\n",
" Time to decompose high level HPowGate circuit: 0.00017079099779948592 seconds \n",
" Time to transform decomposed HPowGate circuit to Clifford+T: 0.00045045799924992025 seconds\n",
" Time to decompose high level IdentityGate circuit: 1.7041980754584074e-05 seconds \n",
" Time to transform decomposed IdentityGate circuit to Clifford+T: 7.541995728388429e-06 seconds\n",
" Time to decompose high level PhaseOffset circuit: 9.745798888616264e-05 seconds \n",
" Time to transform decomposed PhaseOffset circuit to Clifford+T: 0.00010429200483486056 seconds\n",
" Time to decompose high level Trotter_Unitary circuit: 0.047857666009804234 seconds \n",
" Time to transform decomposed Trotter_Unitary circuit to Clifford+T: 0.3390574579825625 seconds\n",
" Time to decompose high level MeasurementGate circuit: 0.00021316600032150745 seconds \n",
" Time to transform decomposed MeasurementGate circuit to Clifford+T: 5.299999611452222e-05 seconds\n",
"Time to estimate one_band: 0.6516820410033688\n"
]
}
],
Expand Down Expand Up @@ -521,31 +530,31 @@
"output_type": "stream",
"text": [
"Estimating Current Limit\n",
"Time to generate circuit for GSEE: 7.179100066423416e-05 seconds\n",
" Time to decompose high level <class 'cirq.ops.common_gates.HPowGate circuit: 0.00017420900985598564 seconds \n",
" Time to transform decomposed <class 'cirq.ops.common_gates.HPowGate circuit to Clifford+T: 0.00020945898722857237 seconds\n",
" Time to decompose high level <class 'cirq.ops.identity.IdentityGate circuit: 2.4416978703811765e-05 seconds \n",
" Time to transform decomposed <class 'cirq.ops.identity.IdentityGate circuit to Clifford+T: 5.54099096916616e-06 seconds\n",
" Time to decompose high level <class 'pyLIQTR.PhaseEstimation.pe_gates.PhaseOffset circuit: 0.00010366700007580221 seconds \n",
" Time to transform decomposed <class 'pyLIQTR.PhaseEstimation.pe_gates.PhaseOffset circuit to Clifford+T: 0.00010866599041037261 seconds\n",
" Time to decompose high level <class 'pyLIQTR.PhaseEstimation.pe_gates.Trotter_Unitary circuit: 0.24183270902722143 seconds \n",
" Time to transform decomposed <class 'pyLIQTR.PhaseEstimation.pe_gates.Trotter_Unitary circuit to Clifford+T: 1.0117513749864884 seconds\n",
" Time to decompose high level <class 'cirq.ops.measurement_gate.MeasurementGate circuit: 0.0007868749962653965 seconds \n",
" Time to transform decomposed <class 'cirq.ops.measurement_gate.MeasurementGate circuit to Clifford+T: 7.495898171328008e-05 seconds\n",
"Time to estimate Current Limit: 2.188670125004137\n",
"Time to generate circuit for GSEE: 4.075001925230026e-05 seconds\n",
" Time to decompose high level HPowGate circuit: 0.00010466598905622959 seconds \n",
" Time to transform decomposed HPowGate circuit to Clifford+T: 0.00020041698007844388 seconds\n",
" Time to decompose high level IdentityGate circuit: 1.5375000657513738e-05 seconds \n",
" Time to transform decomposed IdentityGate circuit to Clifford+T: 5.125009920448065e-06 seconds\n",
" Time to decompose high level PhaseOffset circuit: 0.0001000420015770942 seconds \n",
" Time to transform decomposed PhaseOffset circuit to Clifford+T: 0.00010762500460259616 seconds\n",
" Time to decompose high level Trotter_Unitary circuit: 0.24668795900652185 seconds \n",
" Time to transform decomposed Trotter_Unitary circuit to Clifford+T: 0.932925041008275 seconds\n",
" Time to decompose high level MeasurementGate circuit: 0.0007643330027349293 seconds \n",
" Time to transform decomposed MeasurementGate circuit to Clifford+T: 4.629199975170195e-05 seconds\n",
"Time to estimate Current Limit: 2.092620125011308\n",
"Estimating Ideal\n",
"Time to generate circuit for GSEE: 4.7291978262364864e-05 seconds\n",
" Time to decompose high level <class 'cirq.ops.common_gates.HPowGate circuit: 7.916599861346185e-05 seconds \n",
" Time to transform decomposed <class 'cirq.ops.common_gates.HPowGate circuit to Clifford+T: 9.008299093693495e-05 seconds\n",
" Time to decompose high level <class 'cirq.ops.identity.IdentityGate circuit: 1.0749994544312358e-05 seconds \n",
" Time to transform decomposed <class 'cirq.ops.identity.IdentityGate circuit to Clifford+T: 3.374996595084667e-06 seconds\n",
" Time to decompose high level <class 'pyLIQTR.PhaseEstimation.pe_gates.PhaseOffset circuit: 7.287500193342566e-05 seconds \n",
" Time to transform decomposed <class 'pyLIQTR.PhaseEstimation.pe_gates.PhaseOffset circuit to Clifford+T: 4.095799522474408e-05 seconds\n",
" Time to decompose high level <class 'pyLIQTR.PhaseEstimation.pe_gates.Trotter_Unitary circuit: 0.27323129199794494 seconds \n",
" Time to transform decomposed <class 'pyLIQTR.PhaseEstimation.pe_gates.Trotter_Unitary circuit to Clifford+T: 0.7680455000081565 seconds\n",
" Time to decompose high level <class 'cirq.ops.measurement_gate.MeasurementGate circuit: 0.0010527079866733402 seconds \n",
" Time to transform decomposed <class 'cirq.ops.measurement_gate.MeasurementGate circuit to Clifford+T: 5.0291011575609446e-05 seconds\n",
"Time to estimate Ideal: 2.1309333750104997\n"
"Time to generate circuit for GSEE: 4.383301711641252e-05 seconds\n",
" Time to decompose high level HPowGate circuit: 8.158298442140222e-05 seconds \n",
" Time to transform decomposed HPowGate circuit to Clifford+T: 8.833300671540201e-05 seconds\n",
" Time to decompose high level IdentityGate circuit: 1.2375006917864084e-05 seconds \n",
" Time to transform decomposed IdentityGate circuit to Clifford+T: 3.916997229680419e-06 seconds\n",
" Time to decompose high level PhaseOffset circuit: 7.408397505059838e-05 seconds \n",
" Time to transform decomposed PhaseOffset circuit to Clifford+T: 4.7542009269818664e-05 seconds\n",
" Time to decompose high level Trotter_Unitary circuit: 0.28098991699516773 seconds \n",
" Time to transform decomposed Trotter_Unitary circuit to Clifford+T: 0.7134910000022501 seconds\n",
" Time to decompose high level MeasurementGate circuit: 0.000858165993122384 seconds \n",
" Time to transform decomposed MeasurementGate circuit to Clifford+T: 4.474999150261283e-05 seconds\n",
"Time to estimate Ideal: 2.046745167026529\n"
]
}
],
Expand Down Expand Up @@ -1034,31 +1043,31 @@
"output_type": "stream",
"text": [
"Estimating Current Limit\n",
"Time to generate circuit for GSEE: 4.704200546257198e-05 seconds\n",
" Time to decompose high level <class 'cirq.ops.common_gates.HPowGate circuit: 0.00011325001833029091 seconds \n",
" Time to transform decomposed <class 'cirq.ops.common_gates.HPowGate circuit to Clifford+T: 0.00022524999803863466 seconds\n",
" Time to decompose high level <class 'cirq.ops.identity.IdentityGate circuit: 1.3165990822017193e-05 seconds \n",
" Time to transform decomposed <class 'cirq.ops.identity.IdentityGate circuit to Clifford+T: 3.4999975468963385e-06 seconds\n",
" Time to decompose high level <class 'pyLIQTR.PhaseEstimation.pe_gates.PhaseOffset circuit: 8.550001075491309e-05 seconds \n",
" Time to transform decomposed <class 'pyLIQTR.PhaseEstimation.pe_gates.PhaseOffset circuit to Clifford+T: 9.033299284055829e-05 seconds\n",
" Time to decompose high level <class 'pyLIQTR.PhaseEstimation.pe_gates.Trotter_Unitary circuit: 0.7486400830093771 seconds \n",
" Time to transform decomposed <class 'pyLIQTR.PhaseEstimation.pe_gates.Trotter_Unitary circuit to Clifford+T: 2.5677436669939198 seconds\n",
" Time to decompose high level <class 'cirq.ops.measurement_gate.MeasurementGate circuit: 0.00246395799331367 seconds \n",
" Time to transform decomposed <class 'cirq.ops.measurement_gate.MeasurementGate circuit to Clifford+T: 8.699999307282269e-05 seconds\n",
"Time to estimate Current Limit: 5.534946375002619\n",
"Time to generate circuit for GSEE: 4.562499816529453e-05 seconds\n",
" Time to decompose high level HPowGate circuit: 8.22089787106961e-05 seconds \n",
" Time to transform decomposed HPowGate circuit to Clifford+T: 0.00020158401457592845 seconds\n",
" Time to decompose high level IdentityGate circuit: 1.5083001926541328e-05 seconds \n",
" Time to transform decomposed IdentityGate circuit to Clifford+T: 4.66697383671999e-06 seconds\n",
" Time to decompose high level PhaseOffset circuit: 9.208300616592169e-05 seconds \n",
" Time to transform decomposed PhaseOffset circuit to Clifford+T: 0.00010825000936165452 seconds\n",
" Time to decompose high level Trotter_Unitary circuit: 0.6796650000032969 seconds \n",
" Time to transform decomposed Trotter_Unitary circuit to Clifford+T: 2.49565304198768 seconds\n",
" Time to decompose high level MeasurementGate circuit: 0.002015333011513576 seconds \n",
" Time to transform decomposed MeasurementGate circuit to Clifford+T: 5.7375000324100256e-05 seconds\n",
"Time to estimate Current Limit: 5.365840749989729\n",
"Estimating Ideal\n",
"Time to generate circuit for GSEE: 5.1207985961809754e-05 seconds\n",
" Time to decompose high level <class 'cirq.ops.common_gates.HPowGate circuit: 9.524999768473208e-05 seconds \n",
" Time to transform decomposed <class 'cirq.ops.common_gates.HPowGate circuit to Clifford+T: 0.00019350001821294427 seconds\n",
" Time to decompose high level <class 'cirq.ops.identity.IdentityGate circuit: 1.2125005014240742e-05 seconds \n",
" Time to transform decomposed <class 'cirq.ops.identity.IdentityGate circuit to Clifford+T: 3.583991201594472e-06 seconds\n",
" Time to decompose high level <class 'pyLIQTR.PhaseEstimation.pe_gates.PhaseOffset circuit: 6.925000343471766e-05 seconds \n",
" Time to transform decomposed <class 'pyLIQTR.PhaseEstimation.pe_gates.PhaseOffset circuit to Clifford+T: 7.974999607540667e-05 seconds\n",
" Time to decompose high level <class 'pyLIQTR.PhaseEstimation.pe_gates.Trotter_Unitary circuit: 0.6040110420144629 seconds \n",
" Time to transform decomposed <class 'pyLIQTR.PhaseEstimation.pe_gates.Trotter_Unitary circuit to Clifford+T: 2.368579125002725 seconds\n",
" Time to decompose high level <class 'cirq.ops.measurement_gate.MeasurementGate circuit: 0.002168875013012439 seconds \n",
" Time to transform decomposed <class 'cirq.ops.measurement_gate.MeasurementGate circuit to Clifford+T: 9.10409726202488e-05 seconds\n",
"Time to estimate Ideal: 5.23599783401005\n"
"Time to generate circuit for GSEE: 5.845801206305623e-05 seconds\n",
" Time to decompose high level HPowGate circuit: 8.083297871053219e-05 seconds \n",
" Time to transform decomposed HPowGate circuit to Clifford+T: 0.00018908301717601717 seconds\n",
" Time to decompose high level IdentityGate circuit: 1.5124998753890395e-05 seconds \n",
" Time to transform decomposed IdentityGate circuit to Clifford+T: 4.084024112671614e-06 seconds\n",
" Time to decompose high level PhaseOffset circuit: 7.508401176892221e-05 seconds \n",
" Time to transform decomposed PhaseOffset circuit to Clifford+T: 7.750000804662704e-05 seconds\n",
" Time to decompose high level Trotter_Unitary circuit: 0.5615481659770012 seconds \n",
" Time to transform decomposed Trotter_Unitary circuit to Clifford+T: 2.3108590000192635 seconds\n",
" Time to decompose high level MeasurementGate circuit: 0.0022298340045381337 seconds \n",
" Time to transform decomposed MeasurementGate circuit to Clifford+T: 5.750000127591193e-05 seconds\n",
"Time to estimate Ideal: 5.098492958000861\n"
]
}
],
Expand Down
200 changes: 100 additions & 100 deletions notebooks/MagneticLattices.ipynb

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions notebooks/PhotosynthesisExample.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,7 @@
" init_state=init_state,\n",
" precision_order=1,\n",
" bits_precision=bits_precision,\n",
" phase_offset=phase_offset,\n",
" circuit_name=f'Co2O9H12_{idx}',\n",
" metadata=molecular_metadata,\n",
" write_circuits=True\n",
Expand Down
4 changes: 2 additions & 2 deletions notebooks/RuClExample.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -1030,8 +1030,8 @@
" openfermion_hamiltonian=openfermion_hamiltonian_rucl,\n",
" evolution_time=evolution_time,\n",
" energy_precision=energy_precision,\n",
" metadata=trotter_metadata,\n",
" outdir='Trotter/RuCl_circuits/',\n",
" metadata=trotter_metadata,\n",
" hamiltonian_name=f'rucl_trotter_{i}',\n",
" write_circuits=True\n",
" )\n",
Expand Down Expand Up @@ -1140,9 +1140,9 @@
" evolution_time=evolution_time,\n",
" numsteps=1000,\n",
" energy_precision=energy_precision,\n",
" metadata=qsp_metadata,\n",
" outdir='QSP/RuCl_circuits/',\n",
" hamiltonian_name=f'rucl_qsp_{i}',\n",
" metadata=qsp_metadata,\n",
" write_circuits=True\n",
" )\n",
" t1 = time.perf_counter()\n",
Expand Down
16 changes: 12 additions & 4 deletions src/qca/utils/algo_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ def estimate_qsp(
hamiltonian_name:str='hamiltonian',
metadata: EstimateMetaData = None,
write_circuits:bool=False,
include_nested_resources:bool=True
) -> Circuit:
timestep_of_interest=evolution_time/numsteps
random.seed(0)
Expand All @@ -52,7 +53,9 @@ def estimate_qsp(
circuit=qsp_circuit,
outdir=outdir,
numsteps=numsteps,
write_circuits=write_circuits
algo_name='QSP',
write_circuits=write_circuits,
include_nested_resources=include_nested_resources
)
if metadata:
re_metadata = asdict(metadata)
Expand Down Expand Up @@ -104,7 +107,8 @@ def estimate_trotter(
metadata: EstimateMetaData=None,
hamiltonian_name:str='hamiltonian',
write_circuits:bool=False,
nsteps:int=None
nsteps:int=None,
include_nested_resources:bool=True
) -> Circuit:

if not os.path.exists(outdir):
Expand Down Expand Up @@ -155,8 +159,9 @@ def estimate_trotter(
cpt_circuit=cpt_trotter,
outdir=outdir,
is_extrapolated=True,
circuit_name=hamiltonian_name,
trotter_steps=nsteps
algo_name='TrotterStep',
trotter_steps=nsteps,
include_nested_resources=include_nested_resources
)

outfile = f'{outdir}{hamiltonian_name}_re.json'
Expand All @@ -175,6 +180,7 @@ def gsee_resource_estimation(
bits_precision:int,
phase_offset:float,
circuit_name:str='Hamiltonian',
include_nested_resources:bool=True,
metadata:EstimateMetaData=None,
include_classical_bits:bool=False,
write_circuits:bool=False
Expand All @@ -199,6 +205,8 @@ def gsee_resource_estimation(
circuit=pe_circuit,
outdir=outdir,
numsteps=numsteps,
algo_name='GSEE',
include_nested_resources=include_nested_resources,
bits_precision=bits_precision,
write_circuits=write_circuits
)
Expand Down
Loading