Remix.run Logo
drnick1 3 days ago

The authors seem to push a Julia implementation, but the issue is that no one uses Julia...

eigenspace 2 days ago | parent [-]

The context here is that the author is the principal developer of one of the biggest (if not the biggest) and most performant differential equation solver suites in the world[1].

It's written in julia, and it is very widely used, and known to be state of the art.

[1] https://github.com/SciML/DifferentialEquations.jl

drnick1 2 days ago | parent [-]

Would it not make more sense to write such a tool in C? The idea here is that C is universal, and higher level languages like Python, R, Julia and others all have a foreign function interface for C.

ChrisRackauckas 17 hours ago | parent | next [-]

This tool already exists in Python and R. See https://cran.r-project.org/web/packages/diffeqr/index.html and https://anaconda.org/conda-forge/diffeqpy. Julia has language bindings that make it simple enough to bind to other high level languages that these projects are maintained by the core team and supports lots of the library, including forms of automatic differentiation and GPU kernel generation. See for example the bindings that allow for usage within PyTorch https://github.com/SciML/juliatorch and the Python-based Collab notebooks showing the GPU usage https://colab.research.google.com/drive/1bnQMdNvg0AL-LyPcXBi....

With Julia v1.12's small binary generation, we plan to release forms via binaries with C ABIs over the next year as well.

Are those sufficient or should we consider supporting other deployments?

adgjlsfhk1 a day ago | parent | prev | next [-]

No. C isn't an expressive enough language to write many solvers in. Many of the best solvers are basically impossible to write without meta-programming (where you write a generator for the n-stage version that is then able to generate the code for all the possible permuations), and there are also massive performance gains through symbolic-numeric approaches where the solver does introspection of the user function to rearrangements that aren't possible in a black-box framework.

eigenspace a day ago | parent | prev [-]

Good luck being that productive in C, distributing the software adequately, and attracting collaborators.