Commit Graph

234 Commits

Author SHA1 Message Date
Mateusz Jablonski
959333d9bf fix: respect number of tiles when getting total private memory size of module
Related-To: GSD-8374
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2024-04-23 17:33:15 +02:00
Jitendra Sharma
0d53b21d3c refactor: correct variable naming
Signed-off-by: Jitendra Sharma <jitendra.sharma@intel.com>
2024-04-11 11:12:56 +02:00
Zbigniew Zdanowicz
b3be51fc35 refactor: add checker for stateless only kernels
Related-To: NEO-10381

Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
2024-03-21 21:54:55 +01:00
Michal Mrozek
0edb025cf7 performance: apply padding only for last kernel.
not needed for all kernels, only for last one.
Signed-off-by: Michal Mrozek <michal.mrozek@intel.com>
2024-02-20 14:30:14 +01:00
Kamil Kopryk
9b7d54ef66 fix: fix exported function address for heapless mode in L0
Related-To: NEO-7621
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>
2024-02-08 09:45:42 +01:00
Fabian Zwolinski
c51b656d2c fix: request instruction cache invalidation on module destroy
Invalidation is requested on both linux and windows,
on Csr's that used Isa allocation.

Related-To: NEO-10045
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2024-01-29 16:00:34 +01:00
Kamil Kopryk
bf4cf57001 fix: fix exported function address when heapless mode is enabled in L0
Related-To: IGC-8472
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>
2024-01-24 17:12:21 +01:00
Maciej Bielski
f7b3b21efe fix: update build log when program build fails
Regression fix.

Resolves: GSD-7621

Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
2024-01-22 17:35:29 +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
Mateusz Jablonski
8c90350f3c refactor: correct naming of enum class constants 5/n
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-12-13 10:06:02 +01:00
Mateusz Jablonski
b182917d9d refactor: correct naming of allocation types
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-12-11 16:23:37 +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
Lu, Wenbin
37deaf1ae5 fix: serialize printf kernel accesses using device-wise locks
Related-To: LOCI-4114

Signed-off-by: Lu, Wenbin <wenbin.lu@intel.com>
2023-11-27 10:42:51 +01:00
Mateusz Jablonski
914a1f980f fix: don't return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE from linking module
https://github.com/intel/compute-runtime/issues/692
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-11-21 13:38:20 +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 Hoppe
5a4fa180d6 feature: control bindless compilation mode based on release
- check releaseHelper support when selecting bindless mode, if not
disabled, prefer bindless mode in L0 API
- bindless mode can be forced with DebugVariable: UseBindlessMode

Related-To: NEO-7063

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
2023-10-19 10:11:11 +02:00
Maciej Bielski
1bbc7a4396 fix: of the check if ISA is already copied to allocation
Fixes logic errors:
* When kernel code-sections' allocations are optimized (placed on
a single page) then don't go to outer `else` branch if the section for
a given kernel has already been copied.
* When optimization is not in place for a given module then also skip
kernel code section copying if it has been already done

Related-To: NEO-7788
Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
2023-10-13 16:38:40 +02:00
Maciej Bielski
f553d9f76b fix: one transfer per kernel ISA allocation(s) page
If several kernel heaps are sharing the same page then use a temporary
buffer to collect all of them and transfer to memory in one shot.
Previously there were several transfers performed (one per kernel) and,
observably, they happened not to be immediately effective at times.

Related-To: NEO-7788
Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
2023-10-05 18:29:26 +02:00
Mateusz Jablonski
fc508212de refactor: pass big parameters as reference instead of by value
Related-To: NEO-9038
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-10-04 14:53:13 +02:00
Maciej Bielski
97e7cda912 feature: Optimize intra-module kernel ISA allocations
So far, there is a separate page allocated for each kernel's ISA within
`KernelImmutableData::initialize()`. Apparently the ISA blocks are often
much smaller than a 64k page, which leads to poor memory utilization and
was even observed to cause the device OOM error if a single module has
several keys.

Improve the situation by reusing the parent allocation (owned by the
module instance) for modules, which kernel ISAs can fit together within
a single 64k page. This improves the memory utilization on a single
module level.

Related-To: NEO-7788
Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
2023-09-21 13:55:45 +02:00
Compute-Runtime-Validation
913a926fd4 Revert "feature: Optimize intra-module kernel ISA allocations"
This reverts commit c348831470.

Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
2023-09-19 14:16:05 +02:00
Maciej Bielski
c348831470 feature: Optimize intra-module kernel ISA allocations
So far, there is a separate page allocated for each kernel's ISA within
`KernelImmutableData::initialize()`. Apparently the ISA blocks are often
much smaller than a 64k page, which leads to poor memory utilization and
was even observed to cause the device OOM error if a single module has
several keys.

