Commit Graph

230 Commits

Author SHA1 Message Date
Mateusz Jablonski
a4888b39c6 build: add clang-tidy restriction for Enum case
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-12-21 08:58:51 +01:00
Mateusz Jablonski
a6458433dc refactor: correct naming of enum class constants 9/n
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-12-19 10:36:25 +01:00
Mateusz Jablonski
dd1b9d6abc refactor: correct naming of enum class constants 8/n
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-12-19 08:18:18 +01:00
Chodor, Jaroslaw
7e795cd3c1 feature: Adding support for OCL C support queries to ocloc
Feature needed for automated OCL C compilation with ocloc as backend.
Added queries :
* CL_DEVICE_EXTENSIONS
* CL_DEVICE_EXTENSIONS_WITH_VERSION
* CL_DEVICE_PROFILE
* CL_DEVICE_OPENCL_C_ALL_VERSIONS
* CL_DEVICE_OPENCL_C_FEATURES

Sample command line:
ocloc query -device skl CL_DEVICE_OPENCL_C_FEATURES

Related-To: GSD-7420

Signed-off-by: Chodor, Jaroslaw <jaroslaw.chodor@intel.com>
2023-12-18 15:19:16 +01:00
Dunajski, Bartosz
d99104d5bf refactor: improve ImplicitArg struct handling
Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
2023-12-18 15:19:00 +01:00
Mateusz Jablonski
beafea9b39 refactor: correct naming of enum class constants 2/n
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-12-11 13:13:35 +01:00
Fabian Zwolinski
ee53bf0839 fix: linux cl_cache eviction mechanism
Fixed and refactored eviction mechanism works as follows:
- eviction is needed only if
total size of cache binaries + size of the new binary exceed cache limit
- single evition call removes files with a summed size of 1/3 of the cache limit
- if new binary can not fit in the cache size limit
even after eviction, it will not be saved
- cache limit applies only to
files in cache directory with .cl_cache/.l0_cache extension.
Only these files are counted and only these files are removed

Minor:
- rename variables for better readability
- add `const` where possible

Related-To: NEO-4262
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-12-05 09:35:48 +01:00
Mateusz Jablonski
c3d3a4db1f refactor: correct variable naming
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-12-04 13:45:53 +01:00
Mateusz Jablonski
c9664e6bad refactor: rename global debug manager to debugManager
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-11-30 13:00:59 +01:00
Compute-Runtime-Validation
1395a2cb38 Revert "refactor: linux cl_cache eviction mechanism"
This reverts commit a02ac1c140.

Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
2023-11-28 08:51:36 +01:00
Fabian Zwolinski
a02ac1c140 refactor: linux cl_cache eviction mechanism
Refactored eviction mechanism works as follows:
- eviction is needed only if
total size of cache binaries + size of the new binary exceed cache limit
- single evition call removes files with a summed size of 1/3 of the cache limit
- if new binary can not fit in the cache size limit
even after eviction, it will not be saved
- cache limit applies only to
files in cache directory with .cl_cache/.l0_cache extension.
Only these files are counted and only these files are removed

Minor:
- rename variables for better readability
- add `const` where possible

Related-To: NEO-4262
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-11-27 18:20:41 +01:00
Compute-Runtime-Validation
a8d404f859 Revert "refactor: linux cl_cache eviction mechanism"
This reverts commit 2aa0ae0eca.

Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
2023-11-18 01:13:12 +01:00
Fabian Zwolinski
2aa0ae0eca refactor: linux cl_cache eviction mechanism
Refactored eviction mechanism works as follows:
- eviction is needed only if
total size of cache binaries + size of the new binary exceed cache limit
- single evition call removes files with a summed size of 1/3 of the cache limit
- if new binary can not fit in the cache size limit
even after eviction, it will not be saved
- cache limit applies only to
files in cache directory with .cl_cache/.l0_cache extension.
Only these files are counted and only these files are removed

Minor:
- rename variables for better readability
- add `const` where possible

Related-To: NEO-4262
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-11-17 09:48:42 +01:00
Kamil Kopryk
73bb139e17 refactor: add applyExtraInternalOptions function
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>
2023-11-03 09:43:37 +01:00
Mateusz Jablonski
d76145ee65 refactor: correct printf formats
Related-To: NEO-9038
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-10-10 10:40:55 +02:00
Mateusz Jablonski
895a586083 refactor: use reference in for-range loops
Related-To: NEO-9038
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-10-03 18:56:53 +02:00
Mateusz Jablonski
5e4ea627f7 refactor: correct printf formats
Related-To: NEO-9038
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-10-03 18:14:20 +02:00
Fabian Zwolinski
d7d577ba48 feature: enable cl_cache by default on Windows
Related-To: NEO-8092
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-10-03 16:57:10 +02:00
Fabian Zwolinski
1f1af5bb36 refactor: windows cl_cache eviction mechanism
Refactored eviction mechanism works as follows:
- eviction is needed only if
total size of cache binaries + size of the new binary exceed cache limit
- single evition call removes files with a summed size of 1/3 of the cache limit
- if new binary can not fit in the cache size limit
even after eviction, it will not be saved
- cache limit applies only to
files in cache directory with .cl_cache/.l0_cache extension.
Only these files are counted and only these files are removed

