Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Experiments with DOP853 and numba #30

Open
s-m-e opened this issue Mar 7, 2024 · 0 comments
Open

Experiments with DOP853 and numba #30

s-m-e opened this issue Mar 7, 2024 · 0 comments

Comments

@s-m-e
Copy link

s-m-e commented Mar 7, 2024

Hi folks, in recent years you had some encounters with the developers of poliastro via the bug tracker (e.g. #11 or #13) and other places (numba's discourse e.g. here). Since poliastro has been archived, I am continuing its development in a fork. A fast implementation of DOP853 (faster than the one in scipy) somehow compiled by numba has been a long standing issue and there were attempts to port poliastro from relying on scipy over to numbakit-ode, which have stalled for a number of reasons.

I recently spent some time on isolating the relevant portions of scipy and turning them into a purely functional implementation compiled entirely by numba - with identical yet much faster results as far as my use-case is concerned. The idea is that the solver can run in parallel on both CPUs and GPUs, the latter via CUDA (thanks to numba's support for it), unaltered with an identical code base. My work might not be applicable to your package, but it might be an interesting inspiration never the less. I'd also be interested in reviews / comments on the implementation, still WIP.

The entire thing uses tuples instead of arrays (limitation imposed by CUDA compatibility), so it's over 3k lines of code ... The funny thing though is that this also makes its significantly (up to two orders of magnitude) faster single-threaded on CPUs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant