Releases: lamyj/sycomore
v2.0.0
It's been a long time coming, but Sycomore has finally reached version 2.0!
- Add exchange and MT operators to EPG simulations
- Complete rewrite of isochromat simulation
- Removal of Configuration model
- Removal of
$T_2'$ from species to have a coherent interface across models - Replace home-made Array class with xtensor for a better integration with SIMD operations and data exchange at the Python layer with xtensor-python
- Add complete Python and C++ API in the documentation
- Add C++ and Python code examples to the documentation
v1.3.2
v1.3.1
v1.3.0
This version has deeply modified the EPG code, with large speed-ups and new operators.
Ludicrous speed Parallelism based on OpenMP has been replaced with SIMD instructions, based on xsimd. Careful benchmarking the previous version has shown that multiple threads within a single model did not consistently provide speed-ups, and in certain cases caused slow-downs; the chosen SIMD approach better exploits the features of modern CPUs while still allowing between-models multi-threading.
On top of that, the culling of extremal and empty states was added to the regular EPG model, reducing the number of states and thus the run time.
A DESS benchmark between the previous version and the current version shows a speed-up of at least x7.6. Note that since the thresholding was added to the regular EPG model for the current version, the speed-up cannot be computed for this case.
Model | v1.2.1 (ms) | v1.3.0 (ms) | Speed-up |
---|---|---|---|
Regular (ϵ=0) | 138.15 (16 threads) | 8.51 | 16.23 |
Regular (ϵ=10⁻⁶) | N/A | 1.54 | N/A |
Discrete (ϵ=0) | 364.43 (16 threads) | 17.42 | 20.92 |
Discrete (ϵ=10⁻⁶) | 20.45 (1 thread) | 2.69 | 7.60 |
Discrete 3D (ϵ=0) | 1838.18 (1 thread) | 28.95 | 63.49 |
Discrete 3D (ϵ=10⁻⁶) | 41.91 (1 thread) | 4.44 | 9.44 |
New EPG operators Off-resonance and bulk motion have been added to all three EPG variants.
Sundries
- The documentation has been upgraded to use Pweave: the generation of figures is now self-contained.
- The continuous integration has been moved from TravisCI to Github and improved with respect to compilation on Windows and generation of Python wheels.