Skip to content

Releases: lamyj/sycomore

v2.0.0

14 Oct 07:25
v2.0.0
d5d1c76
Compare
Choose a tag to compare

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

14 Nov 18:47
v1.3.2
5002a46
Compare
Choose a tag to compare

This is a bugfix release, allowing Sycomore to compile with xsimd ≥ 8 while retaining compatibility with xsimd 7.

v1.3.1

16 Aug 10:07
v1.3.1
32e438d
Compare
Choose a tag to compare

This is a bugfix release, plugging a memory leak.

v1.3.0

10 Jun 13:29
v1.3.0
416fba6
Compare
Choose a tag to compare

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.

v1.2.1

16 Jan 22:33
Compare
Choose a tag to compare

Bug fix: compilation with Visual Studio

v1.2.0

16 Jan 18:05
Compare
Choose a tag to compare

New features

  • Better integration of Quantity objects with numpy
  • Add arbitrary gradient shift to epg.Regular
  • Easier access to orders in epg.Discrete3D

v1.1.0

19 Nov 15:16
Compare
Choose a tag to compare
  • Improved definition and handling of TimeInterval
  • Improved docstrings of Python objects