Replace Boost numeric/odeint with existing SUNDIALS library - #3357
Replace Boost numeric/odeint with existing SUNDIALS library#3357andrjohns wants to merge 9 commits into
Conversation
Jenkins Console Log Machine informationNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.3 LTS Release: 20.04 Codename: focalCPU: G++: Clang: |
|
This needs to update https://github.com/stan-dev/math/blob/develop/lib/upgrade-sundials.sh#L117 to not delete the arkode files during sundials upgrades |
3734ea1 to
f06cd6f
Compare
55f4070 to
4cb6dff
Compare
Argh good catch! Updated the vendor script and re-written the history to run it and commit the results |
|
Is everything up to 42a30df just upgrading sundials? |
Jenkins Console Log Machine informationNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.3 LTS Release: 20.04 Codename: focalCPU: G++: Clang: |
Jenkins Console Log Machine informationNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.3 LTS Release: 20.04 Codename: focalCPU: G++: Clang: |
|
You upgraded Sundials - but did not go to the current 7.8.0 release? What was the rationale? Don't get me wrong - this is not a must to go to the latest; just curious to know what the motivation is. Overall I think it is a good idea to move away from odeint in boost - as I recall the developer of odeint went to industry and is not super active in developing it. This is the status from a few years back. |
Oh I just added the extraction of ARKODES from the current version, I hadn't updated the version. Do you think it's worth bumping the version as well? |
|
Moving along the version gives one the benefit of a maintained software. I looked into it a while ago (pre Claude) and found it was a hassle as a few things changed. I'd think that it is a good thing to move along, yes. Sundials does not need the overall frequently, but now is certainly a good time... though to keep the PR reviewable I would not suggest to fold it into here. |
Summary
A companion to #3356, this PR replaces our dependency on the Boost
numeric/odeintheaders for theode_rk45andode_ckrkfunctions with theARKODElibrary from the SUNDIALS suite. Thenumeric/odeintheaders brought in a massive footprint of files - namely themplandfusionlibraries.There are lots of file-changes due to the vendoring, but I've put that as a separate commit so it's easier to see just the Stan changes
Tests
N/A - existing tests should still pass
Side Effects
Slight reduction in compile times due to fewer includes
Release notes
Replaced the Boost odeint with ARKODE for the
ode_rk45andode_ckrkfunctionsChecklist
Copyright holder: Andrew Johnson
The copyright holder is typically you or your assignee, such as a university or company. By submitting this pull request, the copyright holder is agreeing to the license the submitted work under the following licenses:
- Code: BSD 3-clause (https://opensource.org/licenses/BSD-3-Clause)
- Documentation: CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
the basic tests are passing
./runTests.py test/unit)make test-headers)make test-math-dependencies)make doxygen)make cpplint)the code is written in idiomatic C++ and changes are documented in the doxygen
the new changes are tested