Improve the situation by reusing the parent allocation (owned by the
module instance) for modules, which kernel ISAs can fit together within
a single 64k page. This improves the memory utilization on a single
module level.

Related-To: NEO-7788
Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
2023-09-19 12:05:09 +02:00
Spruit, Neil R
f901b26222 fix: Return Invalid Argument given the wrong module used in static link
Related-To: LOCI-4939

Signed-off-by: Spruit, Neil R <neil.r.spruit@intel.com>
2023-09-15 23:20:10 +02:00
Compute-Runtime-Validation
21a506b045 Revert "fix: serialize printf kernel accesses using device-wise locks"
This reverts commit 3d33366ff6.

Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
2023-08-24 19:29:14 +02:00
Dominik Dabek
5c5c718af3 performance: detect indirect access in kernel, PVC
Enabling on pvc after patch in igc.

Enabling only for JIT kernels because AOT could have been compiled with
IGC older than required.

Related-To: NEO-7712

Signed-off-by: Dominik Dabek <dominik.dabek@intel.com>
2023-08-24 02:15:11 +02:00
Lu, Wenbin
3d33366ff6 fix: serialize printf kernel accesses using device-wise locks
Related-To: LOCI-4114

Signed-off-by: Lu, Wenbin <wenbin.lu@intel.com>
2023-08-22 14:57:08 +02:00
Maciej Bielski
93af2e9c62 refactor: split ModuleImp::initialize to facilitate testing
Extract submethods from the original method to ease mocks injection.

Related-To: NEO-7788
Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
2023-08-17 14:29:25 +02:00
Zhang, Winston
8962c95000 feature: zeDriverGetLastErrorDescription error messages (module)
When there is a PRINT_DEBUG_MESSAGE message in module that is
applicable to the user, it is now also set to
Driver::zeDriverGetLastErrorDescription.
ULTs are also added to verify that setErrorDescription successfully
stores the error message.

Related-To: LOCI-4653

Signed-off-by: Zhang, Winston <winston.zhang@intel.com>
2023-08-16 00:14:49 +02:00
Fabian Zwolinski
6fca8ee195 refactor: Remove SourceLevelDebugger
Removed:
- SourceLevelDebugger (with tests)
- DebuggerLibrary
- DebuggerLibraryRestore
- debuggerSupported field from hwInfo.capabilityTable
- HasSourceLevelDebuggerSupport matcher
- ExperimentalEnableSourceLevelDebugger debug var
- EnableMockSourceLevelDebugger debug var
- DebuggerOptDisable debug var
- lib_names.h.in file
- third_party/source_level_debugger/igfx_debug_interchange_types.h

Related-To: NEO-7213
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-08-10 11:14:02 +02:00
Mateusz Hoppe
30426d35c8 feature(zebin): dump zebin when building module from SPIRV
- Debug key DumpZEBin should dump zebin elf for modules created from
SPIRV format

Related-To: NEO-7895

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
2023-07-31 10:23:47 +02:00
Spruit, Neil R
11c96559a9 fix: Use Symbols map to report exported symbols vs external functions
Related-To: LOCI-4578

- Report all symbols in the Symbols Map for a Module as the Exported
symbols instead of using the External Functions Program Info.
- Resolves the issue of reporting symbols for platforms that don't have
ZEBIN binaries by default.

Signed-off-by: Spruit, Neil R <neil.r.spruit@intel.com>
2023-07-06 17:41:45 +02:00
Spruit, Neil R
907f41529c feature: zeModuleInspectLinkageExt to read Linkage of modules
Related-To: LOCI-2914

Signed-off-by: Spruit, Neil R <neil.r.spruit@intel.com>
2023-06-15 18:13:43 +02:00
Kamil Kopryk
6a0f7afd64 feature: verify stateful information only when binary is generated by IGC
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>

Related-To: NEO-6075

Ngen binaries contain stateful information, however they are
not used in isa on Pvc. Therefore, we can just ignore them.
2023-06-12 11:45:41 +02:00
Mateusz Hoppe
1c196b9f3d refactor: change ApiSpecificConfig functions names
- better description of the meaning of functions

