Spinach vs Spynach: maz_noesy_2 (CPU)
run maz_noesy_2, both sides present. Built by comparison/report.py; protocol in comparison/README.md.
Provenance
spinach
| run date (UTC) | 2026-10-14T17:53:22Z |
|---|---|
| Spinach version | 2.13 |
| commit | 03a88b7e912ffbb3122dd24829cc5d216209c804 |
| local modifications | False |
| MATLAB | 26.2.0.3386108 (R2026b) |
| host | MacBook-Pro-8.local |
| platform | MACA64 |
| cores | 12 |
| BLAS | Apple Accelerate BLAS (ILP64) |
| computational threads | 12 |
| parallel pool workers | 11 |
| GPU requested | False |
| GPU device | |
| case options | {"gpu": false} |
Spynach
| run date (UTC) | 2026-10-14T19:19:37Z |
|---|---|
| Spynach version | 074f4d2-dirty |
| commit | 074f4d2c9f99a79f8a1e8aa1217ce8e09055b5da |
| local modifications | True |
| Python | 3.12.5 |
| NumPy | 2.5.4 |
| SciPy | 1.18.1 |
| host | MacBook-Pro-8.local |
| platform | macOS-26.6.2-arm64-arm-64bit |
| cores | 12 |
| BLAS | {"numpy": "accelerate", "scipy": "Accelerate"} |
| thread settings | library defaults |
| GPU requested | False |
| GPU device | |
| case options | {} |
| not run |
Timings
| stage | Spinach / s | Spynach / s | Spynach / Spinach |
|---|---|---|---|
| create | 1.26 | 0.01 | 0.00x |
| basis | 3.73 | 0.04 | 0.01x |
| liquid/noesy | 840.81 | 1701.60 | 2.02x |
| processing | 0.01 | 0.01 | 0.90x |
| plot | 0.15 | 0.18 | 1.22x |
| total (wall clock) | 846.15 | 1701.90 | 2.01x |
Data
| variable | Spinach shape | Spynach shape | relative error | max |difference| | |
|---|---|---|---|---|---|
| fid_cos | (256, 256) | (256, 256) | 1.187e-10 | 1.473e-10 | |
| fid_sin | (256, 256) | (256, 256) | 1.105e-10 | 1.316e-10 | |
| spectrum | (1024, 1024) | (1024, 1024) | 1.114e-10 | 1.344e-07 |
relative error = ||Spynach - Spinach||F / ||Spinach||F, the metric of the oracle tests.
Figures
spinach: noesy
Profiles
spinach
by self time
| function | calls | self / s | total / s |
|---|---|---|---|
| propagator | 9 | 719.49 | 741.10 |
| expmint | 1 | 56.47 | 796.74 |
| clean_up | 361 | 21.80 | 21.80 |
| ParforEngine>ParforEngine.getCompleteIntervals | 306 | 17.06 | 17.45 |
| evolution>(parfor body) | 48 | 8.61 | 9.60 |
| CJSKeyValueStore>iWriteDataFile | 124 | 2.78 | 2.78 |
| CJSKeyValueStore>iReadDataFile | 31 | 2.64 | 2.64 |
| redfield_integral_async | 1 | 2.27 | 14.83 |
| ParforEngine>ParforEngine.addInterval | 966 | 1.81 | 1.96 |
| cheap_norm | 819 | 1.54 | 1.55 |
| CJSKeyValueStore>CJSKeyValueStore.getSingleVariable | 31 | 1.54 | 4.25 |
| cell2mat>concatenateCellContents | 25 | 1.51 | 1.51 |
| hamiltonian | 4 | 1.49 | 5.51 |
| CJSKeyValueStore>CJSKeyValueStore.putSingleVariable | 124 | 1.08 | 3.94 |
| existentials | 1 | 0.78 | 0.78 |
| corrfun | 661 | 0.36 | 0.41 |
| step>reordered_taylor | 77 | 0.30 | 0.30 |
| AbstractClusterPool.AbstractClusterPool>AbstractClusterPool.get.ValueStore | 32 | 0.27 | 0.30 |
| report | 1544 | 0.24 | 0.28 |
| relaxation | 2 | 0.21 | 817.35 |
| CJSKeyValueStore>@(key)obj.KeyFileStore.remove(key) | 31 | 0.16 | 0.16 |
| step>(parfor body) | 936 | 0.14 | 0.17 |
| parallel_function>distributed_execution | 43 | 0.14 | 20.15 |
| ParforEngine>ParforEngine.buildParforController | 43 | 0.12 | 0.16 |
| step | 85 | 0.10 | 10.19 |
by total time (with callees)
| function | calls | self / s | total / s |
|---|---|---|---|
| run | 1 | 0.00 | 846.16 |
| run_comparison | 1 | 0.06 | 846.16 |
| maz_noesy_2_spinach | 1 | 0.03 | 846.10 |
| liquid | 1 | 0.00 | 840.81 |
| relaxation | 2 | 0.21 | 817.35 |
| rlx_scalar | 1 | 0.05 | 796.80 |
| expmint | 1 | 56.47 | 796.74 |
| propagator | 9 | 719.49 | 741.10 |
| parallel_function | 51 | 0.02 | 30.02 |
| noesy | 1 | 0.01 | 22.98 |
| clean_up | 361 | 21.80 | 21.80 |
| parallel_function>distributed_execution | 43 | 0.14 | 20.15 |
| ParforEngine>ParforEngine.getCompleteIntervals | 306 | 17.06 | 17.45 |
| redfield_integral_async | 1 | 2.27 | 14.83 |
| evolution | 12 | 0.07 | 12.86 |
| step | 85 | 0.10 | 10.19 |
| evolution>(parfor body) | 48 | 8.61 | 9.60 |
| hamiltonian | 4 | 1.49 | 5.51 |
| ValueStore>ValueStore.get | 31 | 0.01 | 4.27 |
| CJSKeyValueStore>CJSKeyValueStore.getVariable | 31 | 0.01 | 4.26 |
| CJSKeyValueStore>@(key)obj.getSingleVariable(key) | 31 | 0.00 | 4.25 |
| CJSKeyValueStore>CJSKeyValueStore.getSingleVariable | 31 | 1.54 | 4.25 |
| ValueStore>ValueStore.put | 31 | 0.05 | 4.03 |
| CJSKeyValueStore>CJSKeyValueStore.putVariable | 31 | 0.01 | 3.95 |
| CJSKeyValueStore>CJSKeyValueStore.putSingleVariable | 124 | 1.08 | 3.94 |
Spynach
by self time
| function | calls | self / s | total / s |
|---|---|---|---|
| <built-in method scipy.sparse._sparsetools.csr_matmat> | 1186 | 1119.10 | 1119.10 |
| <built-in method scipy.sparse._sparsetools.csr_matmat_maxnnz> | 1186 | 428.41 | 428.41 |
| <built-in method scipy.sparse._sparsetools.csr_matvecs> | 1916 | 53.22 | 53.22 |
| matlab_round (utilities.py:20) | 3608 | 44.67 | 44.67 |
| <built-in method scipy.sparse._sparsetools.csr_sort_indices> | 665 | 15.10 | 15.10 |
| _reordered_taylor (propagation.py:122) | 85 | 13.44 | 24.81 |
| <method 'copy' of 'numpy.ndarray' objects> | 7717 | 7.96 | 7.96 |
| <built-in method scipy.sparse._sparsetools.csr_eliminate_zeros> | 1036 | 5.52 | 5.52 |
| clean_up (utilities.py:27) | 1168 | 4.96 | 80.55 |
| <built-in method numpy._core._multiarray_umath.count_nonzero> | 3639 | 2.92 | 2.92 |
| <built-in method scipy.sparse._sparsetools.get_csr_submatrix> | 64 | 1.01 | 1.01 |
| <built-in method scipy.sparse._sparsetools.csr_plus_csr> | 632 | 0.73 | 0.73 |
| <built-in method numpy.zeros> | 20151 | 0.62 | 0.62 |
| <built-in method scipy.sparse._sparsetools.csr_tocsc> | 146 | 0.60 | 0.60 |
| <built-in method scipy.sparse._sparsetools.csr_matvec> | 2970 | 0.57 | 0.57 |
| <built-in method scipy.sparse._sparsetools.csr_sum_duplicates> | 666 | 0.47 | 0.47 |
| <built-in method scipy.sparse._sparsetools.coo_tocsr> | 131 | 0.26 | 0.26 |
| _superop_side_build (operators.py:280) | 553 | 0.21 | 0.49 |
| step (propagation.py:74) | 85 | 0.14 | 25.00 |
| assemble (hamiltonian.py:174) | 38 | 0.12 | 1.56 |
| <method 'reduce' of 'numpy.ufunc' objects> | 44286 | 0.11 | 0.11 |
| evolution (propagation.py:208) | 12 | 0.11 | 48.73 |
| <method 'searchsorted' of 'numpy.ndarray' objects> | 12160 | 0.09 | 0.09 |
| <method 'nonzero' of 'numpy.ndarray' objects> | 14020 | 0.08 | 0.08 |
| _mul_scalar (_data.py:140) | 809 | 0.07 | 0.13 |
by total time (with callees)
| function | calls | self / s | total / s |
|---|---|---|---|
| run (maz_noesy_2_spynach.py:13) | 1 | 0.00 | 1701.90 |
| simulate (maz_noesy_2.py:132) | 1 | 0.00 | 1701.67 |
| liquid (contexts.py:32) | 1 | 0.00 | 1701.60 |
| _dissipators (contexts.py:284) | 1 | 0.00 | 1628.01 |
| relaxation (relaxation.py:51) | 2 | 0.01 | 1628.01 |
| expmint (relaxation.py:197) | 32 | 0.00 | 1622.50 |
| _srfk (relaxation.py:294) | 1 | 0.00 | 1618.16 |
| __matmul__ (_base.py:1006) | 6424 | 0.00 | 1602.30 |
| _matmul_dispatch (_base.py:875) | 6541 | 0.01 | 1602.28 |
| _matmul_sparse (_compressed.py:415) | 1186 | 0.01 | 1547.79 |
| propagator (propagation.py:25) | 48 | 0.05 | 1529.11 |
| <built-in method scipy.sparse._sparsetools.csr_matmat> | 1186 | 1119.10 | 1119.10 |
| <built-in method scipy.sparse._sparsetools.csr_matmat_maxnnz> | 1186 | 428.41 | 428.41 |
| clean_up (utilities.py:27) | 1168 | 4.96 | 80.55 |
| noesy (sequences.py:80) | 1 | 0.00 | 73.53 |
| _matmul_multivector (_compressed.py:399) | 1928 | 0.01 | 53.85 |
| <built-in method scipy.sparse._sparsetools.csr_matvecs> | 1916 | 53.22 | 53.22 |
| evolution (propagation.py:208) | 12 | 0.11 | 48.73 |
| matlab_round (utilities.py:20) | 3608 | 44.67 | 44.67 |
| step (propagation.py:74) | 85 | 0.14 | 25.00 |
| _reordered_taylor (propagation.py:122) | 85 | 13.44 | 24.81 |
| count_nonzero (_compressed.py:138) | 3451 | 0.00 | 17.52 |
| nnz (utilities.py:15) | 2196 | 0.00 | 17.18 |
| sum_duplicates (_compressed.py:1072) | 3717 | 0.00 | 15.63 |
| sort_indices (_compressed.py:1124) | 666 | 0.00 | 15.10 |
Console logs
- spinach: console.log
- Spynach: console.log