Releases: exafmm/pyexafmm
Releases · exafmm/pyexafmm
Threading Improvements, Double Precision Support
Upgrade Steps
Breaking Changes
- Breaking change in API as user specifies precision
- This leads to function handles accepting configured arguments in Numba functions, and updates to tests to reflect this
- Breaking change in configuration of the threading layer to use an OpenMP backend as default on Linux
New Features
- Double precision support
Bug Fixes
Improvements
- Better testing for linalg, kernel and surface modules
- Double precision support, can achieve > 10 digits of precision.
Other Changes
- N/A
Match Accuracy of ExaFMM and Add Gradients
Upgrade Steps
- Breaking change in API as target potentials now include gradients
Breaking Changes
- AdaptOctree version changed
New Features
- Gradient Calculations
Bug Fixes
- AdaptOctree Version 1.30, fixes a critical bug for non-uniform particle distributions.
Improvements
- exafmm-t and pyexafmm share the same accuracy
- Gradients are also calculated, making PyExaFMM useful in real applications.
Other Changes
- N/A
Fixing Accuracy Issues
Upgrade Steps
- Remove CUDA setup
Breaking Changes
- AdaptOctree version changed
- No more CUDA reliance
New Features
- N/A
Bug Fixes
- PR #80 details the various bugs caught that were ruining accuracy compared to theory
Improvements
- exafmm-t and pyexafmm share comparable accuracies.
Other Changes
- N/A
Speedy Operator Evaluation
Upgrade Steps
- Installation remains the same.
- Introduce new necessary environment variables required for speedy operators.
Breaking Changes
- Backends now customisable and configurable, creating breaking changes with old project structure
New Features
- Fully multithreaded P2M and M2L operator evaluation.
- Auto-vectorised ultra-fast kernel.
- Configurable compute backends (Only numba implemented for now)
Bug Fixes
- N/A
Improvements
- This release sees a 20X speedup in FMM performance from multithreading optimisations.
- A 1million particle benchmark problem (maximum of 100 particles per node) with O(5) expansions, is computed in 15 seconds c.p. with O(5minutes)
Other Changes
- N/A
Fully Adaptive FMM
Upgrade Steps
- Now built as a conda recipe, or installed from anaconda cloud directly
Breaking Changes
- New interface and configuration for
Fmm
class. - New configuration and interface for operator precomputations
- Container classes
Potential
,Node
,Density
and related abstractions deleted - Custom SVD deleted.
New Features
- Adaptive octree integrated with
AdaptOctree
- Fully adaptive FMM
- M2L precomputations accelerated with CUDA and randomised SVD
Bug Fixes
- Working directory had to be source directory.
Improvements
- Radically easier experimental config
- Installation from the cloud
- A single HDF5 database used for all experimental data
- FMM Operator abstractions separated into modular functions, for easy optimisation
- FMM API solidified and separated from implementation of operators.
Other Changes
- N/A
Basic Non-Optimised KIFMM Implementation Added
- Add non-optimised 3D KIFMM operators and data structures
- Add
Fmm
core class, containing the main loop - Add test code for operators and data structure
- Add test code for
Fmm
core class