Skip to content

Releases: glotzerlab/spatula

v0.2.0

05 Mar 19:32

Choose a tag to compare

Changed

  • Project now uses C++ 20 (primarily for std::span). This is great for ergonomics and makes a future Eigen3 port much easier (Eigen::Map is very similar)
  • Nanobind exports replace pybind11
  • Optimizers are now header-only
  • Locality code is now header-only
  • Vec3 and Quaternion are now header-only
  • BondOrder is now header-only
  • Metrics and Utils (excluding QlmEval) are now header only
  • pgop.py::BOOSOP code is now in separate file boosop.py.
  • Many std::vector<std::vector<...>> are now vectors of pointers, allowing for copy- and move- free access to python data. Matrix elements are accessed with std::span and cast to statically-allocated types for performance.
  • py::array are now replaced with std::vector or type* pointers
  • Implied rotation matrix type (std::vector<double>) is now typedef RotationMatrix = std::array<double, 9>
  • Use Python stable ABI (abi3).
  • Massive perfomance updates all around
  • Added SIMD via ISPC for extra speedup

Removed

  • PGOPStore
  • BOOSOPStore
  • Unused python bindings (quaternion, vec3, QLMEval, metrics)

Added

  • m_group_sizes class method for PGOP, which stores the size of each group (currently, (group order - 1) * 9). Previous code used vector.size, which requires copies and allocations for both individual elements and entire groups.
  • RotationMatrix std::array wrapper for fast and strongly typed vector rotations
  • -DENABLE_PROFILING flag to allow for easy profiling
  • spatula.optimize.NoOptimization now accepts orientation=(w, x, y, z) so PGOP/BOOSOP can evaluate at a fixed normalized quaternion without running an optimization loop.
  • Pre-built wheels using ISPC for increased performance

Updated

  • bs_thread_pool 3.1.0 -> 5.2.0
  • Thread pool now attempts to pin threads on Unix
  • Thread-local buffers are now used to reduce parallel memory allocations

v0.1.1

16 Oct 18:41

Choose a tag to compare

Added:

  • Python 3.14 support.
  • Python 3.10 and 3.11 wheels on PyPI.
  • Pytest mode to run tests for single example per point group.

Fixed:

  • Windows failures catching.

v0.1.0

23 Sep 15:21
02e284d

Choose a tag to compare

Added:

  • First PyPI release.

Changed:

  • Documentation improvements.
  • CI improvements.