Skip to content

Conversation

@KeshavVenkatesh
Copy link
Contributor

I cleaned up the convergence test file and removed the extra tableau checks. Can you please review this and let me know if it looks good? Thanks!

Thanks for providing this opportunity for me. I have greatly enjoyed this work. If there is anything else that I can help out with, please let me know. I am open to working on small-scale projects or bigger tasks as well.

@ChrisRackauckas ChrisRackauckas merged commit 701061a into SciML:master Oct 24, 2025
112 of 198 checks passed
@ChrisRackauckas
Copy link
Member

I think a very nice project that could have a high impact on load times could be to finish the tableau-ization of some of the algorithms. We have a bounty out there for some, but if you're on the explicit RKs right now you might want to read #233 (comment) . For example, ExplicitRK works just by giving the table of coefficients, so in theory your PR didn't need to write the perform_step! and just needed to supply the coefficients. But that doesn't end up actually being the case for example with Verner methods because ExplicitRK cannot handle lazy interpolation values (wait, did you do the interpolation coefficients part?). If that can be added to ExplicitRK, we can benchmark whether it's actually fast enough that OrdinaryDiffEqVerner could cut out its specialized stepping code and just be tableau instantiations. That would then make them all compile as the same algorithm with different runtime values, so compilation would drop immensely.

@KeshavVenkatesh
Copy link
Contributor Author

I looked at the code in detail and here is what I found:

  • I don't see any extra coefficients defined in the tableaus for RKV76IIa (code), so I don't know if it needs the implementation for the interpolation coefficients. If it does, the implementation should be in the file here.
  • Please let me know if any extra coefficients are defined in the original paper for RKV76IIa.
  • For ExplicitRK as well, I don't see any extra coefficients defined for implementing the interpolation.
  • Should I look at the paper for the Dormand-Prince Method and see if it has any extra coefficients?
  • Could you also let me know if we can benchmark without the lazy interpolation (comparing RKV76IIa and ExplicitRK, both of which do not have the lazy interpolation) to see if there are any performance advantages for ExplicitRK?

@ChrisRackauckas
Copy link
Member

Oh it looks like ExplicitRK doesn't do any interpolations yet, so that's the starting point. I would start by extending the tableaus to allow for it, and doing Tsit5 and DP5 first since those don't have any lazy stages.

Could you also let me know if we can benchmark without the lazy interpolation (comparing RKV76IIa and ExplicitRK, both of which do not have the lazy interpolation) to see if there are any performance advantages for ExplicitRK?

Yes, implementing it with ExplicitRK and checking for any performance difference would be good. ExplicitRK will be slower, but the question is whether it's close enough now.

@KeshavVenkatesh
Copy link
Contributor Author

KeshavVenkatesh commented Oct 29, 2025

Oh it looks like ExplicitRK doesn't do any interpolations yet, so that's the starting point. I would start by extending the tableaus to allow for it, and doing Tsit5 and DP5 first since those don't have any lazy stages.

Could you please point me to the source where the extra coefficients for interpolations are defined for Tsit5 and DP5? I can start with the implementations

Yes, implementing it with ExplicitRK and checking for any performance difference would be good. ExplicitRK will be slower, but the question is whether it's close enough now.

Just to clarify, are you suggesting that we can benchmark ExplicitRK and RKV76IIa without the interpolations or should we implement the interpolation first before benchmarking?

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

Successfully merging this pull request may close these issues.

2 participants