Skip to content

[Core] Add lowest() to platform numeric_limits<float> (issue #3509) - #3621

Open
XFDG wants to merge 1 commit into
NVIDIA:mainfrom
XFDG:fix/float-lowest-3509
Open

XFDG wants to merge 1 commit into
NVIDIA:mainfrom
XFDG:fix/float-lowest-3509

Conversation

@XFDG

@XFDG XFDG commented Sep 13, 2026

Copy link
Copy Markdown

Summary

  • add lowest() to cutlass::platform::numeric_limits<float>
  • cover LinearCombinationClamp<float> on both the host and device in the core functional tests

Problem

LinearCombinationClamp obtains its lower saturation bound from cutlass::platform::numeric_limits<ElementOutput>::lowest(). The float specialization exposes max() but not lowest(), so explicitly instantiating LinearCombinationClamp with a float output fails to compile even though float is part of the class's public template contract.

The new member returns -max(), matching the standard definition of the lowest finite IEEE-754 float while reusing the specialization's existing exact max() encoding.

Validation

Using CUDA 13.1 and -arch=sm_100a on an NVIDIA B200:

  • current main fails to compile the issue reproducer with numeric_limits<float> has no member lowest
  • the fixed source compiles the same host/device probe successfully
  • the probe runs and prints host=2 device=2
  • git diff --check passes

The core regression test uses the existing unary_operator kernel and HostTensor utilities to exercise both compilation paths.

Fixes #3509

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.

LinearCombinationClamp with float output does not compile: platform numeric_limits<float> has no lowest()

1 participant