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

Begin integration of EXT extensions into the unified specification #1213

Merged
merged 4 commits into from
Aug 13, 2024
Merged
Show file tree
Hide file tree
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
6 changes: 5 additions & 1 deletion .github/workflows/presubmit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,14 @@ jobs:
run: |
python3 makeSpec -clean -spec core OUTDIR=out.core -j 5 -O api c env ext cxx4opencl

- name: Generate core + extension specs (HTML)
- name: Generate core + KHR extension specs (HTML)
run: |
python3 makeSpec -clean -spec khr OUTDIR=out.khr -j -O html

- name: Generate core + KHR + EXT extension specs (HTML)
run: |
python3 makeSpec -clean -spec khr+ext OUTDIR=out.khr+ext -j -O html

- name: Generate reference pages
run: |
python3 makeSpec -spec khr OUTDIR=out.refpages -j -O manhtmlpages
59 changes: 59 additions & 0 deletions api/cl_ext_cxx_for_opencl.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// Copyright 2018-2024 The Khronos Group Inc.
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}cl_ext_cxx_for_opencl.txt[]

=== Other Extension Metadata

*Last Modified Date*::
2020-08-25
*IP Status*::
No known IP claims.
*Contributors*::
- Kevin Petit, Arm Ltd. +
- Sven Van Haastregt, Arm Ltd. +
- Anastasia Stulova, Arm Ltd. +
- Marco Antognini, Arm Ltd. +
- Neil Hickey, Arm Ltd. +
- Alastair Murray, Codeplay +

=== Description

This extension adds support for building programs written using the C++ for
OpenCL kernel language documented in the *OpenCL-Docs* repository
(https://github.com/KhronosGroup/OpenCL-Docs)
with stable versions published in releases of the repository.

This extension also enables applications to query the version of the language
supported by the device compiler.

=== New Enums

* {cl_device_info_TYPE}
** {CL_DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT}

=== New build option

This extension adds support for a new `CLC++` value to be passed to the
`-cl-std` build option accepted by {clBuildProgram} and {clCompileProgram}.

=== Preprocessor Macros

This extension defines a new language, instead of extending an existing
language. As such, there will be no preprocessor `#define` matching the
extension name string. Instead, dedicated preprocessor macros conveying
language version information are available as described in the C++ for
OpenCL Programming Language Documentation, section 2.2.2.2 "Predefined
macros".

=== Conformance tests

. Test that a program can successfully be compiled with `-cl-std=CLC++`.
. Test with a program compiled with `-cl-std=CLC++` that the value of the
+__OPENCL_CPP_VERSION__+ macro agrees with the version returned by
`CL_DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT`.

=== Version History

* Revision 1.0.0, 2020-08-24
** Initial version.
20 changes: 20 additions & 0 deletions api/cl_ext_device_fission.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright 2018-2024 The Khronos Group Inc.
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}cl_ext_device_fission.txt[]

=== Other Extension Metadata

*Last Modified Date*::
2024-07-17
*IP Status*::
No known IP claims.

=== Description

Precursor to the functionality described in <<platform-device-partitioning>>.

=== Version History

* Revision 1.0.0, 2024-07-17
** First version.
21 changes: 21 additions & 0 deletions api/cl_ext_float_atomics.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Copyright 2018-2024 The Khronos Group Inc.
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}cl_ext_float_atomics.txt[]

=== Other Extension Metadata

*Last Modified Date*::
2020-08-12
*IP Status*::
No known IP claims.

=== Description

The latest published specification for this extension is available on
the https://registry.khronos.org/OpenCL/extensions/ext/cl_ext_float_atomics.html[OpenCL registry].

=== Version History

* Revision 1.0.0, 2020-08-12
** First version.
21 changes: 21 additions & 0 deletions api/cl_ext_image_from_buffer.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Copyright 2018-2024 The Khronos Group Inc.
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}cl_ext_image_from_buffer.txt[]

=== Other Extension Metadata

*Last Modified Date*::
2022-01-25
*IP Status*::
No known IP claims.

=== Description

