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

Add clarification to the host task proposal #127

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 20 additions & 4 deletions host_task/host_task.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Name | Host task with interop capabilities |
| Date of Creation | 16 January 2019 |
| Revision | 0.6 |
| Revision | 0.7 |
| Target | Vendor extension |
| Current Status | 0.1 _Available since CE 1.0.5_, 0.6 TBD |
| Reply-to | Ruyman Reyes <ruyman@codeplay.com> |
Expand Down Expand Up @@ -33,12 +33,16 @@ associated with SYCL buffers and enqueue a host task that can execute an
arbitrary portion of host code within the SYCL runtime, therefore taking
advantage of SYCL dependency analysis and scheduling.

As in all other commands in command group scope, the interoperability task
executes asynchronously w.r.t to the submission point - as part of the SYCL DAG -
once all requirements are satisfied.
As in all other commands in command group scope, the a host task, used either
for executing arbitrary C++ code or interoperability code, executes
asynchronously w.r.t to the submission point - as part of the SYCL DAG
- once all requirements are satisfied, just as with kernel functions.

## Revisions

### 0.7
* Add clarification to the scheduling of host tasks.

### 0.6
* Internal feedback, editorial and minor fixes
* Renamed methods to match better SYCL Generalization proposal
Expand Down Expand Up @@ -205,6 +209,18 @@ requirement per target. Then, *target destination resolution* checks that
only one of the memory accesses requires writing to memory.
If more than one target requires writing, the *command group* is invalid and an error **sycl::invalid_object** is thrown.

## Scheduling

A host task is scheduled with the SYCL DAG according to the SYCL memory model.
THis means that a host task will only be scheduled one any requisites created
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
THis means that a host task will only be scheduled one any requisites created
This means that a host task will only be scheduled once any requisites created

by accessors in the same command group are first resolved. A host task will also
create it's own dependencies on other command groups, including kernel functions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
create it's own dependencies on other command groups, including kernel functions
create its own dependencies on other command groups, including kernel functions

and asynchronous copies.

This means that just as with kernel functions a host task may run concurrently
with other kernel functions or host tasks if there are no data dependencies
restricting this and the implementation is able to.

## Interface changes

### Handler API
Expand Down