Skip to content

[Tile] Mark more fpemu as host device only - #10707

Merged
miscco merged 1 commit into
NVIDIA:mainfrom
miscco:tile_fpemu2
Aug 7, 2026
Merged

[Tile] Mark more fpemu as host device only#10707
miscco merged 1 commit into
NVIDIA:mainfrom
miscco:tile_fpemu2

Conversation

@miscco

@miscco miscco commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

We cannot use asm in tile mode

We cannot use asm in tile mode
@miscco
miscco requested a review from a team as a code owner August 7, 2026 10:24
@miscco
miscco requested a review from gevtushenko August 7, 2026 10:24
@github-project-automation github-project-automation Bot moved this to Todo in CCCL Aug 7, 2026
@cccl-authenticator-app cccl-authenticator-app Bot moved this from Todo to In Review in CCCL Aug 7, 2026
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: cc127bb6-c3ea-4e79-933c-de51e8ffba3d

📥 Commits

Reviewing files that changed from the base of the PR and between 10d2278 and 8faecdb.

📒 Files selected for processing (25)
  • libcudacxx/include/cuda/__fp/fpmp.h
  • libcudacxx/include/cuda/__fp/fpmp_impl.h
  • libcudacxx/include/cuda/__fp/fpmp_impl_cmp.h
  • libcudacxx/include/cuda/__fp/fpmp_impl_cvt.h
  • libcudacxx/include/cuda/__fp/fpmp_impl_divsqrt.h
  • libcudacxx/include/cuda/__fp/fpmp_impl_muladd.h
  • libcudacxx/include/cuda/__fp/fpmp_limits.h
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/accuracy.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/accuracy_conv.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/accuracy_mixed.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/api.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/atomic_dd.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/atomic_ff.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/cast.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/charbool.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/copyable.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/cross_prec.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/fpemu_interop.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/int.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/limits.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/lut.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/reduce.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/shfl.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/unary.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/volatile.pass.cpp

📝 Walkthrough

Summary by CodeRabbit

  • Enhancements

    • Expanded host and device compilation support across extended-precision floating-point constructors, conversions, arithmetic, comparisons, math operations, atomics, shuffles, and numeric limits.
    • Existing function signatures, calculations, and conversion behavior remain unchanged.
  • Tests

    • Updated validation coverage to exercise functionality in both host and device contexts.
    • Clarified unsupported tile-based compilation scenarios and associated diagnostics.

Walkthrough

Changes

fpmp public and internal declarations now use _CCCL_HOST_DEVICE_API. fpmp tests now instantiate host/device paths and mark incompatible force-tile configurations as unsupported.

fpmp API migration

Layer / File(s) Summary
Public fpmp2 contracts
libcudacxx/include/cuda/__fp/fpmp.h
Constructors, conversions, operators, arithmetic helpers, math functions, and forwarding overloads use host/device API decorators.
Internal arithmetic and conversion helpers
libcudacxx/include/cuda/__fp/fpmp_impl*.h, libcudacxx/include/cuda/__fp/fpmp_limits.h
Internal fp32/fp64 helpers, comparisons, conversions, division, square-root, multiply-add operations, and numeric limits use host/device API decorators.
Host/device test entry points
libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/*.pass.cpp
fpmp test helpers and entry points use host/device test annotations.
Force-tile test exclusions
libcudacxx/test/libcudacxx/cuda/fp/units/fpmp/*.pass.cpp
Tests document and exclude force-tile configurations that reject host/device calls from tile code.

Possibly related PRs

  • NVIDIA/cccl#10543: Retags separate CUDA atomic functions and tests for host/device execution.

Suggested reviewers: gevtushenko, jacobfaib, griwes


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

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

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

Result: 0 regression row(s), 7 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

TU total compilation

-f total-compilation inclusive --sort total

🟢 TU total compilation — Improvements
Rank Improvement impact Selected Δ Baseline Current Event Matched traces
1 3.045204 -3.045204 9.244492 6.199288 Total Compilation Time: cub/block/specializations/block_reduce_warp_reductions.cuh 1

Direct file processing

-f file-processing exclusive --sort total

🟢 Direct file processing — Improvements
Rank Improvement impact Selected Δ Baseline Current Event Matched traces
1 1.023092 -1.023092 9.537031 8.513939 Processing Header File: libcudacxx/include/cuda/std/__cccl/prologue.h 550
2 0.877442 -0.877442 20.339446 19.462004 Processing Header File: libcudacxx/include/cuda/__device/physical_device.h 94
3 0.567388 -0.567388 3.420610 2.853222 Processing Header File: libcudacxx/include/cuda/std/__cccl/epilogue.h 550
4 0.526731 -0.526731 11.017288 10.490557 Processing Header File: libcudacxx/include/cuda/std/__iterator/concepts.h 437
5 0.310734 -0.310734 5.668859 5.358125 Processing Header File: libcudacxx/include/cuda/std/__iterator/iterator_traits.h 464
6 0.292581 -0.292581 11.335623 11.043042 Processing Header File: libcudacxx/include/cuda/std/__type_traits/type_list.h 477

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

🥳 CI Workflow Results

🟩 Finished in 1h 36m: Pass: 100%/115 | Total: 2d 16h | Max: 1h 36m | Hits: 95%/345800

See results here.

@miscco
miscco enabled auto-merge (squash) August 7, 2026 12:05
@miscco
miscco merged commit 937859b into NVIDIA:main Aug 7, 2026
142 checks passed
@miscco
miscco deleted the tile_fpemu2 branch August 7, 2026 12:22
@github-project-automation github-project-automation Bot moved this from In Review to Done in CCCL Aug 7, 2026
akolesov-nvidia added a commit to akolesov-nvidia/cccl that referenced this pull request Aug 7, 2026
The arithmetic side was handled upstream in NVIDIA#10707; this does the same
for what this PR adds: host-device decorations in the fpmp_math headers
and the force-tile marker on the new tests.
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.

2 participants