Skip to content

Q.fill() improvements fail on gen12 #13787

@keyradical

Description

@keyradical

Describe the bug

When trying to make implementation of Q.fill() to use piextUSMEnqueueFill in this PR: #13788, the sycl/test-e2e/out_of_order_queue_status.cpp failed on the post-commit CI, on gen12:

FAIL: SYCL :: Basic/out_of_order_queue_status.cpp (293 of 2065)
******************** TEST 'SYCL :: Basic/out_of_order_queue_status.cpp' FAILED ********************
Exit Code: -11

Command Output (stdout):
--
# RUN: at line 1
/__w/llvm/llvm/toolchain/bin//clang++   -fsycl -fsycl-targets=spir64  /__w/llvm/llvm/llvm/sycl/test-e2e/Basic/out_of_order_queue_status.cpp -o /__w/llvm/llvm/build-e2e/Basic/Output/out_of_order_queue_status.cpp.tmp.out
# executed command: /__w/llvm/llvm/toolchain/bin//clang++ -fsycl -fsycl-targets=spir64 /__w/llvm/llvm/llvm/sycl/test-e2e/Basic/out_of_order_queue_status.cpp -o /__w/llvm/llvm/build-e2e/Basic/Output/out_of_order_queue_status.cpp.tmp.out
# note: command had no output on stdout or stderr
# RUN: at line 2
env ONEAPI_DEVICE_SELECTOR=level_zero:gpu  /__w/llvm/llvm/build-e2e/Basic/Output/out_of_order_queue_status.cpp.tmp.out
# executed command: env ONEAPI_DEVICE_SELECTOR=level_zero:gpu /__w/llvm/llvm/build-e2e/Basic/Output/out_of_order_queue_status.cpp.tmp.out
# .---command stderr------------
# | out_of_order_queue_status.cpp.tmp.out: /__w/llvm/llvm/llvm/sycl/test-e2e/Basic/out_of_order_queue_status.cpp:16: void CheckArray(int *, size_t, int): Assertion `x[i] == expected' failed.
# | *** longjmp causes uninitialized stack frame ***: terminated
# | *** longjmp causes uninitialized stack frame ***: terminated
# | *** longjmp causes uninitialized stack frame ***: terminated
# | *** longjmp causes uninitialized stack frame ***: terminated
# | *** longjmp causes uninitialized stack frame ***: terminated
...

The failure is very hard to reproduce since it only fails randomly on Intel(R) Iris(R) Xe Graphics. I managed to reproduce it a few times only with a fresh build and laptop reboot, running all e2e tests for both level_zero:gpu and opencl:fpga which is how the post-commit CI does it.

For now, for level_zero target, the path to piextUSMEnqueueFill was reverted due to this failure and workaround was implemented to use previous implementation of Q.fill() in #13788.

DPC++ build configuration:

python ../llvm/buildbot/configure.py -t Release --ci-defaults --shared-libs --no-assertions \
 --cmake-opt="-DSYCL_ENABLE_STACK_PRINTING=ON" \
 --cmake-opt="-DSYCL_LIB_WITH_DEBUG_SYMBOL=ON" \
 --cmake-opt="-DLLVM_INSTALL_UTILS=ON" \
 --cmake-opt="-DNATIVECPU_USE_OCK=Off" \
 --cmake-opt="-DSYCL_PI_TESTS=OFF" \
-o ./

Environment

OS: Linux
Target device and vendor: Intel(R) Iris(R) Xe Graphics
DPC++ commit: c173fbf
sycl-ls --verbose:

Platform [#4]:
    Version  : 1.3
    Name     : Intel(R) Level-Zero
    Vendor   : Intel(R) Corporation
    Devices  : 1
        Device [#0]:
        Type       : gpu
        Version    : 1.3
        Name       : Intel(R) Iris(R) Xe Graphics
        Vendor     : Intel(R) Corporation
        Driver     : 1.3.29138

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions