Spinach vs Spynach: noesy_strychnine (CPU)
run noesy_strychnine, both sides present. Built by comparison/report.py; protocol in comparison/README.md.
Provenance
spinach
| run date (UTC) | 2026-10-14T17:38:16Z |
|---|---|
| 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-14T12:34:07Z |
|---|---|
| Spynach version | 097b823-dirty |
| commit | 097b823313459abb57a2c727c52abfcfe013a4cf |
| 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 | 20.31 | 0.01 | 0.00x |
| basis | 2.26 | 0.06 | 0.03x |
| liquid/noesy | 88.66 | 93.31 | 1.05x |
| processing | 0.12 | 0.05 | 0.41x |
| plot | 1.86 | 0.15 | 0.08x |
| total (wall clock) | 113.24 | 93.58 | 0.83x |
Data
| variable | Spinach shape | Spynach shape | relative error | max |difference| | |
|---|---|---|---|---|---|
| fid_cos | (512, 512) | (512, 512) | 2.187e-12 | 3.968e-16 | |
| fid_sin | (512, 512) | (512, 512) | 2.267e-12 | 1.628e-16 | |
| spectrum | (2048, 2048) | (2048, 2048) | 1.316e-12 | 1.268e-12 |
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 |
|---|---|---|---|
| ParforEngine>ParforEngine.getCompleteIntervals | 492 | 79.10 | 80.67 |
| ClusterClientSession>iWaitForAllWorkerServices | 1 | 13.73 | 13.87 |
| ParforEngine>ParforEngine.addInterval | 1741 | 2.60 | 3.01 |
| HTMLCanvasPlugin.HTMLCanvasPlugin>HTMLCanvasPlugin.createCanvas | 1 | 1.05 | 1.10 |
| hamiltonian | 4 | 0.77 | 10.09 |
| existentials | 1 | 0.62 | 0.79 |
| CJSKeyValueStore>iWriteDataFile | 100 | 0.50 | 0.50 |
| CJSKeyValueStore>iReadDataFile | 25 | 0.45 | 0.45 |
| DataQueue>DataQueue.dispatchContinuation | 1483 | 0.36 | 0.47 |
| redfield_integral_async | 1 | 0.34 | 2.80 |
| AbstractClusterPool.AbstractClusterPool>iPostLaunchSetup | 1 | 0.34 | 0.43 |
| cell2mat>concatenateCellContents | 22 | 0.32 | 0.32 |
| CJSKeyValueStore>CJSKeyValueStore.putSingleVariable | 100 | 0.28 | 0.82 |
| table.saveobj | 1920 | 0.26 | 0.42 |
| cheap_norm | 718 | 0.25 | 0.26 |
| evolution | 12 | 0.25 | 61.98 |
| report | 2387 | 0.24 | 0.27 |
| noesy_strychnine_spinach | 1 | 0.22 | 113.21 |
| clean_up | 143 | 0.22 | 0.22 |
| CJSKeyValueStore>CJSKeyValueStore.getSingleVariable | 25 | 0.20 | 0.70 |
| tabular.parenReference | 244 | 0.20 | 0.39 |
| step>(parfor body) | 1160 | 0.19 | 0.23 |
| autoexec | 1 | 0.19 | 0.36 |
| DataQueue>DataQueue.maybeDrainAndDispatchAllDataOnQueue | 478 | 0.19 | 0.93 |
| tabular.dotParenReference | 159406 | 0.17 | 0.17 |
by total time (with callees)
| function | calls | self / s | total / s |
|---|---|---|---|
| run | 1 | 0.00 | 113.26 |
| run_comparison | 1 | 0.05 | 113.26 |
| noesy_strychnine_spinach | 1 | 0.22 | 113.21 |
| liquid | 1 | 0.02 | 88.65 |
| parallel_function | 47 | 0.04 | 85.57 |
| parallel_function>distributed_execution | 43 | 0.13 | 85.07 |
| ParforEngine>ParforEngine.getCompleteIntervals | 492 | 79.10 | 80.67 |
| noesy | 1 | 0.05 | 75.48 |
| evolution | 12 | 0.25 | 61.98 |
| create | 1 | 0.07 | 20.29 |
| Cluster.parpool | 1 | 0.00 | 17.53 |
| doParpool | 1 | 0.02 | 17.50 |
| AbstractClusterPool.AbstractClusterPool>AbstractClusterPool.hBuildPool | 1 | 0.03 | 17.33 |
| AbstractClusterPool.AbstractClusterPool>iStartClient | 1 | 0.00 | 16.46 |
| AbstractInteractiveClient>AbstractInteractiveClient.start | 1 | 0.03 | 16.45 |
| ClusterClientSession>ClusterClientSession.waitForConnections | 1 | 0.16 | 14.70 |
| ClusterClientSession>iWaitForAllWorkerServices | 1 | 13.73 | 13.87 |
| step | 47 | 0.09 | 13.22 |
| relaxation | 1 | 0.08 | 10.61 |
| hamiltonian | 4 | 0.77 | 10.09 |
| ParforEngine>ParforEngine.addInterval | 1741 | 2.60 | 3.01 |
| redfield_integral_async | 1 | 0.34 | 2.80 |
| basis | 1 | 0.05 | 2.25 |
| unihash | 1 | 0.00 | 2.02 |
| plot_2d | 1 | 0.06 | 1.74 |
Spynach
by self time
| function | calls | self / s | total / s |
|---|---|---|---|
| evolution (propagation.py:208) | 12 | 54.37 | 63.24 |
| _reordered_taylor (propagation.py:122) | 47 | 14.76 | 27.02 |
| <built-in method scipy.sparse._sparsetools.csr_matvecs> | 743 | 11.61 | 11.61 |
| <built-in method scipy.sparse._sparsetools.csr_matmat> | 1309 | 2.66 | 2.66 |
| matlab_round (utilities.py:20) | 3897 | 2.26 | 2.26 |
| <built-in method scipy.sparse._sparsetools.csr_matmat_maxnnz> | 1309 | 1.66 | 1.66 |
| <built-in method scipy.sparse._sparsetools.csr_sort_indices> | 761 | 1.01 | 1.01 |
| <built-in method scipy.sparse._sparsetools.csr_matvec> | 4259 | 0.87 | 0.87 |
| <built-in method numpy.zeros> | 30906 | 0.58 | 0.58 |
| <built-in method numpy._core._multiarray_umath.count_nonzero> | 3901 | 0.41 | 0.41 |
| _detect (propagation.py:355) | 4096 | 0.31 | 0.33 |
| <built-in method scipy.sparse._sparsetools.csr_eliminate_zeros> | 1195 | 0.28 | 0.28 |
| _superop_side_build (operators.py:280) | 1490 | 0.28 | 0.62 |
| <built-in method scipy.sparse._sparsetools.csr_plus_csr> | 743 | 0.24 | 0.24 |
| step (propagation.py:74) | 47 | 0.18 | 27.23 |
| clean_up (utilities.py:27) | 1223 | 0.13 | 3.73 |
| <method 'copy' of 'numpy.ndarray' objects> | 11207 | 0.12 | 0.12 |
| <built-in method scipy.sparse._sparsetools.csc_matvec> | 492 | 0.11 | 0.11 |
| <method 'reduce' of 'numpy.ufunc' objects> | 81648 | 0.10 | 0.10 |
| <method 'nonzero' of 'numpy.ndarray' objects> | 36157 | 0.09 | 0.09 |
| <method 'searchsorted' of 'numpy.ndarray' objects> | 19196 | 0.07 | 0.07 |
| <built-in method scipy.sparse._sparsetools.csr_sum_duplicates> | 762 | 0.06 | 0.06 |
| <built-in method scipy.sparse._sparsetools.coo_tocsr> | 103 | 0.06 | 0.06 |
| _chop (propagation.py:360) | 76 | 0.06 | 0.34 |
| reduce (reduction.py:29) | 12 | 0.05 | 0.38 |
by total time (with callees)
| function | calls | self / s | total / s |
|---|---|---|---|
| run (noesy_strychnine_spynach.py:13) | 1 | 0.00 | 93.58 |
| simulate (noesy_strychnine.py:65) | 1 | 0.00 | 93.43 |
| liquid (contexts.py:32) | 1 | 0.00 | 93.31 |
| noesy (sequences.py:80) | 1 | 0.00 | 90.34 |
| evolution (propagation.py:208) | 12 | 54.37 | 63.24 |
| step (propagation.py:74) | 47 | 0.18 | 27.23 |
| _reordered_taylor (propagation.py:122) | 47 | 14.76 | 27.02 |
| __matmul__ (_base.py:1006) | 6755 | 0.00 | 17.65 |
| _matmul_dispatch (_base.py:875) | 6831 | 0.01 | 17.63 |
| _matmul_multivector (_compressed.py:399) | 771 | 0.00 | 12.20 |
| <built-in method scipy.sparse._sparsetools.csr_matvecs> | 743 | 11.61 | 11.61 |
| propagator (propagation.py:25) | 61 | 0.03 | 8.00 |
| _matmul_sparse (_compressed.py:415) | 1309 | 0.01 | 4.41 |
| clean_up (utilities.py:27) | 1223 | 0.13 | 3.73 |
| _dissipators (contexts.py:284) | 1 | 0.00 | 2.79 |
| relaxation (relaxation.py:42) | 1 | 0.00 | 2.79 |
| _redfield (relaxation.py:202) | 1 | 0.00 | 2.71 |
| <built-in method scipy.sparse._sparsetools.csr_matmat> | 1309 | 2.66 | 2.66 |
| matlab_round (utilities.py:20) | 3897 | 2.26 | 2.26 |
| <built-in method scipy.sparse._sparsetools.csr_matmat_maxnnz> | 1309 | 1.66 | 1.66 |
| expmint (relaxation.py:184) | 25 | 0.00 | 1.26 |
| count_nonzero (_compressed.py:138) | 3833 | 0.00 | 1.24 |
| nnz (utilities.py:15) | 2410 | 0.00 | 1.15 |
| hamiltonian (hamiltonian.py:87) | 4 | 0.00 | 1.11 |
| sum_duplicates (_compressed.py:1072) | 4068 | 0.00 | 1.11 |
Console logs
- spinach: console.log
- Spynach: console.log