Setting the Backend#
GWPopulation
provides a unified interface to a number of numpy/scipy
like APIs.
The backend can be set using gwpopulation.set_backend(backend)
, where
backend
is one of numpy, cupy, jax
.
Downstream packages can automatically track the active backend using entry_points
.
With this set up, packages can use xp
and scs
in specified modules.
Additionally, users can provide a full arbitrary scipy object to be used if anything beyond
scipy.special
is needed.
An example of how to set numpy
, scipy.special
, and the toeplitz
function
from scipy.linalg
via the setup.cfg
file is shown below.
Specification using pyproject.toml
and setup.py
follows slightly
different syntax documentation for which can be found online.
[options.entry_points]
gwpopulation.xp =
mypackage_foo = mypackage.foo
gwpopulation.scs =
mypackage_foo = mypackage.foo
mypackage_bar = mypackage.bar
gwpopulation.other =
mypackage_baz_toeplitz = mypackage.baz:scipy.linalg.toeplitz
Note
Each module that wants to use the GWPopulation
backend must be specified independently
for the automatic propagation to work.
If there is a backend that you would like to use that is not currently supported, please open an issue.