|
2 | 2 | |-------------|--------| |
3 | 3 | | Name | | |
4 | 4 | | Date of Creation | 16 January 2019 | |
5 | | -| Target | SYCL 1.2.1 extension | |
| 5 | +| Target | Vendor extension | |
6 | 6 | | Current Status | _Work in progress_ | |
7 | 7 | | Reply-to | Victor Lomüller <victor@codeplay.com> | |
8 | 8 | | Original author | Victor Lomüller <victor@codeplay.com>, Gordon Brown <gordon@codeplay.com>, Peter Zuzek <peter@codeplay.com> | |
|
12 | 12 |
|
13 | 13 | ## Motivation |
14 | 14 |
|
15 | | -SYCL does not allow a user to access cl_mem object out of an cl::sycl::accessor, it difficult/impossible to integrate OpenCL library to use them as is inside the data-flow execution model of SYCL, as the only current way to do this is to create all OpenCL buffers up-front, which is not always possible. |
| 15 | +SYCL does not allow a user to access cl_mem object out of an cl::sycl::accessor, it is difficult to integrate low-level API functionality inside the data-flow execution model of SYCL, as the only current way to do this is to create all OpenCL buffers up-front, which is not always possible. |
16 | 16 |
|
17 | | -This proposal introduces a way for a user to retrieve the OpenCL buffer associate with a SYCL buffer 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. |
| 17 | +This proposal introduces a way for a user to retrieve the low-level objects 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. |
18 | 18 |
|
19 | 19 | ## Accessing low-level API functionality on SYCL queues |
20 | 20 |
|
@@ -66,6 +66,10 @@ The functor passed to the `interop_task` takes as input a const reference to a ` |
66 | 66 | It is not allowed to allocate new SYCL object inside an `interop_task`. |
67 | 67 | It is the user responsibilities to ensure all operations peroformed inside the `interop_task` finished before returning from it. |
68 | 68 |
|
| 69 | +Although the statements inside the lambda submitted to the `interop_task` are executed on the host, the requirements and actions for the command group are satisied for the device. |
| 70 | +This is the opposite of the `host_handler` vendor extension, where requisites are satisfied for the host since the statements on the lambda submited to the single task are meant to have side effects on the host only. |
| 71 | +The interop task lambda can have side effects on the host, but it is the programmer responsability to ensure requirements dont need to be satisfied for the host. |
| 72 | +
|
69 | 73 | ## Accessing low-level API objects |
70 | 74 |
|
71 | 75 | We introduce the `interop_handle` class which provide access to underlying OpenCL objects during the execution of the `interop_task`. |
|
0 commit comments