intel / intel/llvm

[SYCL] Reduce per-header compile time by decomposing info_desc.hpp umbrella

Open
#22,182 0 comments 0 reactions 1 assignee Claimed by @koparasy View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.