Related-To: NEO-7063

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
2023-05-30 09:20:01 +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
Kacper Nowak
c7adbc2140 Add debug key for dumping ELF to file
Add "DumpZEBin" debug flag. When this flag is enabled, Zebin will be
dumped to a .elf file (with appropiate suffix, in case such file has
been dumped before).
Signed-off-by: Kacper Nowak <kacper.nowak@intel.com>
Related-To: NEO-7895
2023-04-18 20:40:25 +02:00
Mateusz Hoppe
d83684785c feature: add dumping debug elf file
Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
2023-04-04 18:28:16 +02:00
Young Jin Yoon
3f6443edfb Change allowZebin to enableZebin for apiOptions
Changed -cl-intel-allow-zebin to -cl-intel-enable-zebin only for
API options.

Related-To: NEO-7801

Signed-off-by: Young Jin Yoon <young.jin.yoon@intel.com>
2023-03-30 12:46:10 +02:00
Mateusz Jablonski
dd39b822d3 feature implicit args: patch rt dispatch global array in implicit args buffer
handle has_rtcalls in kernels and functions in zebin

Related-To: NEO-7818
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-03-28 12:31:38 +02:00
Rafal Maziejuk
27ff1c911d feature l0: handle additional properties in modules
Related-To: NEO-7357

Signed-off-by: Rafal Maziejuk <rafal.maziejuk@intel.com>
2023-03-24 10:27:44 +01:00
Maciej Bielski
3ec0a637ba fix(l0): return API error on ISA allocation OOM
It is possible that a module has so many kernels that the 4GB limit of
GPU VA is depleted when each kernel allocates a 64 KB page for its own
ISA. In such case, propagate the ZE_RESULT_ERROR_OUT_OF_DEVICE_MEMORY to
the API caller to indicate the actual problem.

Currently such scenario is not detected, the execution advances a bit
further and the following crashes do not let the user to easily
understand what happened.

Related-To: NEO-7788
Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
2023-03-23 17:30:15 +01:00
Mateusz Jablonski
0da5e6f277 refactor l0: cleanup cmake file level_zero/core/source/CMakeLists.txt
Related-To: NEO-7507
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
2023-03-16 12:38:15 +01:00
Kamil Kopryk
5a99635232 Don't check addressing mode for gtpin surface
If gtpin is used, then don't check addressing mode
of the last explicit arg, which is
gtpin's surface.

Related-To: NEO-6075
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>
2023-03-10 16:01:24 +01:00
Fabian Zwolinski
6c59953072 Add FP64 emulation support for ATS-M
This patch adds FP64 emulation support for ATS-M.
Introducing new environment variable - NEO_FP64_EMULATION - which provides
an option to allow the opt-in emulation of FP64.
When emulation is enabled, we pass -cl-fp64-gen-emu (ocl) /
-ze-fp64-gen-emu (L0) as an internal option to IGC.

Related-To: NEO-7611
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
2023-03-07 14:21:01 +01:00
Krystian Chmielewski
58d3f892a9 refactor(zebin): move files to seperate directory
* Moved zebin related files to zebin directory.
* Moved zebin related code to Zebin namespace.
* Separated zeInfo from zebin elf.
* Seperated zeInfo decoding from zebin decoder.
* Refactored populateKernelPayloadArgument function.

Signed-off-by: Krystian Chmielewski <krystian.chmielewski@intel.com>
2023-03-03 21:48:19 +01:00
Maciej Bielski
49424eb859 refactor(l0): follow-up cleanup after adding LargeGRF fix
Resubmission of 871a3bd11d
Reverted by 9882e992ac due to Elmo
regression (most likely not related to the change anyway).

Fixup for 2778043d67

Related-To: NEO-7684, HSD-18027378546

Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
2023-03-02 12:56:56 +01:00
Krystian Chmielewski
5caf7f7290 feat(linker): allow use of local symbols
This commit adds support for handling local symbols.
* Added 2 fields to SymbolInfo - binding, and associated
instructions segment id.
* Simplified code for decoding elf symbols and relocations.
* Simplified code for patching instruction segments.
* Changed logic of decodeElfSymbolTableAndRelocations:
* Add every global symbol to symbol map.
* Add any local symbol used by relocation to symbol map.
* Changed logic of link:
* After performing relocations remove local symbols from map.
* Replaced UNRECOVERABLE_IF with returning error.
* Removed LocalSymbolInfo structure used before for local kernel jumps.
* Removed old tests.

Signed-off-by: Krystian Chmielewski <krystian.chmielewski@intel.com>
2023-03-02 12:39:21 +01:00