Related-To: NEO-8092
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-10-03 16:20:28 +02:00
Mateusz Jablonski
1963ea69e5 fix: add missing member initializations
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-10-03 08:41:46 +02:00
Fabian Zwolinski
7c80f49176 fix: refactor Windows cl_cache and add extra safety layers
What's changed:
- Add early return when open existing config
fails due to different error than `ERROR_FILE_NOT_FOUND`
- Swich `ReadFileEx` to `ReadFile`
- Add `SetFilePointer` to make sure we're reading
from the beginning of the file
- Pass `overlapped` to `WriteFile` to make sure
we're writing from the beginning of the file

Related-To: NEO-8092
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-10-02 19:04:14 +02:00
Compute-Runtime-Validation
65337482ff Revert "feature: enable cl_cache by default on Windows"
This reverts commit e16220dc9f.

Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
2023-09-26 15:06:34 +02:00
Fabian Zwolinski
e16220dc9f feature: enable cl_cache by default on Windows
Related-To: NEO-8092
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-09-25 14:40:43 +02:00
Fabian Zwolinski
5881b97db2 fix: cl_cache windows - delete incorrectly created config.file
config.file should not be created manually by the user.
In a scenaro when the user manually creates an empty config.file,
then reading data from this file ends with failure,
because the file is empty.
Such scenario completely freezes the cache creation
until the user manually deletes the empty config file.
This patch fixes such freeze by automatically deleting config
if read fails with ERROR_HANDLE_EOF error.
Patch applies to windows only.

Related-To: NEO-8092
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-09-22 13:27:25 +02:00
Fabian Zwolinski
f931c25307 fix: add missing file handle close
Related-To: NEO-8092
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-09-21 16:50:16 +02:00
Fabian Zwolinski
e96dd344c3 feature: add new environment variables for compiler cache on Windows
Changes:
- replaced registry keys with environment variables
for cl_cache in OCL
- added compiler cache helpers
- implemented support for new env vars on Windows
- added tests

New env vars mechanism works as follows:
If `PERSISTENT_CACHE` is set,
driver checks if `NEO_CACHE_DIR` is set.
If `NEO_CACHE_DIR` is not set,
driver uses `%LocalAppData%\NEO\neo_compiler_cache`
as `cl_cache` destination folder.
If `NEO_CACHE_DIR` is not set and `%LocalAppData%`
path could not be obtained,
compiler cache is disabled.

In the current Windows implementation,
special characters in the folder path are not supported.

Related-To: NEO-8092
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-09-21 12:40:48 +02:00
Mateusz Jablonski
698a3ed3de fix: correct adjusting hw info for IGC, cover all cases
Related-To: NEO-8203

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-09-19 15:23:18 +02:00
Compute-Runtime-Validation
f8cae41e70 Revert "fix: correct adjusting hw info for IGC, cover all cases"
This reverts commit a75fcb6de0.

Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
2023-09-19 02:53:33 +02:00
Mateusz Jablonski
a75fcb6de0 fix: correct adjusting hw info for IGC, cover all cases
Related-To: NEO-8203
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-09-18 13:50:32 +02:00
Fabian Zwolinski
0538f0524a refactor: make os_handle.h non os specific
Use the same file `os_handle.h` on both
Linux and Windows.
Change implementation of `HandleType` -> `UnifiedHandle` to
`std::variant<int, void *>`
use `int` on Linux
use `void *` on Windows

Related-To: NEO-8092
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-09-15 15:53:41 +02:00
Fabian Zwolinski
0dd40b8616 refactor: Split compiler interface between OSs
Create new file:
`os_handle.h` which contains OS specific Handle type.
Add `shared/source/os_interface/<windows/linux>`
include directory to level_zero.

Related-To: NEO-8092
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-09-12 15:56:53 +02:00
Fabian Zwolinski
10675134e1 feature: Add process safety to Windows compiler cache
Related-To: NEO-8092

Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
Co-authored-by: Diedrich, Kamil <kamil.diedrich@intel.com>
2023-09-06 15:34:15 +02:00
Naklicki, Mateusz
ff57bec1f0 fix: ignore subDeviceId token instead of skipping builtins resolve
Previous implementation skipped resolving the subDeviceId token, which
caused in returning the LinkedPartially status if token was present.
It could result in ZE_RESULT_ERROR_INVALID_MODULE_UNLINKED when kernel
was created and crashing an app.

Related-To: NEO-6875, HSD-14015133115
Signed-off-by: Naklicki, Mateusz <mateusz.naklicki@intel.com>
2023-09-05 16:26:44 +02:00
Kacper Kasper
269cba1659 feature: enable cl_cache by default on Linux
Resolves: NEO-4262

