Skip to content

Commit efa0631

Browse files
Documentation refactoring [2/n]
- Update contributing guidelines - Split and cleanup FAQ - Cleanup README Change-Id: Iae595fdff51e02f8ec4a3f72e4c4b45eb8d0c061 Signed-off-by: Adam Cetnerowski <adam.cetnerowski@intel.com>
1 parent 4803e82 commit efa0631

File tree

4 files changed

+219
-175
lines changed

4 files changed

+219
-175
lines changed

CONTRIBUTING.md

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@
77
Start with a patch (we prefer smaller self-contained incremental changes vs. large blobs of code).
88
When adding new code, please also add corresponding unit level tests (ULT). Added ULTs should cover
99
all the decision points introduced by the commit and should fail if executed without the code changes.
10-
Make sure it builds and passes _all_ ULT tests. For details about what compilers and build configurations we expect,
11-
refer to instructions for [building](https://github.com/intel/compute-runtime/blob/master/BUILD.md) the driver.
12-
Make sure you adhere to our coding standard - this will be verified by clang-format and clang-tidy
10+
Make sure it builds and passes _all_ ULT tests. For details about what compilers
11+
and build configurations we expect, refer to instructions for
12+
[building](https://github.com/intel/compute-runtime/blob/master/BUILD.md) the driver.
13+
Make sure you adhere to our
14+
[coding standard](https://github.com/intel/compute-runtime/blob/master/GUIDELINES.md);
15+
this will be verified by clang-format and clang-tidy
1316
(tool configuration is already included in NEO repository).
1417

1518
### 2. Certificate of origin
16-
In order to get a clear contribution chain of trust we use the [signed-off-by language](https://01.org/community/signed-process) used by the Linux kernel project.
19+
In order to get a clear contribution chain of trust we use the
20+
[signed-off-by language](https://01.org/community/signed-process) used by the Linux kernel project.
1721
Please make sure your commit message adheres to this guideline.
1822

1923
### 3. Patch submission
@@ -27,7 +31,8 @@ the requirements above. Make sure your commit message follows these rules:
2731

2832
### 4. Initial (cursory) review
2933

30-
One of NEO maintainers will do an initial (brief) review of your code. We will let you know if anything major is missing.
34+
One of NEO maintainers will do an initial (brief) review of your code.
35+
We will let you know if anything major is missing.
3136

3237
### 5. Verification
3338

@@ -37,13 +42,15 @@ We'll double-check that your code meets all of our minimal quality expectations.
3742
* Pass ULTs for all supported platforms
3843
* Pass clang-format check with the configuration contained within repository
3944
* Pass clang-tidy check with the configuration contained within repository
40-
* Pass sanity testing (test content recommendation for the external community will be provided in the future)
41-
45+
* Pass sanity testing
46+
(test content recommendation for the external community will be provided in the future)
47+
4248
When all the automated checks are confirmed to be passing, we will start actual code review process.
4349

4450
### 6. Code review
4551

46-
We'll make sure that your code fits within the architecture and design of NEO, is readable and maintainable. Please make sure to address our questions and concerns.
52+
We'll make sure that your code fits within the architecture and design of NEO, is readable
53+
and maintainable. Please make sure to address our questions and concerns.
4754

4855
### 7. Patch disposition
4956

@@ -57,6 +64,7 @@ Your patch may be reverted later in case of major regression that was not detect
5764

5865
## Intel Employees
5966

60-
If you are an Intel Employee *and* you want to contribute to NEO as part of your regular job duties, please:
67+
If you are an Intel Employee *and* you want to contribute to NEO as part of your regular job duties
68+
please:
6169
* Contact us in advance
62-
* Make sure your github account is linked to your intel.com email address
70+
* Make sure your github account is linked to your intel.com email address

FAQ.md

Lines changed: 6 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11

22
# Frequently asked questions
33

4+
For OpenCL specific questions,
5+
see the [OpenCL FAQ](https://github.com/intel/compute-runtime/blob/master/opencl/doc/FAQ.md).
6+
47
## OS support
58

69
### Which Linux versions does NEO support?
@@ -27,10 +30,6 @@ and/or Windows update. Features available in github will be available on Windows
2730

2831
Note: Older platforms (e.g. Broadwell) are considered to be in maintenance mode for Windows.
2932

30-
### Does NEO support Android?
31-
32-
The code can be ported and cross-compiled for Android systems. It is our long-term intention to offer that option.
33-
3433
## Platform support
3534

3635
### Which Intel platforms are supported by the driver?
@@ -42,135 +41,17 @@ See [README.md](https://github.com/intel/compute-runtime/blob/master/README.md).
4241
To check support for any device, you can follow these steps:
4342
1. Go to [Ark]( https://ark.intel.com) and find your Device ID
4443
1. Find the corresponding device ID label in [GMM]( https://github.com/intel/gmmlib/blob/master/Source/inc/common/igfxfmid.h)
45-
1. Check if this device ID label is enumerated in the [supported device list](https://github.com/intel/compute-runtime/blob/master/runtime/dll/linux/devices/devices_base.inl)
44+
1. Check if this device ID label is enumerated in the
45+
[supported device list](https://github.com/intel/compute-runtime/blob/master/opencl/source/dll/linux/devices/devices_base.inl)
4646

4747
### When will support for platform X be added?
4848

4949
We will start adding platform support after platform is disclosed by Intel.
5050
It is our intention to offer full support ahead of platform's market availability.
5151

52-
## OpenCL version
53-
54-
### Which version of OpenCL is supported?
55-
56-
See [README.md](https://github.com/intel/compute-runtime/blob/master/README.md).
57-
58-
### Which platforms will receive OpenCL 2.2 support?
59-
60-
Any platforms supporting OpenCL 2.1 are eligible for move to OpenCL 2.2.
61-
62-
### How can I enable OpenCL 2.1 on the Apollo Lake / Broxton platform?
63-
64-
You can enable a higher version of OpenCL using the ForceOCLVersion debug flag.
65-
66-
## Feature: cl_cache
67-
68-
### What is cl_cache?
69-
70-
This is a mechanism to cache binary representations of OpenCL kernels provided in text form by the application.
71-
By storing the binary representations, compiling is required only the first time, which improves performance.
72-
73-
### How can cl_cache be enabled?
74-
75-
In the working directory, manually create *cl_cache* directory.
76-
The driver will use this directory to store the binary representations of the compiled kernels.
77-
Note: This will work on all supported OSes.
78-
79-
### Configuring cl_cache location
80-
81-
Cached kernels can be stored in a different directory than the default one. This is useful when the application is installed into a directory for which the user doesn't have permissions.
82-
83-
#### Linux configuration
84-
85-
Set the environment variable named `cl_cache_dir` to new location of cl_cache directory.
86-
87-
#### Example:
88-
89-
If the application's directory is `/home/user/Document`, by default cl_cache will be stored in `/home/user/Document/cl_cache`.
90-
If the new path should be `/home/user/Desktop/cl_cache_place`, set environment variable `cl_cache_dir` to `/home/user/Desktop/cl_cache_place`.
91-
```bash
92-
export cl_cache_dir=/home/user/Desktop/cl_cache_place
93-
```
94-
95-
Subsequent application runs with passed source code and `cl_cache_dir` environment variable set will reuse previously cached kernel binaries instead of compiling kernels from source.
96-
97-
#### Windows configuration
98-
99-
To set the new location of cl_cache directory - in the registry `HKEY_LOCAL_MACHINE\SOFTWARE\Intel\IGFX\OCL`:
100-
1. add key `cl_cache_dir`
101-
1. add string value named <path_to_app> to `cl_cache_dir` key
102-
1. set data of added value to desired location of cl_cache
103-
104-
#### Example:
105-
106-
If application is located in `C:\Program Files\application\app.exe`, by default cl_cache will be stored in `C:\Program Files\application\cl_cache`.
107-
If the new path should be `C:\Users\USER\Documents\application\cl_cache`, to subkey `HKEY_LOCAL_MACHINE\SOFTWARE\Intel\IGFX\OCL\cl_cache_dir` add string value named `C:\Program Files\application\app.exe` with data `C:\Users\USER\Documents\application\cl_cache`.
108-
109-
e.g.
110-
string value : `HKEY_LOCAL_MACHINE\SOFTWARE\Intel\IGFX\OCL\cl_cache_dir\C:\Program Files\application\app.exe`
111-
data : `C:\Users\USER\Documents\application\cl_cache`
112-
113-
Neo will look for string value (REG_SZ) `C:\Program Files\application\app.exe` in key `HKEY_LOCAL_MACHINE\SOFTWARE\Intel\IGFX\OCL\cl_cache_dir`. Data of this string value will be used as new cl_cache dump directory for this specific application.
114-
115-
### What are the known limitations of cl_cache?
116-
117-
1. Not thread safe. (Workaround: Make sure your clBuildProgram calls are executed in thread safe fashion.)
118-
1. Binary representation may not be compatible between various versions of NEO and IGC drivers. (Workaround: Manually empty *cl_cache* directory prior to update)
119-
1. Cache is not automatically cleaned. (Workaround: Manually empty *cl_cache* directory)
120-
1. Cache may exhaust disk space and cause further failures. (Workaround: Monitor and manually empty *cl_cache* directory)
121-
1. Cache is not process safe.
122-
123-
## Feature: Out of order queues
124-
125-
### Implementation details of out of order queues implementation
126-
127-
Current implementation of out of order queues allows multiple kernels to be run concurently. This allows for better device utilization in scenarios where single kernel
128-
doesn't fill whole device.
129-
130-
More details can be found here:
131-
132-
https://github.com/intel/compute-samples/tree/master/compute_samples/applications/commands_aggregation
133-
134-
https://www.iwocl.org/wp-content/uploads/iwocl-2019-michal-mrozek-intel-breaking-the-last-line-of-performance-border.pdf
135-
136-
### Known issues and limitations
137-
138-
1. Turning on profiling on out of order command queue serializes kernel execution.
139-
1. Blocking command queue with user events blocks all further submissions until event is unblocked.
140-
1. Commands blocked by user events, when unblocked are serialized as well.
141-
142-
## Feature: Double-precision emulation (FP64)
143-
144-
By default NEO driver enables double precision operations only on platforms with supporting hardware. This is signified by exposing the "cl_khr_fp64" extension in the extension string. For other platforms, this support can be emulated by the compiler (IGC).
145-
146-
### How do I enable emulation?
147-
148-
FP64 emulation can only be enabled on Linux. There are two settings that have to be set.
149-
150-
#### Runtime setting:
151-
152-
There are two ways you can enable this feature in NEO:
153-
154-
* Set an environment variable **OverrideDefaultFP64Settings** to **1**:
155-
`OverrideDefaultFP64Settings=1`
156-
157-
* In **igdrcl.config** configuration file in the same directory as application binary (you may have to create this file) add a line as such:
158-
`OverrideDefaultFP64Settings = 1`
159-
160-
#### Compiler setting:
161-
162-
IGC reads flags only from environment, so set **IGC_EnableDPEmulation** to **1** as such:
163-
`IGC_EnableDPEmulation=1`
164-
165-
After both settings have been set you can run the application normally.
166-
167-
### Known issues and limitations
168-
169-
Intel does not claim full specification conformance when using emulated mode. We reserve the right to not fix issues that appear only in emulation mode. Performance degradation is to be expected and has not been measured by Intel.
170-
17152
## Who are we?
17253

173-
NEO OpenCL team is part of VTT (Visual Technologies Team).
54+
NEO OpenCL team is part of VTT (Visual Technologies Team).
17455
Historically, our team was responsible for delivery of the closed source OpenCL driver for Windows, Linux, and Android.
17556

17657
Most of the developers are located in Poland (UTC+1 timezone).

README.md

Lines changed: 48 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,60 @@ converge Intel's development efforts on OpenCL(TM) compute stacks supporting the
77
GEN graphics hardware architecture.
88

99
Please refer to http://01.org/compute-runtime for additional details regarding Intel's
10-
motivation and intentions wrt OpenCL support in the open source.
10+
motivation and intentions wrt OpenCL support in open source.
1111

1212
## License
1313

1414
The Intel(R) Graphics Compute Runtime for OpenCL(TM) is distributed under the MIT License.
1515

1616
You may obtain a copy of the License at: https://opensource.org/licenses/MIT
1717

18+
## Supported Platforms
19+
20+
* Intel Core Processors with Gen8 graphics devices (formerly Broadwell) - OpenCL 2.1
21+
* Intel Core Processors with Gen9 graphics devices (formerly Skylake, Kaby Lake, Coffee Lake) - OpenCL 2.1
22+
* Intel Atom Processors with Gen9 graphics devices (formerly Apollo Lake, Gemini Lake) - OpenCL 1.2
23+
* Intel Core Processors with Gen11 graphics devices (formerly Ice Lake) - OpenCL 2.1
24+
* Intel Core Processors with Gen12 graphics devices (formerly Tiger Lake) - OpenCL 2.1
25+
26+
## Release cadence
27+
28+
* Once a week, we run extended validation cycle on a selected driver.
29+
* When the extended validation cycle tests pass, the corresponding commit on github is tagged using
30+
the format yy.ww.bbbb (yy - year, ww - work week, bbbb - incremental build number).
31+
* Typically for weekly tags we will post a binary release (e.g. deb).
32+
* Quality level of the driver (per platform) will be provided in the Release Notes.
33+
1834
## Installation Options
1935

20-
To allow Neo accessing GPU device make sure user has permissions to files /dev/dri/renderD*.
36+
To allow NEO accessing GPU device make sure user has permissions to files /dev/dri/renderD*.
2137

22-
Under Ubuntu* or Centos* user must be in video group. In Fedora* all users by default have access to /dev/dri/renderD* files.
38+
Under Ubuntu* or Centos* user must be in video group.
39+
In Fedora* all users by default have access to /dev/dri/renderD* files.
2340

2441
### Via system package manager
2542

26-
NEO is available for installation on a variety of Linux distributions and can be installed via the distro's package manager.
43+
NEO is available for installation on a variety of Linux distributions
44+
and can be installed via the distro's package manager.
2745

2846
For example on Ubuntu* 19.04, 19.10:
2947

3048
```
3149
apt-get install intel-opencl-icd
3250
```
3351

34-
Procedures for other [distributions](https://github.com/intel/compute-runtime/blob/master/documentation/DISTRIBUTIONS.md).
52+
Procedures for other
53+
[distributions](https://github.com/intel/compute-runtime/blob/master/documentation/DISTRIBUTIONS.md).
54+
55+
## Linking applications
56+
57+
When building applications, they should link with ICD loader library (ocl-icd).
58+
Directly linking to the runtime library (igdrcl) is not supported.
3559

3660
### Manual download
3761

38-
.deb packages for Ubuntu are provided along with installation instructions and Release Notes on the [release page](https://github.com/intel/compute-runtime/releases)
62+
.deb packages for Ubuntu are provided along with installation instructions and
63+
Release Notes on the [release page](https://github.com/intel/compute-runtime/releases)
3964

4065
## Dependencies
4166

@@ -44,54 +69,37 @@ Procedures for other [distributions](https://github.com/intel/compute-runtime/bl
4469

4570
## Optional dependencies
4671

47-
To enable [cl_intel_va_api_media_sharing](https://www.khronos.org/registry/OpenCL/extensions/intel/cl_intel_va_api_media_sharing.txt) extension,
48-
the following packages are required:
72+
To enable
73+
[cl_intel_va_api_media_sharing](https://www.khronos.org/registry/OpenCL/extensions/intel/cl_intel_va_api_media_sharing.txt)
74+
extension, the following packages are required:
4975

5076
* libdrm - https://anongit.freedesktop.org/git/mesa/drm.git
5177
* libva - https://github.com/intel/libva.git
5278

53-
## Supported Platforms
54-
55-
* Intel Core Processors with Gen8 graphics devices (formerly Broadwell) - OpenCL 2.1
56-
* Intel Core Processors with Gen9 graphics devices (formerly Skylake, Kaby Lake, Coffee Lake) - OpenCL 2.1
57-
* Intel Atom Processors with Gen9 graphics devices (formerly Apollo Lake, Gemini Lake) - OpenCL 1.2
58-
* Intel Core Processors with Gen11 graphics devices (formerly Ice Lake) - OpenCL 2.1
59-
* Intel Core Processors with Gen12 graphics devices (formerly Tiger Lake) - OpenCL 2.1
60-
61-
## Release cadence
62-
63-
* Once a week, we run extended validation cycle on a selected driver.
64-
* When the extended validation cycle tests pass, the corresponding commit on github is tagged using the format yy.ww.bbbb
65-
(yy - year, ww - work week, bbbb - incremental build number).
66-
* Typically for weekly tags we will post a binary release (e.g. deb).
67-
* Quality level of the driver (per platform) will be provided in the Release Notes.
68-
69-
## Linking applications
70-
71-
When building applications, they should link with ICD loader library (ocl-icd).
72-
Directly linking to the runtime library (igdrcl) is not supported.
73-
74-
## Tutorial applications
75-
76-
The [Intel(R) GPU Compute Samples repository](https://github.com/intel/compute-samples/blob/master/compute_samples/applications/usm_hello_world/README.md)
77-
has sample source code to demonstrate features of Intel(R) Graphics Compute Runtime for OpenCL(TM) Driver.
78-
7979
## How to provide feedback
8080

81-
By default, please submit an issue using native github.com interface: https://github.com/intel/compute-runtime/issues.
81+
By default, please submit an issue using native github.com [interface](https://github.com/intel/compute-runtime/issues).
8282

8383
## How to contribute
8484

8585
Create a pull request on github.com with your patch. Make sure your change is cleanly building and passing ULTs.
8686
A maintainer will contact you if there are questions or concerns.
87-
See [contribution guidelines](https://github.com/intel/compute-runtime/blob/master/documentation/CONTRIBUTING.md) for more details.
87+
See
88+
[contribution guidelines](https://github.com/intel/compute-runtime/blob/master/documentation/CONTRIBUTING.md)
89+
for more details.
8890

8991
## See also
9092

91-
* [OpenCL on Linux guide](https://github.com/bashbaug/OpenCLPapers/blob/markdown/OpenCLOnLinux.md)
92-
* [Interoperability with VTune](https://github.com/intel/compute-runtime/blob/master/opencl/doc/VTUNE.md)
9393
* [Contribution guidelines](https://github.com/intel/compute-runtime/blob/master/documentation/CONTRIBUTING.md)
94-
* [Known issues and limitations](https://github.com/intel/compute-runtime/blob/master/opencl/doc/LIMITATIONS.md)
9594
* [Frequently Asked Questions](https://github.com/intel/compute-runtime/blob/master/FAQ.md)
9695

97-
___(*) Other names and brands may be claimed as property of others.___
96+
### OpenCL specific
97+
98+
* [OpenCL on Linux guide](https://github.com/bashbaug/OpenCLPapers/blob/markdown/OpenCLOnLinux.md)
99+
* [Intel(R) GPU Compute Samples](https://github.com/intel/compute-samples)
100+
* [Frequently Asked Questions](https://github.com/intel/compute-runtime/blob/master/opencl/doc/FAQ.md)
101+
* [Known issues and limitations](https://github.com/intel/compute-runtime/blob/master/opencl/doc/LIMITATIONS.md)
102+
* [Interoperability with VTune](https://github.com/intel/compute-runtime/blob/master/opencl/doc/VTUNE.md)
103+
* [OpenCL Conformance Tests](https://github.com/KhronosGroup/OpenCL-CTS/)
104+
105+
___(*) Other names and brands may be claimed as property of others.___

0 commit comments

Comments
 (0)