Skip to content

Implementation status

ProGTX edited this page May 8, 2015 · 5 revisions

Target: Version 1.2, 2014-09-16

1. Introduction

The chapters follow the specification for easy look-up.

Probably the most important thing to note is that sycl-gtx tries to implement the SYCL specification using only the C++11 standard library and OpenCL 1.2, without a special compiler. This exposes some inherent limitations, described here [TODO: provide link].

But the most important goal remains: SYCL enables OpenCL kernels to be written inside C++ source files.

The following chapters will use the tags !TODO, DONE and DIFF to illustrate those features that are not or only partially implemented, those that are fully implemented, and those that consciously differ from the specification, respectively. The !TODO tag uses an exclamation mark for better visibility.

2. SYCL Architecture

2.1 Overview

!TODO: "a software developer can produce a program that mixes standard OpenCL C kernels and OpenCL API code with SYCL code and expect fully compatible interoperation"

  • Some of it probably works, not really tested.

DIFF: "some C++ language features are not permitted inside kernels, due to the limitations imposed by the capabilities of the underlying OpenCL standard"

  • Since it's using a standard compiler, anything that compiles is allowed. However, not all code will actually be included in the kernel [TODO: Additional explanation].

2.2.1 Platform Mixed Version Support

DONE: cl::sycl::device::get_info()

DONE: CL_SYCL_LANGUAGE_VERSION

2.3 SYCL Execution Model

DONE: Executing kernels on OpenCL device.

!TODO: Executing kernels on host CPU - not via CPU OpenCL device (host fall-back).

  • May be difficult to implement.

!TODO: Command groups

  • DONE: Data transfer
  • !TODO: Synchronization
  • DONE: Submitted kernels

!TODO: Index space

  • DONE: Work-items

  • Global ID

  • !TODO: Work-groups

  • !TODO: Work-group ID

  • !TODO: Local ID