Signed-off-by: Kacper Kasper <kacper.k.kasper@intel.com>
2023-09-01 15:13:13 +02:00
Kacper Kasper
abfed5a762 fix: add specialization constants to cache hash in spirv path
Related-To: NEO-4262

Signed-off-by: Kacper Kasper <kacper.k.kasper@intel.com>
2023-09-01 14:04:59 +02:00
Compute-Runtime-Validation
377d886c77 Revert "feature: enable cl_cache by default on Linux"
This reverts commit eeb8a5e1fb.

Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
2023-09-01 04:58:52 +02:00
Kacper Kasper
eeb8a5e1fb feature: enable cl_cache by default on Linux
Resolves: NEO-4262

Signed-off-by: Kacper Kasper <kacper.k.kasper@intel.com>
2023-08-31 15:52:11 +02:00
Kacper Kasper
ba4867c3d0 fix: compiler cache file extension and path creation
* When env variables did not have trailing slash, directory creation
could fail.
* If .cache in $HOME did not exist cache would have been disabled.

Signed-off-by: Kacper Kasper <kacper.k.kasper@intel.com>
2023-08-31 13:44:19 +02:00
Kacper Kasper
996c261430 fix: OclocIgcFacade->getIgcRevision() could return nullptr
* Make sure igcRevision is always initialized.
* Improve coverage.

Signed-off-by: Kacper Kasper <kacper.k.kasper@intel.com>
2023-08-31 12:57:27 +02:00
Naklicki, Mateusz
20862ad8fd fix: resolve builtins depending on the product
Related-To: NEO-6875
Signed-off-by: Naklicki, Mateusz <mateusz.naklicki@intel.com>
2023-08-29 15:25:08 +02:00
Kacper Kasper
991febcdf4 fix: extend cache hash with compiler commit sha, lib size and mtime
Related-To: NEO-4262

Signed-off-by: Kacper Kasper <kacper.k.kasper@intel.com>
2023-08-22 15:28:57 +02:00
Compute-Runtime-Validation
f4d05a8e6b Revert "fix: Add missing fp64 extensions in caps initialization"
This reverts commit 22a719d62f.

Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
2023-07-31 13:43:23 +02:00
Fabian Zwolinski
22a719d62f fix: Add missing fp64 extensions in caps initialization
In a scenario where fp64 emulation is both supported and enabled,
we want to include 2 additional extensions:
- cl_khr_fp64 to deviceExtensions
- __opencl_c_fp64 to openclCFeatures (OpenCL ver. 3.0)

Related-To: NEO-7611
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-07-28 21:29:30 +02:00
Katarzyna Cencelewska
6e93dd8068 fix: add check for igc compatibility without checking icbe
Related-To: NEO-7904
Signed-off-by: Katarzyna Cencelewska <katarzyna.cencelewska@intel.com>
2023-05-29 10:52:21 +02:00
Diedrich, Kamil
5a4a2ab8ab feature: Add new environment variables for compiler cache
This patch add new environment variables to control compiler cache.
Works as follow: If persistent cache is set driver check if NEO_CACHE_DIR
is set. If not then driver checks XDG_CACHE_HOME - If exists
then driver create neo_compiler_cache folder, if
not then driver checks HOME directory. If each NEO_CACHE_DIR,
XDG_CACHE_HOME and HOME are not set then compiler cache is disabled.
Current support is for Linux only.

Signed-off-by: Diedrich, Kamil <kamil.diedrich@intel.com>

Related-To: NEO-4262
2023-05-12 10:21:27 +02:00
Diedrich, Kamil
5149d74141 refactor: Remove globaly enabled cl_cache
Current behaviour will be detecd path existence

Related-To: NEO-4262

Signed-off-by: Diedrich, Kamil <kamil.diedrich@intel.com>
2023-04-28 23:28:49 +02:00
Fabian Zwolinski
cbce863dc2 refactor: Rename member variables to camelCase 3/n
Additionally enable clang-tidy check for member variables

Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-04-28 16:01:14 +02:00
Cencelewska, Katarzyna
861ec524c6 fix: check icbe version only once when patchtoken
- set by default flag ZebinIgnoreIcbeVersion to true
- for zebin icbe version check is only inside flag
- only when use patchtoken then check icbe version is mandatory

Resolves: NEO-7904
Signed-off-by: Cencelewska, Katarzyna <katarzyna.cencelewska@intel.com>
2023-04-28 09:26:02 +02:00
Diedrich, Kamil
26ca64bb28 Add process safety to cl_cache on Linux
Current flow will be to have one synchronization point
config.file. Read remains unblocking, only write(caching)
operation will be blocking (lock on config.file)

Related-To: NEO-4262

Signed-off-by: Diedrich, Kamil <kamil.diedrich@intel.com>
2023-04-25 17:35:40 +02:00
Maciej Plewka
730578112f Report cl_khr_integer_dot_product extension
Related-To: NEO-6206

With this commit OpenCL will report cl_khr_integer_dot_product extension
in version 2. With all properties enabled.

Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>
2023-04-14 14:46:18 +02:00