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

Impoving OpenMP acceleration #6

Open
johnaparker opened this issue May 14, 2020 · 0 comments
Open

Impoving OpenMP acceleration #6

johnaparker opened this issue May 14, 2020 · 0 comments
Labels
performance Issues related to code performance

Comments

@johnaparker
Copy link
Owner

The current OpenMP implementation is not optimal (2x performance for 8 threads). There are two parts to OpenMP acceleration: building the interaction matrix (A), and solving the linear system Ax = b.

The issue for building A is probably load-balancing: the A/B vsh translation coefficients involve recursion relations that depend on inter-particle separation. Some threads will finish before others.

The issue for solving Ax = b is less obvious. Since this is a widely famous problem, it's worth looking into existing software solutions.

There are a few things that can easily be parallelized: source decomposition, cross-section evaluation, force/torque evaluation, E/H field evaluation

Lastly, there are two algorithm optimizations not being used:

  1. Using rotation-translation-rotation algorithm to construct A matrix
  2. There might exist an optimal solver for the linear system based on the physical problem, see Xu papers.
@johnaparker johnaparker added the performance Issues related to code performance label May 14, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
performance Issues related to code performance
Projects
None yet
Development

No branches or pull requests

1 participant