The latest published specification for this extension is available on
the https://registry.khronos.org/OpenCL/extensions/ext/cl_ext_image_from_buffer.html[OpenCL registry].

=== Version History

* Revision 1.0.0, 2022-01-25
** First version.
21 changes: 21 additions & 0 deletions api/cl_ext_image_raw10_raw12.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Copyright 2018-2024 The Khronos Group Inc.
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}cl_ext_image_raw10_raw12.txt[]

=== Other Extension Metadata

*Last Modified Date*::
2023-05-03
*IP Status*::
No known IP claims.

=== Description

The latest published specification for this extension is available on
the https://registry.khronos.org/OpenCL/extensions/ext/cl_ext_image_raw10_raw12.html[OpenCL registry].

=== Version History

* Revision 1.0.0, 2023-05-03
** First version.
21 changes: 21 additions & 0 deletions api/cl_ext_image_requirements_info.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Copyright 2018-2024 The Khronos Group Inc.
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}cl_ext_image_requirements_info.txt[]

=== Other Extension Metadata

*Last Modified Date*::
2022-01-18
*IP Status*::
No known IP claims.

=== Description

The latest published specification for this extension is available on
the https://registry.khronos.org/OpenCL/extensions/ext/cl_ext_image_requirements_info.html[OpenCL registry].

=== Version History

* Revision 0.5.0, 2022-01-18
** First version.
20 changes: 20 additions & 0 deletions api/cl_ext_migrate_memobject.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright 2024 The Khronos Group Inc.
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}cl_ext_migrate_memobject.txt[]

=== Other Extension Metadata

*Last Modified Date*::
2024-07-17
*IP Status*::
No known IP claims.

=== Description

Precursor to {clEnqueueMigrateMemObjects}.

=== Version History

* Revision 1.0.0, 2024-07-17
** Initial version.
10 changes: 10 additions & 0 deletions api/opencl_platform_layer.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -2083,6 +2083,15 @@ include::{generated}/api/version-notes/CL_DEVICE_TERMINATE_CAPABILITY_KHR.asciid
{CL_DEVICE_TERMINATE_CAPABILITY_CONTEXT_KHR_anchor} - Indicates that
context termination is supported.
endif::cl_khr_terminate_context[]

ifdef::cl_ext_cxx_for_opencl[]
| {CL_DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT_anchor}

include::{generated}/api/version-notes/CL_DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT.asciidoc[]
| {cl_version_TYPE}
| Returns the version of the C++ for OpenCL language supported by the
device compiler.
endif::cl_ext_cxx_for_opencl[]
|====

ifdef::cl_khr_integer_dot_product[]
Expand Down Expand Up @@ -2630,6 +2639,7 @@ Otherwise it may return
endif::cl_khr_d3d11_sharing[]


[[platform-device-partitioning]]
== Partitioning a Device

NOTE: Partitioning devices is <<unified-spec, missing before>> version 1.2.
Expand Down
11 changes: 11 additions & 0 deletions api/opencl_runtime_layer.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -8426,6 +8426,10 @@ header or implementation-defined source for custom devices that support an
online compiler.
OpenCL {cpp} is not supported as an online-compiled kernel language through
this interface.
ifdef::cl_ext_cxx_for_opencl[]
If the {cl_ext_cxx_for_opencl_EXT} extension is supported, the source code
specified by _strings_ may also be a C++ for OpenCL program source or header.
endif::cl_ext_cxx_for_opencl[]

// refError

Expand Down Expand Up @@ -9518,6 +9522,13 @@ IMPORTANT: Debugging options are <<unified-spec, missing before>> version 2.0.
built-in functions that allow you to enqueue commands on a device (refer
to OpenCL kernel languages specifications).

ifdef::cl_ext_cxx_for_opencl[]
==== C++ for OpenCL

Applications may pass `-cl-std=CLC\++` to {clCompileProgram} or {clBuildProgram}
for programs created using {clCreateProgramFromSource} to request the program
be built as C++ for OpenCL.
endif::cl_ext_cxx_for_opencl[]

[[linker-options]]
=== Linker Options
Expand Down
Loading