2
2
from collections import deque
3
3
from functools import partial
4
4
from os import PathLike
5
+ import time
5
6
6
7
from scipy .optimize import OptimizeResult
7
8
@@ -210,6 +211,7 @@ def _autosave_wrapper(
210
211
step_energies ,
211
212
step_chi ,
212
213
step_conv ,
214
+ step_runtime ,
213
215
spiral_indices ,
214
216
additional_input ,
215
217
):
@@ -223,6 +225,7 @@ def _autosave_wrapper(
223
225
auxiliary_data [f"step_energies_{ k :d} " ] = step_energies [k ]
224
226
auxiliary_data [f"step_chi_{ k :d} " ] = step_chi [k ]
225
227
auxiliary_data [f"step_conv_{ k :d} " ] = step_conv [k ]
228
+ auxiliary_data [f"step_runtime_{ k :d} " ] = step_runtime [k ]
226
229
227
230
spiral_vectors = None
228
231
if spiral_indices is not None :
@@ -390,6 +393,7 @@ def random_noise(a):
390
393
step_energies = {random_noise_retries : []}
391
394
step_chi = {random_noise_retries : []}
392
395
step_conv = {random_noise_retries : []}
396
+ step_runtime = {random_noise_retries : []}
393
397
394
398
if (
395
399
varipeps_config .optimizer_preconverge_with_half_projectors
@@ -401,6 +405,8 @@ def random_noise(a):
401
405
402
406
with tqdm (desc = "Optimizing PEPS state" ) as pbar :
403
407
while count < varipeps_config .optimizer_max_steps :
408
+ runtime_start = time .perf_counter ()
409
+
404
410
try :
405
411
if varipeps_config .ad_use_custom_vjp :
406
412
(
@@ -579,6 +585,9 @@ def random_noise(a):
579
585
conv > varipeps_config .optimizer_reuse_env_eps ,
580
586
)
581
587
except NoSuitableStepSizeError :
588
+ runtime = time .perf_counter () - runtime_start
589
+ step_runtime [random_noise_retries ].append (runtime )
590
+
582
591
if varipeps_config .optimizer_fail_if_no_step_size_found :
583
592
raise
584
593
else :
@@ -612,6 +621,7 @@ def random_noise(a):
612
621
step_energies ,
613
622
step_chi ,
614
623
step_conv ,
624
+ step_runtime ,
615
625
spiral_indices ,
616
626
additional_input ,
617
627
)
@@ -659,6 +669,7 @@ def random_noise(a):
659
669
step_chi [random_noise_retries ] = []
660
670
step_conv [random_noise_retries ] = []
661
671
max_trunc_error_list [random_noise_retries ] = []
672
+ step_runtime [random_noise_retries ] = []
662
673
663
674
pbar .reset ()
664
675
pbar .refresh ()
@@ -667,6 +678,8 @@ def random_noise(a):
667
678
else :
668
679
conv = 0
669
680
else :
681
+ runtime = time .perf_counter () - runtime_start
682
+ step_runtime [random_noise_retries ].append (runtime )
670
683
max_trunc_error_list [random_noise_retries ].append (max_trunc_error )
671
684
step_energies [random_noise_retries ].append (working_value )
672
685
step_chi [random_noise_retries ].append (
@@ -751,6 +764,7 @@ def random_noise(a):
751
764
step_energies ,
752
765
step_chi ,
753
766
step_conv ,
767
+ step_runtime ,
754
768
spiral_indices ,
755
769
additional_input ,
756
770
)
@@ -797,6 +811,7 @@ def random_noise(a):
797
811
step_energies ,
798
812
step_chi ,
799
813
step_conv ,
814
+ step_runtime ,
800
815
spiral_indices ,
801
816
additional_input ,
802
817
)
@@ -813,5 +828,6 @@ def random_noise(a):
813
828
step_energies = step_energies ,
814
829
step_chi = step_chi ,
815
830
step_conv = step_conv ,
831
+ step_runtime = step_runtime ,
816
832
best_run = best_run ,
817
833
)
0 commit comments