oxide-enzyme
DiffEqOperators.jl
Our great sponsors
oxide-enzyme | DiffEqOperators.jl | |
---|---|---|
4 | 3 | |
102 | 281 | |
- | - | |
2.9 | 4.6 | |
about 1 year ago | 11 months ago | |
Rust | Julia | |
Apache License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
oxide-enzyme
-
Enzyme: towards state-of-the-art AutoDiff in Rust
Afterwards, you can have a look at https://github.com/rust-ml/oxide-enzyme, where I published some toy examples. The current approach has a lot of limitations, mostly due to using the ffi / c-abi to link the generated functions. @bytesnake and I are already looking at an alternative implementation which should solve most, if not all issues. For the meantime, we hope that this already helps those who want to do some early testing. This link might also help you to understand the Rust frontend a bit better. I will add a larger blog post once oxide-enzyme is ready to be published on crates.io.
- Oxide-Enzyme: Integrating LLVM's Static Automatic Differentiation Plugin
- Julia 1.7 has been released
DiffEqOperators.jl
-
Julia 1.7 has been released
>I hope those benchmarks are coming in hot
M1 is extremely good for PDEs because of its large cache lines.
https://github.com/SciML/DiffEqOperators.jl/issues/407#issue...
The JuliaSIMD tools which are internally used for BLAS instead of OpenBLAS and MKL (because they tend to outperform standard BLAS's for the operations we use https://github.com/YingboMa/RecursiveFactorization.jl/pull/2...) also generate good code for M1, so that was giving us some powerful use cases right off the bat even before the heroics allowed C/Fortran compilers to fully work on M1.
-
Why are NonlinearSolve.jl and DiffEqOperators.jl incompatible with the latest versions of ModelingToolkit and Symbolics!!!? Symbolics and ModelingToolkit are heavily downgraded when those packages are added.
(b) DiffEqOperators.jl is being worked on https://github.com/SciML/DiffEqOperators.jl/pull/467 .
-
What's Bad about Julia?
I like that they are colored now, but really what needs to be added is type parameter collapasing. In most cases, you want to see `::Dual{...}`, i.e. "it's a dual number", not `::Dual{typeof(ODESolution{sfjeoisjfsfsjslikj},sfsef,sefs}` (these can literally get to 3000 characters long). As an example of this, see the stacktraces in something like https://github.com/SciML/DiffEqOperators.jl/issues/419 . The thing is that it gives back more type information than the strictest dispatch: no function is dispatching off of that first 3000 character type parameter, so you know that printing that chunk of information is actually not informative to any method decisions. Automated type abbreviations could take that heuristic and chop out a lot of the cruft.
What are some alternatives?
Enzyme - High-performance automatic differentiation of LLVM and MLIR.
Gridap.jl - Grid-based approximation of partial differential equations in Julia
mujoco - Multi-Joint dynamics with Contact. A general purpose physics simulator.
BoundaryValueDiffEq.jl - Boundary value problem (BVP) solvers for scientific machine learning (SciML)
Infiltrator.jl - No-overhead breakpoints in Julia
ApproxFun.jl - Julia package for function approximation
Diffractor.jl - Next-generation AD
FourierFlows.jl - Tools for building fast, hackable, pseudospectral partial differential equation solvers on periodic domains
FrechetDiff.jl - FrechetDiff is an experimental Julia package for automatic differentiation (AD).
julia - The Julia Programming Language
SciMLTutorials.jl - Tutorials for doing scientific machine learning (SciML) and high-performance differential equation solving with open source software.
DifferentialEquations.jl - Multi-language suite for high-performance solvers of differential equations and scientific machine learning (SciML) components. Ordinary differential equations (ODEs), stochastic differential equations (SDEs), delay differential equations (DDEs), differential-algebraic equations (DAEs), and more in Julia.