Skip to content

Releases: exafmm/pyexafmm

Threading Improvements, Double Precision Support

27 Jul 15:50
74e38f6
Compare
Choose a tag to compare

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

28 Jun 16:51
b83c810
Compare
Choose a tag to compare

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

09 Jun 11:08
4f4fa36
Compare
Choose a tag to compare

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

21 Apr 14:04
3f6ba70
Compare
Choose a tag to compare

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

10 Mar 10:10
189f358
Compare
Choose a tag to compare

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

29 Jun 11:03
b5e32a7
Compare
Choose a tag to compare
  • 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