Comments (10)
@jlchan mentioned some progress in SciML/RecursiveArrayTools.jl#359 and SciML/RecursiveArrayTools.jl#357
from trixi.jl.
Thanks a lot @jlchan for working on this! No worries, take your time. Get well soon!
from trixi.jl.
Is there any update regarding this? This is getting quite annoying because the restriction to DiffEqBase.jl prevents us from getting newer versions of OrdinaryDiffEq.jl.
from trixi.jl.
Thanks for the references. Good to hear there is some progress!
from trixi.jl.
Yes - we should be able to wrap a array of arrays u
with VectorOfArray(u)
to get around OrdinaryDiffEq.jl dropping support for arrays of arrays. We can unwrap u
via parent(VectorOfArray(u))
, which should be possible inside wrap_array
.
I need to get a PR together for this, but I've got a bit of a backlog, esp with COVID this week and then travel next week. Apologies for the delay - I hope things will clear up around the second week of March...
from trixi.jl.
There's one more issue that needs to be resolved upstream related to broadcasting over VectorOfArray
with multidimensional parent arrays SciML/RecursiveArrayTools.jl#373
from trixi.jl.
I've started working on having DGMulti
solvers use VectorOfArray
. Some more upstream issues: SciML/RecursiveArrayTools.jl#378
from trixi.jl.
Thanks a lot!
from trixi.jl.
I'm consider another alternative since we're running into upstream issues with RecursiveArrayTools.jl.
Proposal: switch DGMulti
to Matrix{<:SVector}
storage as discussed previously in #1240.
What DGMulti
currently uses
DGMulti
assumes that u[index, element]
is an SVector
, so it uses two array of SVector:
Matrix{<:SVector}
, since the data layout provides efficient memory accessesStructArray{<:SVector{nvariables}, 2}
, since the memory layout (lazy zipping ofnvariables
Matrix
arrays) enabled fast matrix-vector products using Octavian.jl (since simplices tend to have larger dense matrix operations).
What is changing in Julia v1.11
Octavian.jl is being deprecated in Julia v1.11 (see #1906). On an unrelated note, OrdinaryDiffEq.jl no longer supports Array{<:SVector}
, so ideally DGMulti
would use a flat (or easily flattened) array format.
What I'm proposing
I don't think there is much reason to support StructArray{<:SVector}
for DGMulti
solutions anymore since Octavian is being deprecated and mul!
with Matrix{<:SVector}
is about as fast (or faster!) than mul!
using Matrix{Float64}
now (with the exception of an odd allocation for the 5-arg mul!
).
Instead, I think we can do wrap_array
with the SVector
reinterpret
trick, or if it is inefficient, maybe we could use wrap_array
to do an unsafe conversion.
I'll start a PR for #1906 first to a staging branch.
from trixi.jl.
Thanks! This sounds good to me - the wrap_array
infrastructure we use in Trixi.jl should help with that. Please let me know if I can help you or should review something
from trixi.jl.
Related Issues (20)
- Remove bandaid related to FFMPEG from `test/Project.toml`
- `TimeSeriesCallback` for dimensions other than 2D HOT 1
- Update plotting support for Makie to preferred Makie workflow
- Graceful exit on aborting a simulation with Ctrl-C HOT 5
- Allocations for `SummaryCallback` with custom integrators HOT 5
- P4est MPI simulation gets stuck when not all ranks have BC faces HOT 4
- Make custom integrators more similar to OrdinaryDiffEq.jl integrators? HOT 5
- Link in SECURITY.md gives 404 HOT 4
- Tree Mesh centering the mesh and shifting the boundaries (rectangles to quads) HOT 3
- Workaround for failing Codecov runs HOT 4
- Remove dependence on Octavian.jl for Julia 1.11 HOT 1
- More consistent documentation of available grid types HOT 1
- Change name `scalar` to `density` in `LinearAdvectionEquation` HOT 4
- Restart does not work with TreeMesh + AMR + MPI
- Restart does not work with p4est + AMR HOT 1
- Performance evaluation for Julia v1.11
- Fix MPI tests on Apple Silicon HOT 5
- Missing documentation of source_terms HOT 2
- Add Positivity Preserving Feature for GaussSBP nodes HOT 2
- `AnalysisSurfaceIntegral` not ready for AMR HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from trixi.jl.