Replace the __sycl_tgt_bin_desc/__sycl_tgt_device_image-based fat binary registration with a simpler OffloadBinary-native approach: - __sycl_register_lib/__sycl_unregister_lib now take (BinaryStart, Size) instead of a __sycl_tgt_bin_desc pointer; __sycl_unregister_lib only needs BinaryStart since the runtime looks up the binary by its start address. - OffloadWrapper's SYCL wrapping is significantly simplified: the __tgt_bin_desc/__tgt_device_image structs and the descriptor construction code are replaced by a single embedded OffloadBinary blob passed directly to the register/unregister entry points. - clang-sycl-linker generates a single OffloadBinary, which contains multiple images. - ProgramAndKernelManager::registerFatBin parses the blob via OffloadBinary::create, keying MDeviceImageManagers by BinaryStart to eliminate the reparse on unregister. - DeviceImageManager owns std::unique_ptr<OffloadBinary> instead of borrowing a __sycl_tgt_device_image pointer; getRawData renamed to getOffloadBinary. - Introduce forEachSymbol and SymbolTable serialization (writeSymbolTable/ SymbolTableHeader/SymbolTableEntry) in Utility.h to expose the kernel symbol table embedded in the OffloadBinary "symbols" section for consumption by the SYCL runtime. - device_binary_structures.hpp reduced to DeviceBinaryTripleSPIRV64. Co-Authored-By: Claude
SYCL runtime library
The libsycl subproject is an implementation of the SYCL runtime library as defined by the SYCL 2020 specification.
Subproject documentation is available at: Libsycl documentation.
libsycl runtime library and headers require C++17 support or higher.
How to use libsycl with Clang
TODO
How to build
TODO
License
See LICENSE for details.