Skip to content

Align __get_sycl_range with SYCL runtime in it's treatment of write access mode and no_init{} #1272

Open
@danhoeflinger

Description

@danhoeflinger

Currently __get_sycl_range with a write access mode and a host_iterator input does not include a "copy-in" for data. The copy-in is skipped, as the sycl::buffer is not initialized with the host_iterator's data, only its number of elements.

This currently is not aligned with the SYCL runtime, where write implies a "copy-in" unless a no_init{} property is added to the accessor creation. We should add a no_init{} property or parameter to __get_sycl_range so that we can be in line with the SYCL runtime.
We should examine all current write and read_write access mode calls to __get_sycl_range, and determine where a copy in is required and where it is not, and use the new feature accordingly.

From #276:

// TODO: add optional template parameter: no_init to match sycl property::no_init.  This can be used to allow accessors
// in `write` or `read_write` mode to not copy in data prior to a kernel where it is not required.  This will also allow
// us to align with the SYCL spec on how we treat host_iterators.  We currently only copy in when `read` or `read_write`
// access mode is specified, not for `write`.  If we add a `no_init` property, we can explicitly use it where
// it applies, and operate under the same rules as SYCL with copying host_iterators.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions