Skip to content

Commit 116a99e

Browse files
committed
fix: guard SM90 fused logp label indexing
Signed-off-by: Dnoob <dxpouo@gmail.com>
1 parent 5276508 commit 116a99e

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

‎csrc/cuda/fused_logp_sm90.cu‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Copyright (c) 2026 RL-Kernel Contributors
33

44
#include "../utils/tma_utils.cuh"
5+
#include <cstdint>
56
#include <math_constants.h>
67
#include <torch/extension.h>
78
#include <tuple>
@@ -140,8 +141,13 @@ __global__ void fused_logp_online_tma_kernel(
140141
logsum_out[row_idx] = log_sum;
141142
}
142143
int label_idx = labels[row_idx];
143-
float label_val = __bfloat162float(logits_gmem[row_idx * vocab_size + label_idx]);
144-
output_logp[row_idx] = label_val - row_max - log_sum;
144+
if (label_idx >= 0 && label_idx < vocab_size) {
145+
int64_t label_offset = static_cast<int64_t>(row_idx) * vocab_size + label_idx;
146+
float label_val = __bfloat162float(logits_gmem[label_offset]);
147+
output_logp[row_idx] = label_val - row_max - log_sum;
148+
} else {
149+
output_logp[row_idx] = 0.0f;
150+
}
145151
}
146152
}
147153
}

‎tests/test_fused_logp_backward.py‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,18 @@ def test_partial_last_tile_matches_reference(self):
459459
rtol=1e-5,
460460
)
461461

462+
def test_invalid_labels_return_zero(self):
463+
logits, token_ids = _make_inputs(4, 520, dtype=torch.bfloat16, seed=5)
464+
labels = token_ids.to(torch.int32)
465+
labels[0] = -1
466+
labels[1] = logits.size(1)
467+
468+
logp, _, _ = _C.fused_logp_sm90_with_lse(logits, labels)
469+
assert torch.equal(logp[:2], torch.zeros_like(logp[:2]))
470+
471+
ref = selected_logprobs_reference(logits, token_ids)
472+
assert torch.allclose(logp[2:], ref[2:], atol=1e-3, rtol=1e-5)
473+
462474
def test_unaligned_row_stride_uses_generic_fallback(self, monkeypatch):
463475
from rl_engine.kernels.ops.cuda.loss.logp import FusedLogpSM90Op
464476

0 commit comments

Comments
 (0)