You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Use symmetry of interactions? We could skip half of the fluid-fluid interaction by applying the same force with a flipped sign to the neighbor particle. However, some SPH codes don't do this because it makes the computations and memory accesses less optimal, especially on GPUs. We could also skip the solid-fluid interaction by using symmetry in the fluid-solid interaction.
A single @threaded loop over all particles, which then includes all fluid-* interactions could potentially improve performance. Edit: Benchmarked in Combine interact! kernels to reduce GPU latency #1082. Didn't make a difference for large enough problems.
Improve neighborhood search update. The NHS update is a bottleneck on multiple threads because the implementation does not use multithreading (How to improve neighborhood search #65).
Rework the neighborhood search. We might be able to get a significant speedup for large simulations by using a contiguous memory layout. Edit: Benchmarked in Compact Vector of Vectors PointNeighbors.jl#120
This issue is to discuss options to improve single-processor performance (multithreaded, but no MPI yet).
The plan so far:
wrap_arrayallocates #29 and resolve all type instabilities (solved in Remove type instabilities and allocations #36).thread=OrdinaryDiffEq.True()can improve performance of the time integration method once StackOverflowError in broadcasting JuliaSIMD/StrideArrays.jl#62 is resolved. Edit: We are now usingThreadedBroadcastArrays for this.@threadedloop over all particles, which then includes all fluid-* interactions could potentially improve performance. Edit: Benchmarked in Combineinteract!kernels to reduce GPU latency #1082. Didn't make a difference for large enough problems.