[SYCL] Reduce per-header compile time by decomposing info_desc.hpp umbrella
- Dominant language
- LLVM
- Stars
- 1.5k
- Forks
- 854
- Avg merge
- 3d 17h
- Merged PRs (30d)
- 137
Description
## Problem
`khr/split_headers/*` consumers transitively pull
``, a 600+ line broad-header that drags every
`info::*trait + matrix + device_architecture + forward_progress + ...`
into every TU. Per-header isolated `-ftime-trace` numbers below show
`20-47%` of compile cost for several consumers comes from this one
include chain.
## Numbers (Rough estimates through a prototype -ftime-trace)
| Header | Current | Target | Δ |
|---------------------|--------:|-------:|------:|
| event.hpp | 0.96s | 0.51s | -47% |
| accessor.hpp | 1.39s | 0.89s | -36% |
| context.hpp | 1.07s | 0.72s | -33% |
| platform.hpp | 1.05s | 0.77s | -27% |
| device.hpp | 1.04s | 0.81s | -22% |
| handler.hpp | 1.85s | 1.67s | -10% |
| sycl.hpp (umbrella) | 3.90s | 3.88s | 0% |
(`sycl.hpp` unchanged — pulls everything by design.)
## Plan
Three PRs, executed sequentially:
- [x] **PR-A** — Kill .def + macro scaffolding (mechanical, ABI-clean,
~39 files). Self-describing trait structs replace
`__SYCL_PARAM_TRAITS_*` macro families. No compile-time impact;
structural prereq for PR-B. ( #22183 )
- [x] **PR-B** — Split info_desc.hpp into 6 per-class headers
(file-move only, ~7 files). Umbrella stays for back-compat. No
compile-time impact yet. (#22273 )
- [ ] **PR-C** — Dissolve `info_desc_helpers.hpp` + purge umbrella from
20 internal consumers + fix latent aspect canonical-decl bug.
Compile-time wins land here. ~54 files.
Contributor guide
Assessment
This issue has not been assessed yet.