[OpaquePointers] Fix SYCL end-to-end tests with enabled opaque pointers.
Following 7 tests are failing due to issues related to opaque pointers support. See https://github.com/intel/llvm/pull/9828.
~sycl/test-e2e/BFloat16/bfloat16_conversions.cpp~ Enabled by https://github.com/intel/llvm/pull/13695.
~sycl/test-e2e/BFloat16/bfloat16_type.cpp~ Enabled by https://github.com/intel/llvm/pull/13695.
sycl/test-e2e/BFloat16/bfloat16_vec.cpp
~sycl/test-e2e/DeviceLib/string_test.cpp~ Enabled by https://github.com/intel/llvm/pull/13695.
~sycl/test-e2e/ESIMD/ext_math.cpp~ Fixed by https://github.com/intel/llvm/pull/10848
~sycl/test-e2e/KernelFusion/internalize_array_wrapper.cpp~ Fixed by https://github.com/intel/llvm/pull/10882.
~sycl/test-e2e/Reduction/reduction_usm.cpp~ Enabled by https://github.com/intel/llvm/pull/13695.
sycl/test-e2e/Regression/local-arg-align.cpp
We need to investigate these failures and re-enable execution with enabled opaque pointers.
@stdale-intel, could you find someone to investigate failures for these tests (we have owners for other two tests):
- sycl/test-e2e/BFloat16/bfloat16_conversions.cpp
- sycl/test-e2e/BFloat16/bfloat16_type.cpp
- sycl/test-e2e/DeviceLib/string_test.cpp
- sycl/test-e2e/Reduction/reduction_usm.cpp - fails only on Windows.
- sycl/test-e2e/Regression/local-arg-align.cpp
First three tests are failing only on CPU device with the same error message: __devicelib_ConvertBF16ToFINTEL [passing parameter 1 with incompatible type], so I think the root cause is the same for all three tests.
@cperkinsintel and @againull will help
I can try looking at sycl/test-e2e/BFloat16/bfloat16_conversions.cpp sycl/test-e2e/BFloat16/bfloat16_type.cpp if no one else is looking.
Thanks
So looking at bfloat16_conversions.cpp, one difference is that the current SYCL branch compiles 4 SPIR-V kernels, but the OpaquePointers branch only compiles 3. The SYCL branch generates two SPIR-V entrypoints:
typeinfo name for test_device<sycl::_V1::detail::half_impl::half>(sycl::_V1::queue)::{lambda(sycl::_V1::handler&)#1}::operator()(sycl::_V1::handler&) const::{lambda()#1}
and
typeinfo name for test_device<float>(sycl::_V1::queue)::{lambda(sycl::_V1::handler&)#1}::operator()(sycl::_V1::handler&) const::{lambda()#1}
but with OpaquePointers, only that second one is created. So the kernel for half is absent. There are minor differences between the two matching float kernels, but difficult to assess how important. I'm guessing the missing half one might be a clue?
sycl/test-e2e/KernelFusion/internalize_array_wrapper.cpp is addressed in #10882.
@asudarsa, @cperkinsintel, do you have any updates?
Let me take a look at this today.
Thanks
@asudarsa, @cperkinsintel, do you have any updates?
Hi @bader Sorry for the long delay. We are looking at this now and will provide an update soon.
Thanks
@asudarsa, I think @steffenlarsen already updated all these tests. @steffenlarsen, am I right?
https://github.com/intel/llvm/pull/13695 aims to enable all but sycl/test-e2e/Regression/local-arg-align.cpp on Gen12.
The failure in local-arg-align occurs on DG2 as well. As such, I suspect it working on other platforms is just coincidence. https://github.com/intel/llvm/pull/14602 disables the test again until it can be investigated.
As such, I suspect it working on other platforms is just coincidence.
AFAIK, the problem is in SPIR-V -> LLVM translator used by Intel GPU compiler. Non-Intel devices (e.g. AMD and NVIDIA) devices should not be affected.
@steffenlarsen, https://github.com/intel/llvm/pull/16616 should have a fix for sycl/test-e2e/Regression/local-arg-align.cpp. Could you please verify and re-enable the test, please?
I just merged the above PR with the driver update, so you can take any action needed now.
Sure, let's give it a go!
It looks like the issue persists on PVC and Gen12: https://github.com/intel/llvm/actions/runs/12787805614/job/35648078378?pr=16643
Thanks! I already re-opened my old PR - https://github.com/intel/llvm/pull/13783.
I think your PR failed because it was tested before we updated IGC.
I'm going to merge https://github.com/intel/llvm/pull/13783 as it keeps the test disabled on Windows. We need GPU driver update on Windows systems as well. I'll try to find the driver version with the fix.
https://github.com/intel/llvm/pull/17143 attempts to enable sycl/test-e2e/BFloat16/bfloat16_vec.cpp