-
Notifications
You must be signed in to change notification settings - Fork 34
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
Adapting to HPX V1.5 #643
base: 1
Are you sure you want to change the base?
Adapting to HPX V1.5 #643
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I haven't gone through all(!) the changes yet, but here are some initial/procedural points.
This has been completely redone (please note I force-pushed to the underlying branch). The changes unrelated to HPX have now been separated and are available as #645. This PR has now only changes that are required to have HPX V1.5 as a backend. |
Please also note that this PR depends on laristra/cinch#187 |
- enable all tests for HPX
@opensdh, @ipdemes: I have addressed all review comments as discussed. Please note that I have pushed additional changes to laristra/cinch#187. |
# Conflicts: # cinch
- flyby: make FLECSI_USE_AGGCOMM=On default for HPX backend
- adding future to data_client_handle, integrate with task dependency logic - flyby: optimize execution_policy::execute_task
|
||
auto & h = a.handle; | ||
// Skip Read Only handles | ||
if constexpr((SHARED_PERMISSIONS == ro) || (GHOST_PERMISSIONS == rw) || |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do the EXCLUSIVE_PERMISSIONS
not need to be used to setup task dependencies?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Excellent question. I essentially copied the conditions from the MPI backend, so I might have missed things. Is there an explanation of how (and which) permissions are to be interpreted to deduce dependencies? Or in general, what is encoded by the different types of permissions?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The MPI backend does not do dependency analysis. The check on permission is only for ghost copy purpose. Thus the task_[epi|pro]logue would skip handles that does not write to ghost or shared region.
For a more completed dependency analysis, the permission on Exclusive should be taken into account.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this explanation. I'm still unsure about the role of the various permissions, though. Would you be able to recommend some documentation or similar to read up about this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor correction. GHOST_PERMISSION == rw
is used to signify the values of ghost cells are computed locally (flecsale does that) and thus ghost exchange is not necessary. Again, I don't know what the implication to dependency analysis is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The probably will be better answered by Irina.
…On Mon, Nov 30, 2020 at 4:24 PM Hartmut Kaiser ***@***.***> wrote:
***@***.**** commented on this pull request.
------------------------------
In flecsi/execution/hpx/task_add_dependencies.h
<#643 (comment)>:
> + indices of the index partition.
+
+ */
+
+ template<typename T,
+ size_t EXCLUSIVE_PERMISSIONS,
+ size_t SHARED_PERMISSIONS,
+ size_t GHOST_PERMISSIONS>
+ void handle(dense_accessor<T,
+ EXCLUSIVE_PERMISSIONS,
+ SHARED_PERMISSIONS,
+ GHOST_PERMISSIONS> & a) {
+
+ auto & h = a.handle;
+ // Skip Read Only handles
+ if constexpr((SHARED_PERMISSIONS == ro) || (GHOST_PERMISSIONS == rw) ||
Thanks for this explanation. I'm still unsure about the role of the
various permissions, though. Would you be able to recommend some
documentation or similar to read up about this?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#643 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAFRR5JXEZI5DLICUHNNNZLSSQSTHANCNFSM4PSV3XJQ>
.
|
This patch adds some conditional changes that a required to make flecsi/1 compile with HPX V1.5