documentation: correct links to L0 specification

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2024-10-09 10:53:17 +00:00
committed by Compute-Runtime-Automation
parent 0168067c9c
commit f46d2dcfb3
8 changed files with 50 additions and 50 deletions

View File

@@ -107,7 +107,7 @@ for more details.
* [Frequently Asked Questions](https://github.com/intel/compute-runtime/blob/master/FAQ.md)
### Level Zero specific
* [oneAPI Level Zero specification](https://spec.oneapi.com/versions/latest/elements/l0/source/index.html)
* [oneAPI Level Zero specification](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/index.html)
* [Intel(R) OneApi Level Zero Specification API C/C++ header files](https://github.com/oneapi-src/level-zero/)
* [oneAPI Level Zero tests](https://github.com/oneapi-src/level-zero-tests/)

View File

@@ -18,11 +18,11 @@ The update involves changes introduced in Level Zero spec v1.6. Some of the impo
| Feature | Spec link | Notes |
| ------------------ | -------------------| ----------------------------- |
| Support for zeCommandListHostSynchronize API | https://spec.oneapi.io/level-zero/latest/core/api.html#zecommandlisthostsynchronize | |
| Support for zeDriverGetLastErrorDescription API | https://spec.oneapi.io/level-zero/latest/core/api.html#zedrivergetlasterrordescription | |
| Support for zeMemPutIpcHandle API | https://spec.oneapi.io/level-zero/latest/core/api.html#zememputipchandle | |
| Support for EventPool Get and put IPC handle APIs | https://spec.oneapi.io/level-zero/latest/core/api.html#zeeventpoolgetipchandle , https://spec.oneapi.io/level-zero/latest/core/api.html#zeeventpoolputipchandle | |
| Support for host mapped and synchronized event timestamp extension API | https://spec.oneapi.io/level-zero/latest/core/api.html#eventquerykerneltimestamps | |
| Support for zeCommandListHostSynchronize API | https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#zecommandlisthostsynchronize | |
| Support for zeDriverGetLastErrorDescription API | https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#zedrivergetlasterrordescription | |
| Support for zeMemPutIpcHandle API | https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#zememputipchandle | |
| Support for EventPool Get and put IPC handle APIs | https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#zeeventpoolgetipchandle , https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#zeeventpoolputipchandle | |
| Support for host mapped and synchronized event timestamp extension API | https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#eventquerykerneltimestamps | |
# Release Notes v1.5
@@ -36,11 +36,11 @@ The update involves changes introduced across Level Zero spec from v1.3 upto and
| Feature | Spec link | Notes |
| ------------------ | -------------------| ----------------------------- |
| Support for Device IP Version extension | https://spec.oneapi.io/level-zero/latest/core/api.html#deviceipversion-structures | |
| Support for Image view and Image view planar extension | https://spec.oneapi.io/level-zero/latest/core/api.html#imageview | |
| Support for sub allocation properties extension | https://spec.oneapi.io/level-zero/latest/core/api.html#suballocationsproperties | |
| Support for Device IP Version extension | https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#deviceipversion-structures | |
| Support for Image view and Image view planar extension | https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#imageview | |
| Support for sub allocation properties extension | https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#suballocationsproperties | |
| Allow IPC events with timestamp events | | Previously spec had limitation disallowing usage of IPC for event pools created with timestamp flag. This limitation is now removed for both spec and implemenation |
| Support for kernel max group size properties extension | https://spec.oneapi.io/level-zero/latest/core/api.html#kernelmaxgroupsizeproperties | |
| Support for kernel max group size properties extension | https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#kernelmaxgroupsizeproperties | |
# Release Notes v1.3
@@ -55,15 +55,15 @@ January 2022
Implicit scaling has been enabled by default on Level Zero on Xe HPC (PVC) B and later steppings. The `EnableImplicitScaling` debug key may be used to enable (`EnableImplicitScaling=1`) or disable (`EnableImplicitScaling=0`) implicit scaling on on Xe HPC and other multi-tile architectures.
### [Blocking Free](https://spec.oneapi.io/level-zero/latest/core/api.html#zememfreeext)
### [Blocking Free](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#zememfreeext)
The blocking free memory policy has been implemented for `zeMemFreeExt` extension. Defer free policy will be added in upcoming releases.
### [PCI Properties Extension](https://spec.oneapi.io/level-zero/latest/core/EXT_PCIProperties.html#pci-properties-extension)
### [PCI Properties Extension](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/EXT_PCIProperties.html#pci-properties-extension)
Support for PCI properties extension has been added via `zeDevicePciGetPropertiesExt` interface. This currently provides access to device's BDF address only. Device bandwidth property will be exposed in future based on support from underlying components
### [Memory Compression Hints](https://spec.oneapi.io/level-zero/latest/core/EXT_MemoryCompressionHints.html#memory-compression-hints-extension)
### [Memory Compression Hints](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/EXT_MemoryCompressionHints.html#memory-compression-hints-extension)
Memory compression hints for shared and device memory allocations and images have been added.
@@ -82,7 +82,7 @@ August 2021
## Changes in this release:
### [Extension to create image views for planar formats](https://spec.oneapi.com/level-zero/latest/core/api.html?highlight=relaxed#relaxedalloclimits-enums)
### [Extension to create image views for planar formats](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/EXT_ImageViewPlanar.html#ze-extension-image-view-planar)
This extension allows accessing each plane for planar formats and have different interpretations of created images.
@@ -90,11 +90,11 @@ Sample code:
[https://github.com/intel/compute-runtime/blob/master/level_zero/core/test/black_box_tests/zello_image_view.cpp](https://github.com/intel/compute-runtime/blob/master/level_zero/core/test/black_box_tests/zello_image_view.cpp)
### [Extension for querying image properties](https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=ze_image_memory_properties_exp_t#_CPPv432ze_image_memory_properties_exp_t)
### [Extension for querying image properties](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=ze_image_memory_properties_exp_t#_CPPv432ze_image_memory_properties_exp_t)
This extension allows querying the different properties of an image, such as size, row pitch, and slice pitch.
### [Definition of ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES_1_2 properties](https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=ze_structure_type_device_properties_1_2#_CPPv439ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES_1_2)
### [Definition of ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES_1_2 properties](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#_CPPv4N19ze_structure_type_t39ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES_1_2E)
`ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES_1_2` properties allows users to request driver to return timer resolution in cycles per seconds,
as defined v1.2 specification:
@@ -122,36 +122,36 @@ zeDeviceGetProperties(device, &devProperties);
uint64_t timerResolutionInNanoSeconds = devProperties.timerResolution;
```
### Extension to set preferred allocation for USM shared allocations
[`ZE_DEVICE_MEM_ALLOC_FLAG_BIAS_INITIAL_PLACEMENT`](https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=mem_alloc_flag_bias_initial_placement#_CPPv447ZE_DEVICE_MEM_ALLOC_FLAG_BIAS_INITIAL_PLACEMENT) and [`ZE_HOST_MEM_ALLOC_FLAG_BIAS_INITIAL_PLACEMENT`](https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=mem_alloc_flag_bias_initial_placement#_CPPv445ZE_HOST_MEM_ALLOC_FLAG_BIAS_INITIAL_PLACEMENT) can now be set in
[`ZE_DEVICE_MEM_ALLOC_FLAG_BIAS_INITIAL_PLACEMENT`](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#_CPPv4N26ze_device_mem_alloc_flag_t47ZE_DEVICE_MEM_ALLOC_FLAG_BIAS_INITIAL_PLACEMENTE) and [`ZE_HOST_MEM_ALLOC_FLAG_BIAS_INITIAL_PLACEMENT`](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#_CPPv4N24ze_host_mem_alloc_flag_t45ZE_HOST_MEM_ALLOC_FLAG_BIAS_INITIAL_PLACEMENTE) can now be set in
`ze_device_mem_alloc_flags_t` and `ze_host_mem_alloc_flags_t`, respectively, when creating a shared-alloaction, to indicate
the driver where a shared-allocation should be initially placed.
### [IPC Memory Cache Bias Flags](https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=ze_ipc_memory_flag_bias_cached#ze-ipc-memory-flags-t)
### [IPC Memory Cache Bias Flags](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=ze_ipc_memory_flag_bias_cached#ze-ipc-memory-flags-t)
`ZE_IPC_MEMORY_FLAG_BIAS_CACHED` and `ZE_IPC_MEMORY_FLAG_BIAS_UNCACHED ` can be passed when opening an IPC
memory handle with `zeMemOpenIpcHandle` to set the cache settings of the imported allocation.
### [Support for preferred group size](https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=ze_kernel_preferred_group_size_properties_t#ze-kernel-preferred-group-size-properties-t)
### [Support for preferred group size](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=ze_kernel_preferred_group_size_properties_t#ze-kernel-preferred-group-size-properties-t)
`ze_kernel_preferred_group_size_properties_t` can be used through `zeKernelGetProperties` to query for the preferred
multiple group size of a kernel for submission. Submitting a kernel with the preferred group size returned by the driver
may improve performance in certain platforms.
### [Module compilation options](https://spec.oneapi.io/level-zero/latest/core/PROG.html#module-build-options)
### [Module compilation options](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/PROG.html#module-build-options)
Optimization levels can now be passed to `zeModuleCreate` using the `-ze-opt-level` option, which are then communicated
to the underlying graphics compiler as hint to indicate the level of optimization desired.
### [Extension to read the timestamps of each subdevice](https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=zeeventquerytimestampsexp#zeeventquerytimestampsexp)
### [Extension to read the timestamps of each subdevice](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=zeeventquerytimestampsexp#zeeventquerytimestampsexp)
This extension defines the `zeEventQueryTimestampsExp` interface to query for timestamps of the parent device or
all of the available subdevices.
### [Extension to set thread arbitration policy](https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=ze_structure_type_device_properties_1_2#kernelschedulinghints)
### [Extension to set thread arbitration policy](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=ze_structure_type_device_properties_1_2#kernelschedulinghints)
The `zeKernelSchedulingHintExp` interface allows applications to set the thread arbitration policy desired for the
target kernel. Avaialable policies can be queried by application through `zeDeviceGetModuleProperties` with the
[`ze_scheduling_hint_exp_properties_t`](https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=ze_scheduling_hint_exp_properties_t#_CPPv435ze_scheduling_hint_exp_properties_t) structure.
[`ze_scheduling_hint_exp_properties_t`](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=ze_scheduling_hint_exp_properties_t#_CPPv435ze_scheduling_hint_exp_properties_t) structure.
Policies include:
@@ -159,7 +159,7 @@ Policies include:
* `ZE_SCHEDULING_HINT_EXP_FLAG_ROUND_ROBIN`
* `ZE_SCHEDULING_HINT_EXP_FLAG_STALL_BASED_ROUND_ROBIN`
### [Extension for cache reservation](https://spec.oneapi.io/level-zero/latest/core/EXT_CacheReservation.html#cache-reservation-extension)
### [Extension for cache reservation](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/EXT_CacheReservation.html#cache-reservation-extension)
With `zeDeviceReserveCacheExt`, applications can reserve sections of the GPU cache for exclusive use. Cache level
support varies between platforms.
@@ -176,7 +176,7 @@ April 2021
## Changes in this release:
### Device allocations larger than 4GB size.
https://spec.oneapi.com/level-zero/latest/core/api.html?highlight=relaxed#relaxedalloclimits-enums
https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=relaxed#relaxedalloclimits-enums
L0 driver now allows the allocation of buffers larger than 4GB. To use, the `ze_relaxed_allocation_limits_exp_desc_t`
structure needs to be passed to `zeMemAllocHost` or `zeMemAllocShared` as a linked descriptor.
@@ -197,7 +197,7 @@ In addition to this, kernels need to be compiled with `ze-opt-greater-than-4GB-b
passed in `pBuildFlags` field in `ze_module_desc_t` descriptor while calling `zeModuleCreate`.
### zeDeviceGetGlobalTimestamps for CPU/GPU synchronized time.
https://spec.oneapi.com/level-zero/latest/core/api.html?highlight=zedevicegetglobaltimestamps#_CPPv427zeDeviceGetGlobalTimestamps18ze_device_handle_tP8uint64_tP8uint64_t
https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=zedevicegetglobaltimestamps#_CPPv427zeDeviceGetGlobalTimestamps18ze_device_handle_tP8uint64_tP8uint64_t
Returns synchronized Host and device global timestamps.
@@ -214,7 +214,7 @@ zeMemAllocDevice(context, &deviceDesc, size, 0, device, &ptr);
```
### Global work offset
https://spec.oneapi.com/level-zero/latest/core/api.html?highlight=globaloffset#_CPPv426zeKernelSetGlobalOffsetExp18ze_kernel_handle_t8uint32_t8uint32_t8uint32_t
https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=globaloffset#_CPPv426zeKernelSetGlobalOffsetExp18ze_kernel_handle_t8uint32_t8uint32_t8uint32_t
Applications now can set a global work offset to kernels.
@@ -235,7 +235,7 @@ zeKernelSetGlobalOffsetExp(kernel, offsetx, offsety, offsetz);
```
### Atomic floating point properties
https://spec.oneapi.com/level-zero/latest/core/api.html?highlight=ze_structure_type_float_atomic_ext_properties#_CPPv432ze_float_atomic_ext_properties_t
https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=ze_structure_type_float_atomic_ext_properties#_CPPv432ze_float_atomic_ext_properties_t
Applications now can query for floating atomic properties supported by the device in a kernel.
This is done by passing `ze_float_atomic_ext_properties_t` to zeDeviceGetModuleProperties as a linked property structure.
@@ -255,7 +255,7 @@ if (extendedProperties.fp16Flags & ZE_DEVICE_FP_ATOMIC_EXT_FLAG_GLOBAL_ADD) {
```
### Context Creation for specific devices
https://spec.oneapi.com/level-zero/latest/core/api.html?highlight=zecontextcreate#_CPPv417zeContextCreateEx18ze_driver_handle_tPK17ze_context_desc_t8uint32_tP18ze_device_handle_tP19ze_context_handle_t
https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=zecontextcreate#_CPPv417zeContextCreateEx18ze_driver_handle_tPK17ze_context_desc_t8uint32_tP18ze_device_handle_tP19ze_context_handle_t
Added `zeContextCreateEX` to create a context with a set of devices. Resources allocated against that context
are visible only to the devices for which the context was created.
@@ -271,7 +271,7 @@ zeContextCreateEx(hDriver, &desc, devices.size(), devices.data(), &phContext);
```
### Change on timer resolution
https://spec.oneapi.com/level-zero/latest/core/api.html?highlight=timerresolution#_CPPv4N22ze_device_properties_t15timerResolutionE
https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=timerresolution#_CPPv4N22ze_device_properties_t15timerResolutionE
Time resolution returned by device properties has been changed to cycles/second (v1.0 has a resolution of nano-seconds).
To help libraries with the transtition to the new resolution, the `UseCyclesPerSecondTimer` variable has been defined.

View File

@@ -13,7 +13,7 @@ SPDX-License-Identifier: MIT
The following document describes the driver experimental extensions implemented in the Level Zero Intel(R) GPU driver. These extensions are meant to test and/or gather feedback on interfaces before they could potentially be added Level Zero specification, as well to provide access to functionality specific to Intel(R) GPUs.
Driver extensions may be defined as APIs (interfaces), flags, or environment variables. In the case of interfaces, these shall be accessed through [zeDriverGetExtensionFunctionAddress](https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=zedrivergetextensionfunctionaddress#_CPPv435zeDriverGetExtensionFunctionAddress18ze_driver_handle_tPKcPPv). Sample code:
Driver extensions may be defined as APIs (interfaces), flags, or environment variables. In the case of interfaces, these shall be accessed through [zeDriverGetExtensionFunctionAddress](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=zedrivergetextensionfunctionaddress#_CPPv435zeDriverGetExtensionFunctionAddress18ze_driver_handle_tPKcPPv). Sample code:
```cpp

View File

@@ -20,7 +20,7 @@ Xe HPC (PVC) contains 4 CCSs (Compute-Command Streamers) per tile, which can be
- All EUs may be assigned to a single CCS, on which case, only 1 CCS is needed to be exposed to users.
- EUs may be distributed equally among the 4 CCSs, and all CCSs are exposed.
Applications query for the number of CCSs exposed in the target device by using Level Zero queue groups [https://spec.oneapi.io/level-zero/latest/core/PROG.html#command-queue-groups](https://spec.oneapi.io/level-zero/latest/core/PROG.html#command-queue-groups).
Applications query for the number of CCSs exposed in the target device by using Level Zero queue groups [https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/PROG.html#command-queue-groups](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/PROG.html#command-queue-groups).
Depending on their execution patterns, applications may benefit more from using one or other configuration: Some may benefit from using 1 single CCS to access all EUs, while others may benefit from using more than 1 CCS, each with a fixed number of assigned EUs. For instance:

View File

@@ -149,6 +149,6 @@ When above flags are passed, compiler compiles kernels in a stateless addressing
# References
https://spec.oneapi.io/level-zero/latest/core/api.html#relaxedalloclimits
https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#relaxedalloclimits
https://spec.oneapi.io/level-zero/latest/core/api.html#ze-module-desc-t
https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#ze-module-desc-t

View File

@@ -18,7 +18,7 @@ SPDX-License-Identifier: MIT
# Introduction
Implementation independent details of Level-Zero metrics are described in the Level-Zero specification [Metrics Section](https://spec.oneapi.io/level-zero/latest/tools/PROG.html#metrics). This implementation supports Time-based and Event-based sampling. Two domains are supported, one for collecting GPU performance metrics and one for collecting EU stall sampling data (type ZET_METRIC_TYPE_IP).
Implementation independent details of Level-Zero metrics are described in the Level-Zero specification [Metrics Section](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/tools/PROG.html#metrics). This implementation supports Time-based and Event-based sampling. Two domains are supported, one for collecting GPU performance metrics and one for collecting EU stall sampling data (type ZET_METRIC_TYPE_IP).
# Dependencies
@@ -29,7 +29,7 @@ Metrics collection depends on:
# Environment Setup
As described in Level-Zero specification [Tools Section](https://spec.oneapi.io/level-zero/latest/tools/PROG.html#environment-variables) environment variable `ZET_ENABLE_METRICS` must be set to 1.
As described in Level-Zero specification [Tools Section](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/tools/PROG.html#environment-variables) environment variable `ZET_ENABLE_METRICS` must be set to 1.
## Linux
Additionally in Linux environment, is is required to disable the kernel module driver i915 performance stream paranoid mode. This can be done with command
@@ -92,8 +92,8 @@ Using Level-Zero Loader Tracing Layer register epilog callbacks for L0 APIs. See
2. Store the disassembled GPU kernel code.
### Metrics collection:
1. Enumerate available metric groups and query properties for metrics in each group. Match the metric group named "EU stall sampling", which contains the metric type ZET_METRIC_TYPE_IP. See high level generic steps at https://spec.oneapi.io/level-zero/latest/tools/PROG.html#enumeration
2. Open a streamer to collect metrics in "EU stall sampling" metric group. See high level generic steps at https://spec.oneapi.io/level-zero/latest/tools/PROG.html#metric-streamer
1. Enumerate available metric groups and query properties for metrics in each group. Match the metric group named "EU stall sampling", which contains the metric type ZET_METRIC_TYPE_IP. See high level generic steps at https://oneapi-src.github.io/level-zero-spec/level-zero/latest/tools/PROG.html#enumeration
2. Open a streamer to collect metrics in "EU stall sampling" metric group. See high level generic steps at https://oneapi-src.github.io/level-zero-spec/level-zero/latest/tools/PROG.html#metric-streamer
3. Run workload using Level-Zero Core APIs.
4. Read metrics data (zetMetricStreamerReadData()) and calculate metrics values (zetMetricGroupCalculateMultipleMetricValuesExp()).

View File

@@ -35,7 +35,7 @@ To enable the ability for a Module to export Symbols, the Intel Graphics Compile
- `-library-compilation` : Enables IGC to export Functions other than kernels as symbols.
# Function Pointers
Function Pointers are supported in Level Zero through the API `https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=functionpointer#_CPPv426zeModuleGetFunctionPointer18ze_module_handle_tPKcPPv`
Function Pointers are supported in Level Zero through the API `https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=functionpointer#_CPPv426zeModuleGetFunctionPointer18ze_module_handle_tPKcPPv`
Function pointers refer to non-kernel functions reported as an `export` symbol in the module.
@@ -56,18 +56,18 @@ And during llvm-spirv compile, use of the SPIRv function pointer extension:
# Global Variables
Global Variables in SPIRv Modules are reported and accessed through export symbols when the module is compiled with `-ze-take-global-address`.
The memory address retrieved from the API `https://spec.oneapi.io/level-zero/latest/core/api.html?highlight=getglobal#_CPPv424zeModuleGetGlobalPointer18ze_module_handle_tPKcP6size_tPPv`
The memory address retrieved from the API `https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html?highlight=getglobal#_CPPv424zeModuleGetGlobalPointer18ze_module_handle_tPKcP6size_tPPv`
Is device-only and must not be read on the host otherwise one will access invalid memory. Only usage of the memory on the device is allowed.
# Dynamic Module Linking
Dynamic Module Linking or Linking L0 Modules to other L0 Modules to resolve imported symbols is enabled through the following L0 APIs:
`https://spec.oneapi.io/level-zero/latest/core/api.html#zemoduledynamiclink`
`https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#zemoduledynamiclink`
Please see the functionality described in detail here in the L0 spec: `https://spec.oneapi.io/level-zero/latest/core/PROG.html#dynamically-linked-modules`
Please see the functionality described in detail here in the L0 spec: `https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/PROG.html#dynamically-linked-modules`
# Static Module Linking
Static Module Linking or Linking L0 Modules to other L0 Modules during the zeModuleCreate is enabled through the extension:`https://spec.oneapi.io/level-zero/latest/core/api.html#ze-module-program-exp-desc-t`
Static Module Linking or Linking L0 Modules to other L0 Modules during the zeModuleCreate is enabled through the extension:`https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#ze-module-program-exp-desc-t`
This extension to `zeModuleCreate` allows for one to pass more than one Module to Create for the symbol linkage to be resolved into a single large binary.

View File

@@ -15,16 +15,16 @@ SPDX-License-Identifier: MIT
# Introduction
The following document describes limitations of using different initialization modes of System Resource Management Library (Sysman) in Level Zero. Implementation independent information on Level-Zero Sysman initialization are described in the Level-Zero specification [Sysman Programming Guide Section](https://spec.oneapi.io/level-zero/latest/sysman/PROG.html#sysman-programming-guide).
The following document describes limitations of using different initialization modes of System Resource Management Library (Sysman) in Level Zero. Implementation independent information on Level-Zero Sysman initialization are described in the Level-Zero specification [Sysman Programming Guide Section](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/sysman/PROG.html#sysman-programming-guide).
# Initialization
An application can initialize Level Zero Sysman in following modes:
* [zeInit](https://spec.oneapi.io/level-zero/latest/core/api.html#zeinit) with [ZES_ENABLE_SYSMAN](https://spec.oneapi.io/level-zero/latest/sysman/PROG.html#environment-variables) environment variable (also referenced as "Legacy mode" for brevity in this document).
* [zesInit](https://spec.oneapi.io/level-zero/latest/sysman/api.html#zesinit)
* [zeInit](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/api.html#zeinit) with [ZES_ENABLE_SYSMAN](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/sysman/PROG.html#environment-variables) environment variable (also referenced as "Legacy mode" for brevity in this document).
* [zesInit](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/sysman/api.html#zesinit)
Psuedo code for the above can be referenced from [spec](https://spec.oneapi.io/level-zero/latest/sysman/PROG.html#sysman-programming-guide).
Psuedo code for the above can be referenced from [spec](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/sysman/PROG.html#sysman-programming-guide).
# Support and Limitations
@@ -33,11 +33,11 @@ Following table summarizes the effect of using the specified initialization call
| Initialization Mode | Core <-> Sysman Device Handle Casting | Core and Sysman device handle mapping | Sysman API's Support | Platform Support |
|-------------------------------------------------------------------------------------------|---------------------------------------|-----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------|
| Legacy mode | Supported | Core <-> Sysman Device Handle Casting | Supported till [v1.5](https://spec.oneapi.io/releases/index.html#level-zero-v1-5-0).<br> API's introduced post 1.5 are not supported | Supported up to XeHPC (PVC) and earlier platforms |
| zesInit | Not supported | [Sysman device mapping](https://spec.oneapi.io/level-zero/latest/sysman/api.html#sysmandevicemapping-functions) | All API's are supported | All Platforms supported |
| zesInit + (zeInit W/o ZES_ENABLE_SYSMAN) Or <br> (zeInit W/o ZES_ENABLE_SYSMAN) + zesInit | Not supported | [Sysman device mapping](https://spec.oneapi.io/level-zero/latest/sysman/api.html#sysmandevicemapping-functions) | All API's are supported | All Platforms supported |
| zesInit | Not supported | [Sysman device mapping](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/sysman/api.html#sysmandevicemapping-functions) | All API's are supported | All Platforms supported |
| zesInit + (zeInit W/o ZES_ENABLE_SYSMAN) Or <br> (zeInit W/o ZES_ENABLE_SYSMAN) + zesInit | Not supported | [Sysman device mapping](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/sysman/api.html#sysmandevicemapping-functions) | All API's are supported | All Platforms supported |
| zesInit + (Legacy mode) Or <br> (Legacy mode) + zesInit | Not supported | Not supported | Not supported | Not supported |
* Initialization with Legacy mode is supported only if Level Zero Core is operating on [composite device hierarchy](https://spec.oneapi.io/level-zero/latest/core/PROG.html#device-hierarchy) model.
* Initialization with Legacy mode is supported only if Level Zero Core is operating on [composite device hierarchy](https://oneapi-src.github.io/level-zero-spec/level-zero/latest/core/PROG.html#device-hierarchy) model.
# Recommendation