Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to improve performance #37

Open
3 of 7 tasks
efaulhaber opened this issue Dec 28, 2022 · 0 comments
Open
3 of 7 tasks

How to improve performance #37

efaulhaber opened this issue Dec 28, 2022 · 0 comments

Comments

@efaulhaber
Copy link
Member

efaulhaber commented Dec 28, 2022

This issue is to discuss options to improve single-processor performance (multithreaded, but no MPI yet).

The plan so far:

  • Solve wrap_array allocates #29 and resolve all type instabilities (solved in Remove type instabilities and allocations #36).
  • Investigate if thread=OrdinaryDiffEq.True() can improve performance of the time integration method once StackOverflowError in broadcasting JuliaSIMD/StrideArrays.jl#62 is resolved.
  • Further optimize PK1 computation for structure dynamics (solved in Compute deformation gradient in matrix form #38).
  • 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.
  • 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant