Skip to content

Declare-at-init and structured bindings in XPU kernels#4431

Open
cyyever wants to merge 1 commit into
intel:mainfrom
cyyever:agent/xpu-declare-at-init
Open

Declare-at-init and structured bindings in XPU kernels#4431
cyyever wants to merge 1 commit into
intel:mainfrom
cyyever:agent/xpu-declare-at-init

Conversation

@cyyever

@cyyever cyyever commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Non-behavioral readability cleanup of the XPU SYCL kernels:

  • Merge declarations with their initialization (declare-at-init) and convert
    std::tie(...) = f() to structured bindings.
  • Rewrite topk's two-way if/else buffer selection as ternary initializers.
  • Remove two unused local tensors in batch_norm_stats.

No runtime effect. The structured-binding captures rely on C++20 (the build sets
CMAKE_CXX_STANDARD 20).

Test: none (non-behavioral; covered by existing test/xpu op tests -- topk,
batch_norm, embedding_bag, index_select, layer_norm, group_norm, max_pool2d)

Authored with the assistance of Claude, an AI coding assistant.

Tidy up locals that were declared bare (or assigned via std::tie) and then set
exactly once, unconditionally: merge each declaration with its initializer and
convert std::tie(...) = f() to structured bindings. In topk, rewrite the
two-way if/else assignments for self_/values_/indices_ as ternary initializers
so the tensors are declared at their initialization point. Also remove two
unused local tensors (dummy_mean_/dummy_var_) in batch_norm_stats_template.

Three of the structured-binding conversions (Indexing.cpp x2 and the
EmbeddingBag per_sample_weights backward) bind values that are later captured by
AT_DISPATCH [&] lambdas. That relies on C++20 (P1091R3) permitting capture of
structured bindings, which the build uses: PyTorch sets CMAKE_CXX_STANDARD 20.

Test Plan:
Non-behavioral cleanup. lintrunner (clang-format) reports no issues on the
changed files. A full XPU build and the relevant op tests (pytest
test/xpu/test_ops_xpu.py for dropout, layer_norm, group_norm, embedding_bag,
index_select, topk, batch_norm, max_pool2d) require an Intel GPU and were not
run in this environment.

Authored with the assistance of Claude, an AI coding assistant.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant