Skip to content

[Tile] Add new tile test mode - #10540

Merged
miscco merged 1 commit into
NVIDIA:mainfrom
miscco:tile_test_mode
Aug 3, 2026
Merged

[Tile] Add new tile test mode#10540
miscco merged 1 commit into
NVIDIA:mainfrom
miscco:tile_test_mode

Conversation

@miscco

@miscco miscco commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

The current testing is not sufficient. We need to test classical SIMT with --enable-tile and also --enable-tile within a tile program

For the latter there is now CCCL_FORCE_TILE_TESTS which changes lit to build a __tile_global__ kernel

Also universally add --enable-tile to the cccl compile options so that we can ensure that all projects are build with it

@miscco
miscco requested review from a team as code owners July 30, 2026 06:34
@miscco
miscco requested a review from Jacobfaib July 30, 2026 06:34
@github-project-automation github-project-automation Bot moved this to Todo in CCCL Jul 30, 2026
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added an option to force tile-enabled test configurations.
    • Automatically enables tile support for builds and test runs when selected.
    • Tile-related tests now recognize and follow the forced-tile setting.
  • Bug Fixes

    • Added validation for inconsistent tile test configurations.
    • Improved tile-specific compilation so attributes and macros are applied only when appropriate.
    • Ensured forced tile settings remain consistent across build, test configuration, and test execution.

Walkthrough

Changes

The build adds CCCL_FORCE_TILE_TESTS, propagates it through libcudacxx test configuration, applies tile compiler settings, validates macro consistency, and exposes a Lit feature for forced tile tests.

Tile test configuration

Layer / File(s) Summary
Build tile enablement
CMakeLists.txt, cmake/CCCLBuildCompilerTargets.cmake
Adds CCCL_FORCE_TILE_TESTS, uses it as the default for CCCL_ENABLE_TILE, and appends --enable-tile when tile support is enabled.
libcudacxx test propagation
libcudacxx/cmake/LibcudacxxBuildCompilerTargets.cmake, libcudacxx/test/libcudacxx/CMakeLists.txt, libcudacxx/test/libcudacxx/lit.site.cfg.in, libcudacxx/test/utils/libcudacxx/test/config.py
Propagates the force option as a compile definition and Lit configuration value. Registers the force-tile feature.
Tile harness behavior
libcudacxx/test/libcudacxx/force_include.h, libcudacxx/test/utils/libcudacxx/test/config.py
Rejects inconsistent tile macros and gates tile attributes on both macros. The configuration file also reformats existing setup and diagnostic code.

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
CMakeLists.txt (1)

71-74: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

suggestion: Add an end-to-end forced-tile configuration test. This contract spans CMake, generated Lit configuration, compiler definitions, and __tile_global__ selection; test both forced and non-forced configurations. As per coding guidelines, changes should be validated with targeted builds and tests.

Source: Coding guidelines

libcudacxx/test/libcudacxx/force_include.h (1)

20-22: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

suggestion: Keep preprocessor annotations synchronized with their conditions. The comments omit defined(...) and/or the CCCL_FORCE_TILE_TESTS conjunct, so they describe different conditions than the code. Based on learnings, annotated #else/#endif branches must repeat the exact condition text from the corresponding #if.

Also applies to: 52-64, 138-141

Source: Learnings


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 58f934a5-5218-4773-8e1d-6814b3bf114d

📥 Commits

Reviewing files that changed from the base of the PR and between db07949 and 5c1f692.

📒 Files selected for processing (7)
  • CMakeLists.txt
  • cmake/CCCLBuildCompilerTargets.cmake
  • libcudacxx/cmake/LibcudacxxBuildCompilerTargets.cmake
  • libcudacxx/test/libcudacxx/CMakeLists.txt
  • libcudacxx/test/libcudacxx/force_include.h
  • libcudacxx/test/libcudacxx/lit.site.cfg.in
  • libcudacxx/test/utils/libcudacxx/test/config.py

@cccl-authenticator-app cccl-authenticator-app Bot moved this from Todo to In Review in CCCL Jul 30, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
libcudacxx/test/libcudacxx/force_include.h (1)

20-22: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

suggestion: Keep preprocessor branch annotations exact.

Line 22 and Lines 142-144 omit parts of their corresponding #if conditions, including defined(...) and CCCL_FORCE_TILE_TESTS. Update each #else/#endif annotation to repeat the exact condition text.

Based on learnings, annotated preprocessor branch comments must repeat the corresponding condition verbatim.

Also applies to: 140-144

Source: Learnings


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 3e9ed72c-dd3c-4d38-8634-2b8a19fe684c

📥 Commits

Reviewing files that changed from the base of the PR and between 5c1f692 and b64513e.

📒 Files selected for processing (7)
  • CMakeLists.txt
  • cmake/CCCLBuildCompilerTargets.cmake
  • libcudacxx/cmake/LibcudacxxBuildCompilerTargets.cmake
  • libcudacxx/test/libcudacxx/CMakeLists.txt
  • libcudacxx/test/libcudacxx/force_include.h
  • libcudacxx/test/libcudacxx/lit.site.cfg.in
  • libcudacxx/test/utils/libcudacxx/test/config.py
🚧 Files skipped from review as they are similar to previous changes (2)
  • libcudacxx/test/libcudacxx/CMakeLists.txt
  • libcudacxx/test/utils/libcudacxx/test/config.py

@miscco

miscco commented Jul 30, 2026

Copy link
Copy Markdown
Contributor Author

pre-commit.ci autofix

@miscco
miscco enabled auto-merge (squash) July 30, 2026 09:06
@github-actions

This comment has been minimized.

@jrhemstad

Copy link
Copy Markdown
Collaborator

@miscco please ensure that this PR is linked to an appropriate issue in #8086. There are already 2 relevant issues on this topic. Please either update one of those or create a new one.

Comment thread CMakeLists.txt Outdated
Comment thread libcudacxx/test/libcudacxx/force_include.h
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

The current testing is not sufficient. We need to test classical SIMT with `--enable-tile` and also `--enable-tile` within a tile program
@github-actions

This comment has been minimized.

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

⏱️ CCCL compile-time benchmark comparison: Public headers compile-time bench

Result: 2 regression row(s), 4 improvement row(s) above threshold.

Run Value
Config public-headers-gcc13
Baseline origin/main
Preset all-dev
Targets cub.headers.base, thrust.cpp.cuda.headers.base, libcudacxx.test.public_headers
GPU / launch args rtx2080 / --cuda 13.3 --host gcc13

Artifacts: reports and traces

Direct file processing

-f file-processing exclusive --sort total

🔴 Direct file processing — Regressions
Rank Regression impact Selected Δ Baseline Current Event Matched traces
1 0.273872 0.273872 11.335505 11.609377 Processing Header File: libcudacxx/include/cuda/std/__type_traits/type_list.h 475
2 0.220949 0.220949 5.514983 5.735932 Processing Header File: libcudacxx/include/cuda/std/__iterator/iterator_traits.h 463
🟢 Direct file processing — Improvements
Rank Improvement impact Selected Δ Baseline Current Event Matched traces
1 1.234938 -1.234938 9.440576 8.205638 Processing Header File: libcudacxx/include/cuda/std/__cccl/prologue.h 548
2 0.558198 -0.558198 3.469345 2.911147 Processing Header File: libcudacxx/include/cuda/std/__cccl/epilogue.h 548
3 0.222234 -0.222234 20.175812 19.953578 Processing Header File: libcudacxx/include/cuda/__device/physical_device.h 94
4 0.213969 -0.213969 7.621734 7.407765 Processing Header File: cub/cub/util_type.cuh 278

@davebayer davebayer left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@github-actions

This comment has been minimized.

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

🥳 CI Workflow Results

🟩 Finished in 3h 33m: Pass: 100%/504 | Total: 5d 02h | Max: 2h 05m | Hits: 89%/1670405

See results here.

@miscco
miscco merged commit 9a2e3ff into NVIDIA:main Aug 3, 2026
1051 of 1054 checks passed
@miscco
miscco deleted the tile_test_mode branch August 3, 2026 14:51
@github-project-automation github-project-automation Bot moved this from In Review to Done in CCCL Aug 3, 2026
davebayer pushed a commit to davebayer/cccl that referenced this pull request Aug 4, 2026
The current testing is not sufficient. We need to test classical SIMT with `--enable-tile` and also `--enable-tile` within a tile program
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

Verify existing tests do not break when compiled with --enable-tile

4 participants