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

Use a parallel taskloop for the CountPredicates operation #342

Merged
merged 5 commits into from Jul 24, 2021

Conversation

joka921
Copy link
Member

@joka921 joka921 commented Jul 30, 2020

The CountPredicates operation ("Pattern Trick") can be easily parallelized by
counting the predicates for subsets of the input and later adding/merging them.
This PR delivers a first implementation of this parallelization using OpenMP

TODO:

  • make the degree of parallelism configurable (we currently use taskloops, so the behavior under load should still be fine)
  • the merging in the end is currently done linearly instead of a binary tree. This is due to the behavior of OpenMP
    which does the final step in the reduction linearly (at least in the current GCC implementation), because this is
    typically a simple operation (addition) but in our case it is a merging of hash maps which can take some time.

-The degree of parallelism is configurable at compiletime
Since it is task-based it also performs well under heavy load.

-Updated Dockerfile to use Ubuntu 20.04. This is required for sufficient OpenMP support.
@joka921 joka921 merged commit c67995a into ad-freiburg:master Jul 24, 2021
@joka921 joka921 deleted the f.parallelPatternTrick branch July 24, 2021 09:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants