Skip to content

Commit 7a2e75e

Browse files
authored
[SYCL] Rename project to oneAPI DPC++ Compiler (#1249)
Rename project and fixing docs accordingly to new project name. Signed-off-by: Pavel V Chupin <[email protected]>
1 parent 9bf81eb commit 7a2e75e

11 files changed

+217
-201
lines changed

CONTRIBUTING.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Contributing
22

33
## License
4-
Intel Project for LLVM* technology is licensed under the terms of the
4+
Intel Project for LLVM\* technology is licensed under the terms of the
55
Apache-2.0 with LLVM-exception license ([LICENSE.txt](llvm/LICENSE.TXT))
66
to ensure our ability to contribute this project to the LLVM project
77
under the same license.
@@ -70,11 +70,11 @@ commit automatically with `git commit -s`.
7070
### Development
7171

7272
- Create a personal fork of the project on GitHub
73-
- Use **sycl** branch as baseline for your changes
73+
- For the DPC++ Compiler project, use **sycl** branch as baseline for your
74+
changes. See [Get Started Guide](sycl/doc/GetStartedGuide.md).
7475
- Prepare your patch (follow
7576
[LLVM coding standards](https://llvm.org/docs/CodingStandards.html))
76-
- Build the project and run all tests (see
77-
[GetStartedWithSYCLCompiler.md](sycl/doc/GetStartedWithSYCLCompiler.md))
77+
- Build the project and run all tests
7878

7979
### Review and acceptance testing
8080

@@ -94,4 +94,8 @@ Project maintainers merge pull requests using one of the following options:
9494
- [Squash and merge] Used when there are multiple commits in the PR
9595
- Squashing is done to make sure that the project is buildable on any commit
9696
- [Create a merge commit] Used for LLVM pull-down PRs to preserve hashes of the
97-
commits pulled from the LLVM community repository
97+
commits pulled from the LLVM community repository
98+
99+
100+
*Other names and brands may be claimed as the property of others.
101+

README.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
1-
# Intel Project for LLVM* technology
1+
# Intel Project for LLVM\* technology
22

33
## Introduction
44

55
Intel staging area for llvm.org contribution.
66
Home for Intel LLVM-based projects:
7-
- SYCL* Compiler and Runtimes - compiler and runtime libraries for SYCL ([https://www.khronos.org/sycl/](https://www.khronos.org/sycl/)). See **sycl** branch.
7+
- oneAPI Data Parallel C++ compiler - see **sycl** branch. More information on
8+
oneAPI and DPC++ is available at
9+
([https://www.oneapi.com/](https://www.oneapi.com/))
810

911
## License
1012
See [LICENSE.txt](sycl/LICENSE.TXT) for details.
1113

12-
1314
## Contributing
1415
See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
1516

1617
## Sub-projects Documentation
17-
- SYCL Compiler and Runtimes - See [GetStartedWithSYCLCompiler.md](sycl/doc/GetStartedWithSYCLCompiler.md)
18+
- oneAPI Data Parallel C++ compiler - See
19+
[GetStartedGuide.md](sycl/doc/GetStartedGuide.md)
1820

19-
*Other names and brands may be claimed as the property of others.
21+
## DPC++ extensions
2022

21-
## SYCL Extension Proposal Documents
23+
DPC++ is an open, cross-architecture language built upon the ISO C++ and Khronos
24+
SYCL\* standards. DPC++ extends these standards with a number of extensions,
25+
which can be found in [sycl/doc/extensions](sycl/doc/extensions) directory.
2226

23-
See [sycl/doc/extensions](sycl/doc/extensions)
27+
\*Other names and brands may be claimed as the property of others.
2428

sycl/doc/SYCLCompilerAndRuntimeDesign.md renamed to sycl/doc/CompilerAndRuntimeDesign.md

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
# SYCL\* Compiler and Runtime architecture design
1+
# oneAPI DPC++ Compiler and Runtime architecture design
22

33
## Introduction
44

5-
This document describes the architecture of the SYCL compiler and runtime
6-
library. Base SYCL specification version is
7-
[1.2.1](https://www.khronos.org/registry/SYCL/specs/sycl-1.2.1.pdf).
5+
This document describes the architecture of the DPC++ compiler and runtime
6+
library. For DPC++ specification see
7+
[spec](https://spec.oneapi.com/versions/latest/elements/dpcpp/source/index.html).
88

9-
## SYCL Compiler architecture
9+
## DPC++ Compiler architecture
1010

11-
SYCL application compilation flow:
11+
DPC++ application compilation flow:
1212

13-
![High level component diagram for SYCL Compiler](Compiler-HLD.svg)
13+
![High level component diagram for DPC++ Compiler](images/Compiler-HLD.svg)
1414

15-
SYCL compiler logically can be split into the host compiler and a number of
15+
DPC++ compiler logically can be split into the host compiler and a number of
1616
device compilers—one per each supported target. Clang driver orchestrates the
1717
compilation process, it will invoke the device compiler once per each requested
1818
target, then it will invoke the host compiler to compile the host part of a
@@ -31,7 +31,7 @@ applies additional restrictions on the device code (e.g. no exceptions or
3131
virtual calls), generates LLVM IR for the device code only and "integration
3232
header" which provides information like kernel name, parameters order and data
3333
type for the runtime library.
34-
- **Middle-end** - transforms the initial LLVM IR* to get consumed by the
34+
- **Middle-end** - transforms the initial LLVM IR to get consumed by the
3535
back-end. Today middle-end transformations include just a couple of passes:
3636
- Optionally: Address space inference pass
3737
- TBD: potentially the middle-end optimizer can run any LLVM IR
@@ -78,7 +78,7 @@ Q.submit([&](handler& cgh) {
7878
...
7979
```
8080
81-
In this example, the SYCL compiler needs to compile the lambda expression passed
81+
In this example, the compiler needs to compile the lambda expression passed
8282
to the `cl::sycl::handler::parallel_for` method, as well as the function `foo`
8383
called from the lambda expression for the device.
8484
The compiler must also ignore the `bar` function when we compile the
@@ -87,9 +87,9 @@ portion of the source code (the contents of the lambda expression passed to the
8787
`cl::sycl::handler::parallel_for` and any function called from this lambda
8888
expression).
8989
90-
The current approach is to use the SYCL kernel attribute in the SYCL runtime to
90+
The current approach is to use the SYCL kernel attribute in the runtime to
9191
mark code passed to `cl::sycl::handler::parallel_for` as "kernel functions".
92-
The SYCL runtime library can't mark foo as "device" code - this is a compiler
92+
The runtime library can't mark foo as "device" code - this is a compiler
9393
job: to traverse all symbols accessible from kernel functions and add them to
9494
the "device part" of the code marking them with the new SYCL device attribute.
9595
@@ -160,8 +160,8 @@ must be passed to the clang driver:
160160

161161
`-fsycl`
162162

163-
With this option specified, the driver will invoke the host SYCL compiler and a
164-
number of device compilers for targets specified in the `-fsycl-targets`
163+
With this option specified, the driver will invoke the host compiler and a
164+
number of SYCL device compilers for targets specified in the `-fsycl-targets`
165165
option. If `-fsycl-targets` is not specified, then single SPIR-V target is
166166
assumed, and single device compiler for this target is invoked.
167167

@@ -188,7 +188,7 @@ a set of target architectures for which to compile device code. By default the
188188
compiler generates SPIR-V and OpenCL device JIT compiler produces native target
189189
binary.
190190

191-
There are existing options for OpenMP* offload:
191+
There are existing options for OpenMP\* offload:
192192

193193
`-fopenmp-targets=triple1,triple2`
194194

@@ -477,7 +477,7 @@ produced by OpenCL C front-end compiler.
477477
It's a regular function, which can conflict with user code produced from C++
478478
source.
479479

480-
SYCL compiler uses modified solution developed for OpenCL C++ compiler
480+
DPC++ compiler uses modified solution developed for OpenCL C++ compiler
481481
prototype:
482482

483483
- Compiler: https://github.com/KhronosGroup/SPIR/tree/spirv-1.1
@@ -546,17 +546,11 @@ compiler:
546546
547547
### Compiler/Runtime interface
548548
549-
## SYCL Runtime architecture
549+
## DPC++ Runtime architecture
550550
551551
*TBD*
552552
553-
## Supported extensions
553+
## DPC++ Language extensions to SYCL
554554
555-
- [Intel subgroups](extensions/SubGroupNDRange/SubGroupNDRange.md)
555+
List of language extensions can be found at [extensions](extensions)
556556
557-
## Unsupported extensions/proposals
558-
559-
- [Ordered queue](extensions/OrderedQueue/OrderedQueue.adoc)
560-
- [Unified shared memory](extensions/USM/USM.adoc)
561-
562-
\*Other names and brands may be claimed as the property of others.

sycl/doc/SYCLEnvironmentVariables.md renamed to sycl/doc/EnvironmentVariables.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
11
# Overview
22

3-
This file describes environment variables that are having effect on SYCL compiler and run-time.
3+
This file describes environment variables that are having effect on DPC++ compiler and runtime.
44

5-
# Controlling SYCL RT
5+
# Controlling DPC++ RT
66

77
**Warning:** the environment variables described in this document are used for
8-
development and debugging of SYCL runtime and compiler. Their semantics are
8+
development and debugging of DPC++ compiler and runtime. Their semantics are
99
subject to change. Do not rely on these variables in production code.
1010

1111
| Environment variable | Values | Description |
1212
| -------------------- | ------ | ----------- |
13-
| SYCL_PI_TRACE | Any(*) | Force tracing of PI calls to stderr. |
13+
| SYCL_PI_TRACE | Any(\*) | Force tracing of PI calls to stderr. |
1414
| SYCL_BE | PI_OPENCL, PI_OTHER | When SYCL RT is built with PI this controls which plugin to use. Default value is PI_OPENCL. |
1515
| SYCL_DEVICE_TYPE | One of: CPU, GPU, ACC, HOST | Force SYCL to use the specified device type. If unset, default selection rules are applied. If set to any unlisted value, this control has no effect. If the requested device type is not found, a `cl::sycl::runtime_error` exception is thrown. If a non-default device selector is used, a device must satisfy both the selector and this control to be chosen. This control only has effect on devices created with a selector. |
1616
| SYCL_PROGRAM_COMPILE_OPTIONS | String of valid OpenCL compile options | Override compile options for all programs. |
1717
| SYCL_PROGRAM_LINK_OPTIONS | String of valid OpenCL link options | Override link options for all programs. |
1818
| SYCL_USE_KERNEL_SPV | Path to the SPIR-V binary | Load device image from the specified file. If runtime is unable to read the file, `cl::sycl::runtime_error` exception is thrown.|
19-
| SYCL_DUMP_IMAGES | Any(*) | Dump device image binaries to file. Control has no effect if SYCL_USE_KERNEL_SPV is set. |
19+
| SYCL_DUMP_IMAGES | Any(\*) | Dump device image binaries to file. Control has no effect if SYCL_USE_KERNEL_SPV is set. |
2020
| SYCL_PRINT_EXECUTION_GRAPH | Described [below](#sycl_print_execution_graph-options) | Print execution graph to DOT text file. |
21-
| SYCL_DISABLE_EXECUTION_GRAPH_CLEANUP | Any(*) | Disable cleanup of finished command nodes at host-device synchronization points. |
22-
| SYCL_THROW_ON_BLOCK | Any(*) | Throw an exception on attempt to wait for a blocked command. |
21+
| SYCL_DISABLE_EXECUTION_GRAPH_CLEANUP | Any(\*) | Disable cleanup of finished command nodes at host-device synchronization points. |
22+
| SYCL_THROW_ON_BLOCK | Any(\*) | Throw an exception on attempt to wait for a blocked command. |
2323
| SYCL_DEVICELIB_INHIBIT_NATIVE | String of device library extensions (separated by a whitespace) | Do not rely on device native support for devicelib extensions listed in this option. |
24-
| SYCL_DEVICE_ALLOWLIST | A list of devices and their minimum driver version following the pattern: DeviceName:{{XXX}},DriverVersion:{{X.Y.Z.W}}. Also may contain PlatformName and PlatformVersion | Filter out devices that do not match the pattern specified. Regular expression can be passed and the SYCL RT will select only those devices which satisfy the regex. |
24+
| SYCL_DEVICE_ALLOWLIST | A list of devices and their minimum driver version following the pattern: DeviceName:{{XXX}},DriverVersion:{{X.Y.Z.W}}. Also may contain PlatformName and PlatformVersion | Filter out devices that do not match the pattern specified. Regular expression can be passed and the DPC++ runtime will select only those devices which satisfy the regex. |
2525
`(*) Note: Any means this environment variable is effective when set to any non-null value.`
2626

2727
## SYCL_PRINT_EXECUTION_GRAPH Options
2828

29-
SYCL_PRINT_EXECUTION_GRAPH can accept one or more comma separated values from table below
29+
SYCL_PRINT_EXECUTION_GRAPH can accept one or more comma separated values from the table below
3030

3131
| Option | Description |
3232
| ------ | ----------- |

sycl/doc/FAQ.md

Lines changed: 44 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,51 +2,51 @@
22

33
**Table of contents**
44

5-
1. [Developing with SYCL](#developing-with-sycl)
6-
1. [Using applications built with SYCL](#using-applications-built-with-sycl)
5+
1. [Developing with DPC++](#developing-with-dpc)
6+
1. [Using applications built with DPC++](#using-applications-built-with-dpc)
77
1. [Common issues](#common-issues)
88
1. [Device specific questions and issues](#device-specific-questions-and-issues)
99

1010

11-
## Developing with SYCL
11+
## Developing with DPC++
1212

13-
### Q: What do I need to start developing with SYCL?
14-
**A:** To get the full SYCL experience you need a SYCL-capable compiler. Intel
15-
SYCL compiler provides you with both host and device side compilation. Another
13+
### Q: What do I need to start developing with DPC++?
14+
**A:** To get the full DPC++ experience you need oneAPI DPC++ compiler. DPC++
15+
compiler provides you with both host and device side compilation. Another
1616
requirement for code offloading to specialized devices is a compatible OpenCL
17-
runtime. Our [Get Started Guide](GetStartedWithSYCLCompiler.md) will help you
18-
set up a proper environment. To learn more about using the SYCL compiler, please
19-
refer to [User Manual](SYCLCompilerUserManual.md). If using a special compiler
17+
runtime. Our [Get Started Guide](GetStartedGuide.md) will help you
18+
set up a proper environment. To learn more about using the DPC++ compiler,
19+
please refer to [Users Manual](UsersManual.md). If using a special compiler
2020
is not an option for you and/or you would like to experiment without offloading
21-
code to non-host devices, you can exploit SYCL's host device feature. This gives
22-
you the ability to use any C++11 compiler. You will need to link your
23-
application with the SYCL Runtime library and provide a path to the SYCL headers
24-
directory. Please, refer to your compiler manual to learn about specific build
25-
options.
21+
code to non-host devices, you can exploit SYCL's host device feature. This
22+
gives you the ability to use any C++11 compiler. You will need to link your
23+
application with the DPC++ Runtime library and provide a path to the SYCL
24+
headers directory. Please, refer to your compiler manual to learn about
25+
specific build options.
2626

27-
### Q: How are SYCL compilation phases different from those of a usual C++ compiler? Can I customize this flow for my applications?
27+
### Q: How are DPC++ compilation phases different from those of a usual C++ compiler? Can I customize this flow for my applications?
2828
**A:** Due to the fact that both host and device code need to be compiled and
29-
linked into the final binary, the compilation steps sequence is more complicated
30-
compared to the usual C++ flow.
29+
linked into the final binary, the compilation steps sequence is more
30+
complicated compared to the usual C++ flow.
3131

32-
In general, we encourage our users to rely on the SYCL Compiler for handling all
33-
of the compilation phases "under the hood". However, thorough understanding of
34-
the above-described steps may allow you to customize your compilation by invoking
35-
different phases manually. As an example, you could:
32+
In general, we encourage our users to rely on the DPC++ Compiler for handling
33+
all of the compilation phases "under the hood". However, thorough understanding
34+
of the above-described steps may allow you to customize your compilation by
35+
invoking different phases manually. As an example, you could:
3636
1. preprocess your host code with another C++-capable compiler;
37-
2. turn to the SYCL compiler for generating the integration header and compiling
38-
the device code for the needed target(s);
37+
2. turn to the DPC++ compiler for generating the integration header and
38+
compiling the device code for the needed target(s);
3939
3. use your preferred host compiler from 1) to compile your preprocessed host
4040
code and the integration header into a host object file;
4141
4. link the host object file and the device image(s) into the final executable.
4242

43-
To learn more about the concepts behind this flow, and the SYCL Compiler
43+
To learn more about the concepts behind this flow, and the DPC++ Compiler
4444
internals as such, we welcome you to study our
45-
[SYCL Compiler and Runtime architecture design](SYCLCompilerAndRuntimeDesign.md)
45+
[DPC++ Compiler and Runtime architecture design](CompilerAndRuntimeDesign.md)
4646
document.
4747

4848

49-
## Using applications built with SYCL
49+
## Using applications built with DPC++
5050

5151
### Q: What happens if I run my application on a machine without OpenCL?
5252
**A:** If you use the default SYCL device selector (or any other selector that
@@ -56,7 +56,7 @@ Otherwise, an exception will be thrown.
5656

5757
## Common issues
5858

59-
### Q: SYCL application complains about missing libsycl.so (or sycl.dll) library.
59+
### Q: DPC++ application complains about missing libsycl.so (or sycl.dll) library.
6060
Linux:
6161
```
6262
$ ./app
@@ -66,15 +66,16 @@ Windows:
6666

6767
![Error screen](images/missing_sycl_dll.png)
6868

69-
*The code execution cannot proceed because sycl.dll was not found. Reinstalling the program may fix this problem.*
69+
*The code execution cannot proceed because sycl.dll was not found. Reinstalling
70+
the program may fix this problem.*
7071

71-
**A:** The SYCL Runtime library is required to run SYCL-enabled applications.
72+
**A:** The DPC++ Runtime library is required to run DPC++ applications.
7273
While compiler driver is able to find the library and link against it, your
73-
operating system may struggle. Make sure that the location of the SYCL Runtime
74+
operating system may struggle. Make sure that the location of the DPC++ Runtime
7475
library is listed in the correct environment variable: `LD_LIBRARY_PATH`
7576
(for Linux) or `LIB` (for Windows).
7677

77-
### Q: SYCL fails to compile device code that uses STD functions.
78+
### Q: DPC++ Compiler fails to compile device code that uses STD functions.
7879
Example error message:
7980
```
8081
In file included from example.cpp:1:
@@ -119,10 +120,10 @@ specification.
119120

120121
## Device specific questions and issues
121122

122-
### Q: What devices are supported by Intel SYCL compiler?
123-
**A:** By design, SYCL is closely connected to OpenCL, which is used to offload
124-
code to specialized devices. Intel SYCL compiler currently makes use of SPIR-V,
125-
a portable intermediate representation format. It is a core feature of
123+
### Q: What devices are supported by DPC++ compiler?
124+
**A:** By design, DPC++ and SYCL are closely connected to OpenCL, which is used
125+
to offload code to specialized devices. DPC++ compiler currently makes use of
126+
SPIR-V, a portable intermediate representation format. It is a core feature of
126127
OpenCL 2.1, so any device, capable of OpenCL 2.1, should be supported.
127128
Otherwise, your OpenCL device must support `cl_khr_il_program` extension.
128129

@@ -132,17 +133,17 @@ the offload target for kernel execution. Since the device code is also compiled
132133
for the host CPU and no JIT is required, you can easily use any classic C++
133134
debugging tools of your choice for the host device code.
134135

135-
Furthermore, developers can extend capabilities of the SYCL Runtime to
136-
non-OpenCL devices by writing correspondent plugins. To learn more, please check
137-
out our [Plugin Interface Guide](SYCLPluginInterface.md).
136+
Furthermore, developers can extend capabilities of the DPC++ Runtime to
137+
non-OpenCL devices by writing correspondent plugins. To learn more, please
138+
check out our [Plugin Interface Guide](PluginInterface.md).
138139

139-
### Q: SYCL applications hang on Intel GPUs while working well on other devices
140+
### Q: DPC++ applications hang on Intel GPUs while working well on other devices
140141
**A:** One of the common reasons is Intel GPUs feature called "hang check".
141142
If your workload runs for more than a certain amount of time, it will be killed
142-
by hardware. From the application point of view this looks like a hang. To allow
143-
heavy kernels to be executed, disable hang check. **Please, note that other apps
144-
on your system may contain bugs, and disabling "hang check" may lead to real
145-
hangs.**
143+
by hardware. From the application point of view this looks like a hang. To
144+
allow heavy kernels to be executed, disable hang check. **Please, note that
145+
other apps on your system may contain bugs, and disabling "hang check" may lead
146+
to real hangs.**
146147

147148
You can find out more about hang check and how to disable it on
148149
[this page](https://software.intel.com/en-us/articles/installation-guide-for-intel-oneapi-toolkits).

0 commit comments

Comments
 (0)