[SYCL] Improve SYCL_DEVICE_ALLOWLIST#3826
Conversation
This patch adds more stability to SYCL_DEVICE_ALLOWLIST: 1. Introduce 3 new keys `BackendName`, `DeviceType` and `DeviceVendorId` which should be used instead of `DeviceName` and `PlatformName`. These 3 new keys are more stable. 2. Refactor the implementation of SYCL_DEVICE_ALLOWLIST to make it more stable, to fix std::bad_alloc crash, and to make the code testable 3. Add unit tests for parsing SYCL_DEVICE_ALLOWLIST value and for functionality which allows device to use or reject it.
|
Working on fixing Jenkins/Precommit. |
| "BackendName:level_zero,SomeUnsupportedKey:gpu"); | ||
| } catch (sycl::runtime_error const &e) { | ||
| EXPECT_EQ(e.what(), std::string("Unrecognized key in SYCL_DEVICE_ALLOWLIST " | ||
| "-30 (CL_INVALID_VALUE)")); |
There was a problem hiding this comment.
Why "-30 (CL_INVALID_VALUE)"?
Looks like some error code is mapped to OpenCL specific enumeration. The reason is unclear.
There was a problem hiding this comment.
Yes, AFAIS, this is a common situation in RT right now: there is no RT-only error codes, so everywhere in the code, even for non-backend related things, PI_ error codes are used, which are casted to CL_ error codes.
There was a problem hiding this comment.
This is very annoying bug, which we should fix sooner rather than later.
Please, make sure it's addressed separately.
There was a problem hiding this comment.
Will create a tracker. @vladimirlaz, as you work closely to SYCL2020 exceptions, do you see this issue be reproducible? (showing PI_*** or CL_*** after throwing any exception)
|
Failures in Jenkins/Precommit should gone after intel/llvm-test-suite#304 |
|
Overall patch looks good to me, just several minor comments |
|
@dm-vodopyanov, please, fix post-commit fails in "no-assertions" configuration. |
* sycl: (320 commits) [SYCL] Silence a "local variable is initialized but not referenced" warning; NFC (intel#3870) [SYCL] Improve SYCL_DEVICE_ALLOWLIST (intel#3826) [SPIR-V] Change return value of mapType function (intel#3871) [SYCL] Fix post-commit failure in handler.hpp from unused-parameters. (intel#3874) [Driver][SYCL] Do not imply defaultlib msvcrt for Linux based driver on Windows (intel#3827) [SYCL] Unique stable name rebase (intel#3835) [SYCL] Align behavior of empty command groups with SYCL2020 (intel#3822) [SYCL][ESIMD] Make typenames and constants consistent with SYCL API style. (intel#3850) [SYCL] Allow __failed_assertion to support libstdc++-11 (intel#3774) [SYCL] Refactor stream class handing implementation (intel#3646) [SYCL] Fix syntax error introduced in intel#3401 (intel#3861) [SYCL] SYCL 2020 sub_group algorithms (intel#3786) [Buildbot][NFC] Add option to use LLD as linker (intel#3866) Revert "Emit correct location lists with basic block sections." [SPIRITTAnnotations] Fix debug info for ITT calls. (intel#3829) [SYCL][Doc] Fix build of Sphinx docs (intel#3863) [SYCL][FPGA][NFC] Tidy up intel_fpga_reg codegen test (intel#3810) [CODEOWNERS] Fix SPIRITTAnnnotations tests ownership (intel#3859) [SYCL][ESIMD] Host-compile simd.cpp test, fix errors & warnings. (intel#3846) [SYCL] Store pointers to memory allocations instead of iterators (intel#3860) ...
…3826) Deduce storage class memory semantic from the pointer accessed by atomic intrinsics Inspired by llvm/llvm-project#193696, llvm/llvm-project#195049 Original commit: KhronosGroup/SPIRV-LLVM-Translator@0a6abf0df14b2f0
This patch adds more stability to SYCL_DEVICE_ALLOWLIST:
Introduce 3 new keys
BackendName,DeviceTypeandDeviceVendorIdwhich should be used instead ofDeviceNameandPlatformName. These 3 new keys are more stable.Refactor the implementation of SYCL_DEVICE_ALLOWLIST to
std::bad_alloccrashAdd unit tests for parsing SYCL_DEVICE_ALLOWLIST value and for
functionality which allows device to be accepted or to be rejected.