Skip to content

Commit

Permalink
PR to allow user to specify the inclusion of nested resource estimates (
Browse files Browse the repository at this point in the history
#39)

* commit to allow switching between the inclusion of nested resource estimates or not

* modified notebooks to make sure that generated resource estimates look good. Modified some parameters to adhere to new function signatures

* Updated pylint badge

* removed trailing commas

* Updated pylint badge

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
  • Loading branch information
JonhasSC and github-actions[bot] authored Jun 4, 2024
1 parent b91b39c commit 426a63c
Show file tree
Hide file tree
Showing 7 changed files with 248 additions and 181 deletions.
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

0 comments on commit 426a63c

Please sign in to comment.