Skip to content

fix: reject empty kernel list in span helper - #22

Open
andrewwhitecdw wants to merge 1 commit into
NVIDIA:mainfrom
andrewwhitecdw:codequality/cupti-utils-reject-empty-kernel-list-in-span-helper
Open

fix: reject empty kernel list in span helper#22
andrewwhitecdw wants to merge 1 commit into
NVIDIA:mainfrom
andrewwhitecdw:codequality/cupti-utils-reject-empty-kernel-list-in-span-helper

Conversation

@andrewwhitecdw

Copy link
Copy Markdown

This PR addresses the following issue in src/sol_execbench/core/bench/cupti_utils.py: reject empty kernel list in span helper.

Changes

  • src/sol_execbench/core/bench/cupti_utils.py: reject empty kernel list in span helper.

Details

--- a/src/sol_execbench/core/bench/cupti_utils.py
+++ b/src/sol_execbench/core/bench/cupti_utils.py
@@ -1,4 +1,6 @@
-def _kernel_activity_span(kernels: list[CuptiKernelInfo]) -> float:
-    return max(kernel.end for kernel in kernels) - min(
-        kernel.start for kernel in kernels
-    )
+def _kernel_activity_span(kernels: list[CuptiKernelInfo]) -> float:
+    if not kernels:
+        raise ValueError("kernels must contain at least one CUPTI activity")
+    return max(kernel.end for kernel in kernels) - min(
+        kernel.start for kernel in kernels
+    )

Tests

  • tests/core/bench/test_cupti_utils.py
--- /dev/null
+++ b/tests/core/bench/test_cupti_utils.py
@@ -0,0 +1,41 @@
+# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+
+"""Tests for CUPTI utility helpers."""
+
+import unittest
+
+from cupti import cupti
+from sol_execbench.core.bench.cupti_utils import CuptiKernelInfo, _kernel_activity_span
+
+
+class KernelActivitySpanTests(unittest.TestCase):
+    def _make_kernel(self, name, start, end):
+        return CuptiKernelInfo(
+            name=name,
+            start=start,
+            end=end,
+            correlation_id=0,
+            copy_kind=0,
+            bytes=0,
+            value=0,
+            kind=cupti.ActivityKind.CONCURRENT_KERNEL,
+            _activity=None,
+        )
+
+    def test_empty_list_raises(self):
+        with self.assertRaisesRegex(
+            ValueError, "kernels must contain at least one CUPTI activity"
+        ):
+            _kernel_activity_span([])
+
+    def test_span_from_window(self):
+        kernels = [
+            self._make_kernel("a", start=1.0, end=3.0),
+            self._make_kernel("b", start=2.0, end=5.0),
+        ]
+        self.assertAlmostEqual(_kernel_activity_span(kernels), 4.0)
+
+
+if __name__ == "__main__":
+    unittest.main()

Contributor guidelines

Per this repo's CONTRIBUTING.md:

  • All commits are signed off (Signed-off-by trailer, DCO).

Signed-off-by: andrewwhitecdw <andrewwhitecdw@users.noreply.github.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