Compiler sanitizers give you tools to detect bugs and/or errors, including buffer overflows, accessing dangling pointers, using uninitialized memory, and other types of undefined behavior. The compiler sanitizers work with OpenMP* and SYCL*.
System Requirements
- Platform Support: CPU devices and Ponte Vecchio GPUs are supported on Linux*.
- GPU Configuration: This feature supports a Ponte Vecchio GPU card. For the Intel® oneAPI Level Zero (Level Zero) runtime, use the
ZE_AFFINITY_MASK=0 environment variable to set this configuration.
Limitations
Compiler sanitizers have the following limitations:
- Kernel execution is sequential. Concurrent execution is forced into sequential execution when device-side ASan is enabled.
- Device-side ASan may lead to an increase of the usage of private memory, causing a reduction in the maximum workgroup size a kernel can support. In this case, you may encounter a
UR_RESULT_ERROR_INVALID_WORK_GROUP_SIZE error message. To fix this, you need to reduce the SYCL local workgroup size or OpenMP overlay management protocol (OMP) teams.
- A large number of workgroups on a GPU may lead to the device-side ASan skipping an out-of-bound check for private/local memory, as well as device-side MSan skipping uninitialized usage checks for private/local memory.
- OpenMP (C/C++) only supports execution on a GPU device.