Releases: glotzerlab/spatula
Releases · glotzerlab/spatula
v0.2.0
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::BOOSOPcode is now in separate fileboosop.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 withstd::spanand cast to statically-allocated types for performance. py::arrayare now replaced withstd::vectorortype*pointers- Implied rotation matrix type (
std::vector<double>) is nowtypedef 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_sizesclass 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_PROFILINGflag to allow for easy profilingspatula.optimize.NoOptimizationnow acceptsorientation=(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_pool3.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
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
Added:
- First PyPI release.
Changed:
- Documentation improvements.
- CI improvements.