From 366ac944f7590a5d627d20936b36dbad7b165c4f Mon Sep 17 00:00:00 2001 From: Trent Nelson Date: Sun, 18 Jan 2026 09:49:41 -0800 Subject: [PATCH 1/7] Implement new launch config facilities via dispatcher. --- numba_cuda/numba/cuda/cext/_dispatcher.cpp | 123 +++++++++++++++++- numba_cuda/numba/cuda/dispatcher.py | 40 ++++-- numba_cuda/numba/cuda/launchconfig.py | 26 ++++ .../cuda/tests/cudapy/test_dispatcher.py | 29 +++++ 4 files changed, 208 insertions(+), 10 deletions(-) create mode 100644 numba_cuda/numba/cuda/launchconfig.py diff --git a/numba_cuda/numba/cuda/cext/_dispatcher.cpp b/numba_cuda/numba/cuda/cext/_dispatcher.cpp index d6d9a304c..fa6f79001 100644 --- a/numba_cuda/numba/cuda/cext/_dispatcher.cpp +++ b/numba_cuda/numba/cuda/cext/_dispatcher.cpp @@ -13,6 +13,81 @@ #include "traceback.h" #include "typeconv.hpp" +static Py_tss_t launch_config_tss_key = Py_tss_NEEDS_INIT; +static const char *launch_config_kw = "__numba_cuda_launch_config__"; + +static int +launch_config_tss_init(void) +{ + if (PyThread_tss_create(&launch_config_tss_key) != 0) { + PyErr_SetString(PyExc_RuntimeError, + "Failed to initialize launch config TLS"); + return -1; + } + return 0; +} + +static PyObject * +launch_config_get_borrowed(void) +{ + return (PyObject *) PyThread_tss_get(&launch_config_tss_key); +} + +static int +launch_config_set(PyObject *obj) +{ + PyObject *old = (PyObject *) PyThread_tss_get(&launch_config_tss_key); + if (obj != NULL) { + Py_INCREF(obj); + } + if (PyThread_tss_set(&launch_config_tss_key, (void *) obj) != 0) { + Py_XDECREF(obj); + PyErr_SetString(PyExc_RuntimeError, + "Failed to set launch config TLS"); + return -1; + } + Py_XDECREF(old); + return 0; +} + +class LaunchConfigGuard { +public: + explicit LaunchConfigGuard(PyObject *value) + : prev(NULL), active(false), requested(value != NULL) + { + if (!requested) { + return; + } + prev = launch_config_get_borrowed(); + Py_XINCREF(prev); + if (launch_config_set(value) != 0) { + Py_XDECREF(prev); + prev = NULL; + return; + } + active = true; + } + + bool failed(void) const + { + return requested && !active; + } + + ~LaunchConfigGuard(void) + { + if (!active) { + return; + } + launch_config_set(prev); + Py_XDECREF(prev); + } + +private: + PyObject *prev; + bool active; + bool requested; +}; + /* * Notes on the C_TRACE macro: * @@ -840,6 +915,7 @@ Dispatcher_cuda_call(Dispatcher *self, PyObject *args, PyObject *kws) PyObject *cfunc; PyThreadState *ts = PyThreadState_Get(); PyObject *locals = NULL; + PyObject *launch_config = NULL; /* If compilation is enabled, ensure that an exact match is found and if * not compile one */ @@ -855,9 +931,26 @@ Dispatcher_cuda_call(Dispatcher *self, PyObject *args, PyObject *kws) goto CLEANUP; } } + if (kws != NULL) { + launch_config = PyDict_GetItemString(kws, launch_config_kw); + if (launch_config != NULL) { + Py_INCREF(launch_config); + if (PyDict_DelItemString(kws, launch_config_kw) < 0) { + Py_DECREF(launch_config); + launch_config = NULL; + goto CLEANUP; + } + if (launch_config == Py_None) { + Py_DECREF(launch_config); + launch_config = NULL; + } + } + } if (self->fold_args) { - if (find_named_args(self, &args, &kws)) + if (find_named_args(self, &args, &kws)) { + Py_XDECREF(launch_config); return NULL; + } } else Py_INCREF(args); @@ -913,6 +1006,11 @@ Dispatcher_cuda_call(Dispatcher *self, PyObject *args, PyObject *kws) } else if (matches == 0) { /* No matching definition */ if (self->can_compile) { + LaunchConfigGuard guard(launch_config); + if (guard.failed()) { + retval = NULL; + goto CLEANUP; + } retval = cuda_compile_only(self, args, kws, locals); } else if (self->fallbackdef) { /* Have object fallback */ @@ -924,6 +1022,11 @@ Dispatcher_cuda_call(Dispatcher *self, PyObject *args, PyObject *kws) } } else if (self->can_compile) { /* Ambiguous, but are allowed to compile */ + LaunchConfigGuard guard(launch_config); + if (guard.failed()) { + retval = NULL; + goto CLEANUP; + } retval = cuda_compile_only(self, args, kws, locals); } else { /* Ambiguous */ @@ -935,6 +1038,7 @@ Dispatcher_cuda_call(Dispatcher *self, PyObject *args, PyObject *kws) if (tys != prealloc) delete[] tys; Py_DECREF(args); + Py_XDECREF(launch_config); return retval; } @@ -1040,10 +1144,23 @@ static PyObject *compute_fingerprint(PyObject *self, PyObject *args) return typeof_compute_fingerprint(val); } +static PyObject * +get_current_launch_config(PyObject *self, PyObject *args) +{ + PyObject *config = launch_config_get_borrowed(); + if (config == NULL) { + Py_RETURN_NONE; + } + Py_INCREF(config); + return config; +} + static PyMethodDef ext_methods[] = { #define declmethod(func) { #func , ( PyCFunction )func , METH_VARARGS , NULL } declmethod(typeof_init), declmethod(compute_fingerprint), + { "get_current_launch_config", (PyCFunction)get_current_launch_config, + METH_NOARGS, NULL }, { NULL }, #undef declmethod }; @@ -1055,6 +1172,10 @@ MOD_INIT(_dispatcher) { if (m == NULL) return MOD_ERROR_VAL; + if (launch_config_tss_init() != 0) { + return MOD_ERROR_VAL; + } + DispatcherType.tp_new = PyType_GenericNew; if (PyType_Ready(&DispatcherType) < 0) { return MOD_ERROR_VAL; diff --git a/numba_cuda/numba/cuda/dispatcher.py b/numba_cuda/numba/cuda/dispatcher.py index aa8fb76be..268c597ed 100644 --- a/numba_cuda/numba/cuda/dispatcher.py +++ b/numba_cuda/numba/cuda/dispatcher.py @@ -55,6 +55,7 @@ import numba.cuda.core.event as ev from numba.cuda.cext import _dispatcher +_LAUNCH_CONFIG_KW = "__numba_cuda_launch_config__" cuda_fp16_math_funcs = [ "hsin", @@ -693,6 +694,8 @@ def __init__(self, dispatcher, griddim, blockdim, stream, sharedmem): self.blockdim = blockdim self.stream = driver._to_core_stream(stream) self.sharedmem = sharedmem + self.pre_launch_callbacks = [] + self.args = None if ( config.CUDA_LOW_OCCUPANCY_WARNINGS @@ -716,19 +719,24 @@ def __init__(self, dispatcher, griddim, blockdim, stream, sharedmem): warn(errors.NumbaPerformanceWarning(msg)) def __call__(self, *args): - return self.dispatcher.call( - args, self.griddim, self.blockdim, self.stream, self.sharedmem - ) + return self.dispatcher.call(args, self) def __getstate__(self): state = self.__dict__.copy() state["stream"] = int(state["stream"].handle) + # Avoid serializing callables that may not be picklable. + state["pre_launch_callbacks"] = [] + state["args"] = None return state def __setstate__(self, state): handle = state.pop("stream") self.__dict__.update(state) self.stream = driver._to_core_stream(handle) + if "pre_launch_callbacks" not in self.__dict__: + self.pre_launch_callbacks = [] + if "args" not in self.__dict__: + self.args = None class CUDACacheImpl(CacheImpl): @@ -1632,16 +1640,30 @@ def __call__(self, *args, **kwargs): # An attempt to launch an unconfigured kernel raise ValueError(missing_launch_config_msg) - def call(self, args, griddim, blockdim, stream, sharedmem): + def call(self, args, launch_config): """ Compile if necessary and invoke this kernel with *args*. """ - if self.specialized: - kernel = next(iter(self.overloads.values())) - else: - kernel = _dispatcher.Dispatcher._cuda_call(self, *args) + griddim = launch_config.griddim + blockdim = launch_config.blockdim + stream = launch_config.stream + sharedmem = launch_config.sharedmem - kernel.launch(args, griddim, blockdim, stream, sharedmem) + launch_config.args = args + try: + if self.specialized: + kernel = next(iter(self.overloads.values())) + else: + kernel = _dispatcher.Dispatcher._cuda_call( + self, *args, **{_LAUNCH_CONFIG_KW: launch_config} + ) + + for callback in launch_config.pre_launch_callbacks: + callback(kernel, launch_config) + + kernel.launch(args, griddim, blockdim, stream, sharedmem) + finally: + launch_config.args = None def _compile_for_args(self, *args, **kws): # Based on _DispatcherBase._compile_for_args. diff --git a/numba_cuda/numba/cuda/launchconfig.py b/numba_cuda/numba/cuda/launchconfig.py new file mode 100644 index 000000000..d3ede6be6 --- /dev/null +++ b/numba_cuda/numba/cuda/launchconfig.py @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause +"""Launch configuration access for CUDA compilation contexts. + +The current launch configuration is populated only during CUDA compilation +triggered by kernel launches. It is thread-local and cleared immediately after +compilation completes. +""" + +from numba.cuda.cext import _dispatcher + + +def current_launch_config(): + """Return the current launch configuration, or None if not set.""" + return _dispatcher.get_current_launch_config() + + +def ensure_current_launch_config(): + """Return the current launch configuration or raise if not set.""" + config = current_launch_config() + if config is None: + raise RuntimeError("No launch config set for this thread") + return config + + +__all__ = ["current_launch_config", "ensure_current_launch_config"] diff --git a/numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py b/numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py index aa837dc1b..f27002e8e 100644 --- a/numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py +++ b/numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py @@ -16,6 +16,7 @@ ) from numba import cuda from numba.cuda import config, types +from numba.cuda import launchconfig from numba.cuda.core.errors import TypingError from numba.cuda.testing import ( cc_X_or_above, @@ -128,6 +129,34 @@ def f(x, y): class TestDispatcher(CUDATestCase): """Most tests based on those in numba.tests.test_dispatcher.""" + @skip_on_cudasim("Dispatcher C-extension not used in the simulator") + def test_launch_config_available_during_compile(self): + @cuda.jit + def f(x): + x[0] = 1 + + seen = {} + orig = f._compile_for_args + + def wrapped(*args, **kws): + seen["config"] = launchconfig.current_launch_config() + return orig(*args, **kws) + + f._compile_for_args = wrapped + + arr = np.zeros(1, dtype=np.int32) + self.assertIsNone(launchconfig.current_launch_config()) + f[1, 1](arr) + + cfg = seen.get("config") + self.assertIsNotNone(cfg) + self.assertIs(cfg.dispatcher, f) + self.assertEqual(cfg.griddim, (1, 1, 1)) + self.assertEqual(cfg.blockdim, (1, 1, 1)) + self.assertIsNone(launchconfig.current_launch_config()) + with self.assertRaises(RuntimeError): + launchconfig.ensure_current_launch_config() + def test_coerce_input_types(self): # Do not allow unsafe conversions if we can still compile other # specializations. From cbdd1aa9009a9aef5e21ac6037c72956b339f365 Mon Sep 17 00:00:00 2001 From: Trent Nelson Date: Mon, 19 Jan 2026 23:50:30 -0800 Subject: [PATCH 2/7] Final touches. --- LAUNCH-CONFIG-CODEX-PROMPT.md | 87 +++++ LAUNCH-CONFIG.md | 93 ++++++ docs/source/reference/kernel.rst | 39 +++ docs/source/user/index.rst | 1 + numba_cuda/numba/cuda/launchconfig.py | 35 +- .../cuda/tests/cudapy/test_dispatcher.py | 18 + pixi.toml | 3 + plots/launch-overhead-abs.png | Bin 0 -> 68463 bytes scripts/bench-launch-overhead.py | 308 ++++++++++++++++++ scripts/plot-launch-overhead.py | 301 +++++++++++++++++ 10 files changed, 884 insertions(+), 1 deletion(-) create mode 100644 LAUNCH-CONFIG-CODEX-PROMPT.md create mode 100644 LAUNCH-CONFIG.md create mode 100644 plots/launch-overhead-abs.png create mode 100644 scripts/bench-launch-overhead.py create mode 100644 scripts/plot-launch-overhead.py diff --git a/LAUNCH-CONFIG-CODEX-PROMPT.md b/LAUNCH-CONFIG-CODEX-PROMPT.md new file mode 100644 index 000000000..441916a45 --- /dev/null +++ b/LAUNCH-CONFIG-CODEX-PROMPT.md @@ -0,0 +1,87 @@ +# Codex Prompt: Launch Config Benchmarking (Baseline vs Contextvar vs V2) + +You are working in the `numba-cuda` repo with three branches/worktrees: +- **baseline**: main (or a specific baseline ref) in `~/src/numba-cuda-main` +- **contextvar**: old implementation in `~/src/numba-cuda` (branch `280-launch-config-contextvar`) +- **v2**: new implementation in `~/src/280-launch-config-v2` (branch `280-launch-config-v2`) + +Your goal is to benchmark CUDA kernel launch overhead across all three. + +## Key Artifacts +- `scripts/bench-launch-overhead.py` (micro-benchmark for launch overhead) +- `scripts/bench-against.py` (two-ref compare helper) +- Pixi tasks in `pixi.toml`: + - `bench-launch-overhead` + - `bench` + - `benchcmp` + - `bench-against` + +## Benchmarks to Run +### A) Launch Overhead Micro-Benchmark (Primary) +Run a three-way comparison using the micro-benchmark script. It measures kernel +launch overhead for 0..4 args and reports mean/stdev and deltas vs baseline. + +From `~/src/280-launch-config-v2`: +```bash +pixi run -e cu-12-9-py312 bench-launch-overhead \ + --repo baseline=$HOME/src/numba-cuda-main \ + --repo contextvar=$HOME/src/numba-cuda \ + --repo v2=$HOME/src/280-launch-config-v2 +``` + +Notes: +- The script will `pip install -e` each repo by default. If you already have + them installed in the active environment, add `--no-install`. +- You can change the Python interpreter with `--python /path/to/python`. +- You can tune loops with `--loops 200000,200000,200000,200000,20000`. +- Use `--output results.json` to save output. + +### B) Broader Benchmarks (Optional) +Use the full pytest benchmark suite for more coverage: + +```bash +pixi run -e cu-12-9-py312 bench +``` + +If you want to compare two refs in a temporary worktree: + +```bash +pixi run -e cu-12-9-py312 bench-against BASELINE_REF PROPOSED_REF +``` + +## Environment Expectations +- GPU available (the micro-benchmark refuses to run under CUDA simulator). +- Use the same CUDA toolkit + driver across all runs. +- Ensure `pixi` env `cu-12-9-py312` (or equivalent) is available. + +## Data to Capture +- Full stdout from `bench-launch-overhead` (table + deltas) +- Optional JSON output for records +- Device info from the benchmark output (GPU name, CC, CUDA runtime version) +- Git SHAs for all three repos + +## Interpretation Guidance +- Focus on delta vs baseline for each arg count. +- Large increases (e.g., +30–50%) are likely unacceptable for the new + implementation if the contextvar branch is already known to be slower. +- If v2 overhead is close to baseline and materially below contextvar, that + supports adopting v2. + +## Cleanup / Reporting +- Summarize results in a short table: + - mean ± stdev for each arg count + - delta vs baseline for each branch +- Note any anomalies (e.g., variance, outliers, or errors) +- If results are noisy, increase repeats or loops and rerun. + +## Troubleshooting +- If you see nvjitlink or compilation failures, verify that the active `pixi` + environment has CUDA toolchain components compatible with the driver. +- If results are all identical, ensure each repo is actually installed (and + not accidentally shadowed by an earlier editable install). Check `pip show + numba-cuda` and `python -c "import numba_cuda,inspect;print(numba_cuda.__file__)"`. + +## Deliverables +- A concise report of the measured overheads and deltas for baseline vs + contextvar vs v2. +- A short conclusion on whether v2 overhead is acceptable. diff --git a/LAUNCH-CONFIG.md b/LAUNCH-CONFIG.md new file mode 100644 index 000000000..f0ac577cc --- /dev/null +++ b/LAUNCH-CONFIG.md @@ -0,0 +1,93 @@ +# Launch Config Benchmarking + +This repo includes lightweight benchmarking scaffolding to quantify CUDA kernel +launch overhead across three launch-config implementations (baseline, old +contextvar branch, and the new v2 branch). + +## What’s Included + +### 1) `scripts/bench-launch-overhead.py` +A focused micro-benchmark that measures launch overhead (us/launch) for kernels +with 0..4 arguments, using a 1x1 launch. It: +- warms up each kernel +- runs `loops` iterations per kernel (default: 100k for 0–3 args, 10k for 4 args) +- repeats the measurement (default: 7 repeats) +- reports mean/stdev and deltas vs the first repo +- optionally writes JSON output + +The benchmark is designed to compare multiple repos (or worktrees) in the same +Python environment. + +### 2) `scripts/bench-against.py` +A helper that compares benchmarks between two git refs using a temporary +worktree, running the pixi benchmark tasks before and after. + +### 3) Pixi tasks +Defined in `pixi.toml`: +- `bench-launch-overhead`: runs `scripts/bench-launch-overhead.py` +- `bench`: pytest benchmark suite (`numba.cuda.tests.benchmarks`) +- `benchcmp`: compare benchmark results from `bench` +- `bench-against`: runs `scripts/bench-against.py` + +## Recommended Usage (Three-Way Compare) + +Assuming you have three working trees for: +- **baseline** (main or a baseline ref) +- **contextvar** (old implementation) +- **v2** (new implementation) + +Run the launch-overhead micro-benchmark: + +```bash +pixi run -e cu-12-9-py312 bench-launch-overhead \ + --repo baseline=/path/to/numba-cuda-main \ + --repo contextvar=/path/to/numba-cuda-contextvar \ + --repo v2=/home/trentn/src/280-launch-config-v2 +``` + +Notes: +- The script will `pip install -e` each repo by default. Use `--no-install` + if you have already installed them and want to skip reinstalling. +- Use `--python` to point at a specific interpreter if needed. +- Use `--loops` to override the default loop counts, e.g. `--loops 200000,200000,200000,200000,20000`. +- Use `--output results.json` to persist the results. + +## Example Output + +``` +Launch overhead (us/launch): +args baseline contextvar v2 +0 4.10 +/- 0.05 6.20 +/- 0.06 4.50 +/- 0.04 +1 4.40 +/- 0.05 6.60 +/- 0.06 4.80 +/- 0.05 +... + +Deltas vs baseline: +args contextvar v2 +0 2.10 (+51.2%) 0.40 (+9.8%) +1 2.20 (+50.0%) 0.40 (+9.1%) +... +``` + +## Benchmark Suite (Broader Coverage) + +For more extensive benchmark coverage (not just launch overhead), use: + +```bash +pixi run -e cu-12-9-py312 bench +``` + +To compare two git refs using a temporary worktree: + +```bash +pixi run -e cu-12-9-py312 bench-against HEAD~ HEAD +``` + +This runs `bench` on the baseline ref and `benchcmp` on the proposed ref. + +## Notes / Constraints + +- Benchmarks require a real GPU (CUDA simulator is rejected). +- The micro-benchmark intentionally keeps kernels trivial to isolate launch + overhead. +- The three-way comparison is the most direct way to capture the relative + overhead introduced by launch-config state management. diff --git a/docs/source/reference/kernel.rst b/docs/source/reference/kernel.rst index 64a452947..c562a189e 100644 --- a/docs/source/reference/kernel.rst +++ b/docs/source/reference/kernel.rst @@ -57,6 +57,45 @@ This is similar to launch configuration in CUDA C/C++: .. note:: The order of ``stream`` and ``sharedmem`` are reversed in Numba compared to in CUDA C/C++. +Launch configuration introspection (advanced) +--------------------------------------------- + +The current launch configuration is available during compilation triggered by +kernel launches. This can be useful for debugging or for extensions that need +to observe how kernels are configured. + +.. note:: The capture is compile-time only. If the kernel is already compiled + for the given argument types, the captured config may remain ``None``. + +.. code-block:: python + + from numba import cuda + from numba.cuda import launchconfig + + @cuda.jit + def f(x): + x[0] = 1 + + arr = cuda.device_array(1, dtype="i4") + with launchconfig.capture_compile_config(f) as capture: + f[1, 1](arr) # first launch triggers compilation + + cfg = capture["config"] + print(cfg.griddim, cfg.blockdim, cfg.sharedmem) + +Configured kernels also expose pre-launch callbacks for lightweight +instrumentation: + +.. code-block:: python + + cfg = f[1, 1] + + def log_launch(kernel, cfg): + print(cfg.griddim, cfg.blockdim) + + cfg.pre_launch_callbacks.append(log_launch) + cfg(arr) + Dispatcher objects also provide several utility methods for inspection and creating a specialized instance: diff --git a/docs/source/user/index.rst b/docs/source/user/index.rst index c145e0993..694a95e5f 100644 --- a/docs/source/user/index.rst +++ b/docs/source/user/index.rst @@ -11,6 +11,7 @@ User guide .. toctree:: installation.rst + release_notes.rst kernels.rst memory.rst device-functions.rst diff --git a/numba_cuda/numba/cuda/launchconfig.py b/numba_cuda/numba/cuda/launchconfig.py index d3ede6be6..717e6dcf5 100644 --- a/numba_cuda/numba/cuda/launchconfig.py +++ b/numba_cuda/numba/cuda/launchconfig.py @@ -7,6 +7,9 @@ compilation completes. """ +import contextlib +from functools import wraps + from numba.cuda.cext import _dispatcher @@ -23,4 +26,34 @@ def ensure_current_launch_config(): return config -__all__ = ["current_launch_config", "ensure_current_launch_config"] +@contextlib.contextmanager +def capture_compile_config(dispatcher): + """Capture the launch config seen during compilation for a dispatcher. + + The returned dict has a single key, ``"config"``, which is populated when a + compilation is triggered by a kernel launch. If the kernel is already + compiled, the dict value may remain ``None``. + """ + if dispatcher is None: + raise TypeError("dispatcher is required") + + record = {"config": None} + original = dispatcher._compile_for_args + + @wraps(original) + def wrapped(*args, **kws): + record["config"] = current_launch_config() + return original(*args, **kws) + + dispatcher._compile_for_args = wrapped + try: + yield record + finally: + dispatcher._compile_for_args = original + + +__all__ = [ + "current_launch_config", + "ensure_current_launch_config", + "capture_compile_config", +] diff --git a/numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py b/numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py index f27002e8e..eea77b09f 100644 --- a/numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py +++ b/numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py @@ -157,6 +157,24 @@ def wrapped(*args, **kws): with self.assertRaises(RuntimeError): launchconfig.ensure_current_launch_config() + @skip_on_cudasim("Dispatcher C-extension not used in the simulator") + def test_capture_compile_config(self): + @cuda.jit + def f(x): + x[0] = 1 + + arr = np.zeros(1, dtype=np.int32) + original = f._compile_for_args + with launchconfig.capture_compile_config(f) as capture: + f[1, 1](arr) + + cfg = capture["config"] + self.assertIsNotNone(cfg) + self.assertIs(cfg.dispatcher, f) + self.assertEqual(cfg.griddim, (1, 1, 1)) + self.assertEqual(cfg.blockdim, (1, 1, 1)) + self.assertIs(f._compile_for_args, original) + def test_coerce_input_types(self): # Do not allow unsafe conversions if we can still compile other # specializations. diff --git a/pixi.toml b/pixi.toml index cf85a0f00..7042e2814 100644 --- a/pixi.toml +++ b/pixi.toml @@ -261,6 +261,9 @@ bench-against = { cmd = [ "$PIXI_PROJECT_ROOT/scripts/bench-against.py", ] } +[target.linux.tasks.bench-launch-overhead] +cmd = ["python", "$PIXI_PROJECT_ROOT/scripts/bench-launch-overhead.py"] + [target.linux.tasks.build-docs] cmd = ["make", "-C", "$PIXI_PROJECT_ROOT/docs", "html"] diff --git a/plots/launch-overhead-abs.png b/plots/launch-overhead-abs.png new file mode 100644 index 0000000000000000000000000000000000000000..a86353a2b4300db939b14f9e71df839300133d92 GIT binary patch literal 68463 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

m8z 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 + + + + + + + 2026-02-20T14:26:32.953496 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plots/launch-overhead-pct.png b/plots/launch-overhead-pct.png new file mode 100644 index 0000000000000000000000000000000000000000..56e6140cc1e22204b7ba1f698319293bc1d1fea7 GIT binary patch literal 108350 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

B?3z5DRhgq2TSUFyfF}VK^>QW*xh# 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 tb@k? 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 literal 0 HcmV?d00001 diff --git a/plots/launch-overhead-pct.svg b/plots/launch-overhead-pct.svg new file mode 100644 index 000000000..7c1732b72 --- /dev/null +++ b/plots/launch-overhead-pct.svg @@ -0,0 +1,1851 @@ + + + + + + + + 2026-02-20T14:26:33.216222 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plots/launch-overhead-us.png b/plots/launch-overhead-us.png new file mode 100644 index 0000000000000000000000000000000000000000..3c0a8e4f4d7f3393a0b5be230facf43f974d8146 GIT binary patch literal 112465 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 z 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 + + + + + + + 2026-02-20T14:26:32.962649 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scripts/plot-launch-overhead.py b/scripts/plot-launch-overhead.py index 7f021b4c7..a0f119803 100644 --- a/scripts/plot-launch-overhead.py +++ b/scripts/plot-launch-overhead.py @@ -154,6 +154,17 @@ def _summarize_device(results: list[dict]) -> str | None: return None +def _sanitize_svg(path: Path) -> None: + if path.suffix.lower() != ".svg": + return + text = path.read_text(encoding="utf-8") + sanitized = "\n".join(line.rstrip() for line in text.splitlines()) + if text.endswith("\n"): + sanitized += "\n" + if sanitized != text: + path.write_text(sanitized, encoding="utf-8") + + def main() -> int: parser = argparse.ArgumentParser( description="Plot launch-overhead results from bench-launch-overhead.py." @@ -285,6 +296,7 @@ def main() -> int: if args.output: fig.savefig(args.output, dpi=args.dpi) + _sanitize_svg(args.output) print(f"Wrote {args.output}") return 0

m8z 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 1 else 0.0 + results[name] = { + "loops": loop_count, + "mean_us": mean_s * 1e6, + "stdev_us": stdev_s * 1e6, + } + + device = cuda.get_current_device() + payload = { + "label": label, + "numba_version": numba.__version__, + "device": { + "name": device.name.decode() + if hasattr(device.name, "decode") + else device.name, + "cc": device.compute_capability, + }, + "cuda_runtime_version": cuda.runtime.get_version(), + "results": results, + "repeats": repeats, + } + + if not json_only: + print( + f"{label}: {payload['numba_version']} " + f"CUDA {payload['cuda_runtime_version']}" + ) + print(json.dumps(payload)) + + +def _format_us(value): + return f"{value:.2f}" + + +def _print_table(results): + labels = [r["label"] for r in results] + baseline = results[0]["label"] + print("Launch overhead (us/launch):") + header = ["args"] + labels + rows = [] + for arg in ["0", "1", "2", "3", "4"]: + row = [arg] + for r in results: + mean = r["results"][arg]["mean_us"] + stdev = r["results"][arg]["stdev_us"] + row.append(f"{_format_us(mean)} +/- {_format_us(stdev)}") + rows.append(row) + + col_widths = [ + max(len(row[i]) for row in [header] + rows) for i in range(len(header)) + ] + fmt = " ".join(f"{{:<{width}}}" for width in col_widths) + print(fmt.format(*header)) + for row in rows: + print(fmt.format(*row)) + + if len(results) > 1: + print("") + print(f"Deltas vs {baseline}:") + header = ["args"] + labels[1:] + delta_rows = [] + for arg in ["0", "1", "2", "3", "4"]: + base_mean = results[0]["results"][arg]["mean_us"] + row = [arg] + for r in results[1:]: + mean = r["results"][arg]["mean_us"] + delta = mean - base_mean + pct = (delta / base_mean) * 100 if base_mean else 0.0 + row.append(f"{_format_us(delta)} ({pct:+.1f}%)") + delta_rows.append(row) + + col_widths = [ + max(len(row[i]) for row in [header] + delta_rows) + for i in range(len(header)) + ] + fmt = " ".join(f"{{:<{width}}}" for width in col_widths) + print(fmt.format(*header)) + for row in delta_rows: + print(fmt.format(*row)) + + +def _run_driver(args): + repos = [_parse_repo(spec) for spec in args.repo] + loops = _parse_loops(args.loops) + results = [] + for label, path in repos: + sha = _git_rev(path) + if not args.no_install: + _pip_install(path, args.python) + output = subprocess.check_output( + [ + args.python, + os.path.abspath(__file__), + "--run", + "--label", + label, + "--loops", + args.loops + if args.loops + else ",".join(str(loops[i]) for i in range(5)), + "--repeats", + str(args.repeats), + ], + text=True, + ) + last_line = output.strip().splitlines()[-1] + payload = json.loads(last_line) + payload["repo"] = path + payload["sha"] = sha + results.append(payload) + + _print_table(results) + if args.output: + with open(args.output, "w", encoding="utf-8") as handle: + json.dump(results, handle, indent=2, sort_keys=True) + print(f"Wrote {args.output}") + + +def main(): + parser = argparse.ArgumentParser( + description=("Benchmark kernel launch overhead across repos.") + ) + parser.add_argument( + "--repo", + action="append", + default=[], + help="Repo spec as label=/path (repeatable).", + ) + parser.add_argument( + "--no-install", + action="store_true", + help="Skip pip install -e for repos.", + ) + parser.add_argument( + "--python", + default=sys.executable, + help="Python executable to use.", + ) + parser.add_argument( + "--loops", + default=None, + help="Comma-separated loops for 0..4 args.", + ) + parser.add_argument( + "--repeats", + type=int, + default=DEFAULT_REPEATS, + help="Number of repeats for each kernel.", + ) + parser.add_argument( + "--output", + default=None, + help="Optional JSON output path.", + ) + parser.add_argument( + "--run", + action="store_true", + help="Run in worker mode (internal).", + ) + parser.add_argument( + "--label", + default="", + help="Label for worker mode.", + ) + parser.add_argument( + "--json-only", + action="store_true", + help="Suppress non-JSON output in worker mode.", + ) + args = parser.parse_args() + + if args.run: + loops = _parse_loops(args.loops) + _run_worker(args.label, loops, args.repeats, args.json_only) + return + + if not args.repo: + parser.error("--repo must be provided at least once.") + + _run_driver(args) + + +if __name__ == "__main__": + main() diff --git a/scripts/plot-launch-overhead.py b/scripts/plot-launch-overhead.py new file mode 100644 index 000000000..7f021b4c7 --- /dev/null +++ b/scripts/plot-launch-overhead.py @@ -0,0 +1,301 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause + +"""Plot launch-overhead results from bench-launch-overhead.py.""" + +from __future__ import annotations + +import argparse +import json +import os +import re +from pathlib import Path + + +def _maybe_set_backend() -> None: + if os.environ.get("DISPLAY") is None and os.name != "nt": + import matplotlib + + matplotlib.use("Agg") + + +def _load_input(path: Path) -> list[dict]: + text = path.read_text(encoding="utf-8") + try: + data = json.loads(text) + return _normalize_json(data) + except json.JSONDecodeError: + return _parse_table(text) + + +def _normalize_json(data: object) -> list[dict]: + if isinstance(data, dict): + data = [data] + if not isinstance(data, list): + raise ValueError( + "Expected a JSON list of results or a single result dict." + ) + for entry in data: + if not isinstance(entry, dict): + raise ValueError("Each JSON entry must be a dict.") + if "label" not in entry or "results" not in entry: + raise ValueError( + "Each JSON entry must include 'label' and 'results'." + ) + return data + + +def _split_cols(line: str) -> list[str]: + return [col for col in re.split(r"\s{2,}|\t+", line.strip()) if col] + + +def _parse_table(text: str) -> list[dict]: + lines = text.splitlines() + start = None + for idx, line in enumerate(lines): + if line.strip().startswith("Launch overhead (us/launch):"): + start = idx + break + if start is None or start + 2 >= len(lines): + raise ValueError("Could not locate launch-overhead table in text.") + + header = _split_cols(lines[start + 1]) + if not header or header[0] != "args": + raise ValueError("Malformed table header.") + labels = header[1:] + results: dict[str, dict[str, dict[str, float]]] = { + label: {} for label in labels + } + + row_idx = start + 2 + while row_idx < len(lines): + line = lines[row_idx].rstrip() + if not line.strip() or line.strip().startswith("Deltas vs baseline"): + break + cols = _split_cols(line) + if len(cols) < 2: + row_idx += 1 + continue + arg = cols[0] + for label, cell in zip(labels, cols[1:]): + match = re.search( + r"([+-]?\d+(?:\.\d+)?)\s*\+/-\s*([+-]?\d+(?:\.\d+)?)", + cell, + ) + if not match: + raise ValueError(f"Could not parse cell '{cell}'.") + mean = float(match.group(1)) + stdev = float(match.group(2)) + results[label][arg] = {"mean_us": mean, "stdev_us": stdev} + row_idx += 1 + + return [{"label": label, "results": results[label]} for label in labels] + + +def _extract_series( + results: list[dict], +) -> tuple[list[int], list[str], dict, dict]: + labels = [entry["label"] for entry in results] + arg_keys = sorted( + {int(k) for entry in results for k in entry["results"].keys()} + ) + means: dict[str, list[float]] = {} + stdevs: dict[str, list[float]] = {} + for entry in results: + label = entry["label"] + means[label] = [] + stdevs[label] = [] + for arg in arg_keys: + record = entry["results"].get(str(arg)) + if not record: + raise ValueError(f"Missing arg {arg} for label '{label}'.") + means[label].append(float(record.get("mean_us", 0.0))) + stdevs[label].append(float(record.get("stdev_us", 0.0))) + return arg_keys, labels, means, stdevs + + +def _select_baseline(labels: list[str], baseline: str | None) -> str: + if baseline: + if baseline not in labels: + raise ValueError( + f"Baseline '{baseline}' not found in labels: {labels}" + ) + return baseline + return labels[0] + + +def _summarize_device(results: list[dict]) -> str | None: + devices = [] + runtimes = [] + for entry in results: + device = entry.get("device") + runtime = entry.get("cuda_runtime_version") + if device: + name = device.get("name") + cc = device.get("cc") + if name and cc: + devices.append((name, tuple(cc))) + if runtime: + runtimes.append(tuple(runtime)) + device_line = None + if devices and len(set(devices)) == 1: + name, cc = devices[0] + device_line = f"{name} (CC {cc[0]}.{cc[1]})" + runtime_line = None + if runtimes and len(set(runtimes)) == 1: + runtime_line = f"CUDA runtime {runtimes[0][0]}.{runtimes[0][1]}" + if device_line and runtime_line: + return f"{device_line} • {runtime_line}" + if device_line: + return device_line + if runtime_line: + return runtime_line + return None + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Plot launch-overhead results from bench-launch-overhead.py." + ) + parser.add_argument( + "input", + type=Path, + help="Path to results JSON (preferred) or bench stdout text.", + ) + parser.add_argument( + "--output", + type=Path, + default=None, + help="Output image path (png/svg/pdf). If omitted, show the plot.", + ) + parser.add_argument( + "--baseline", + default=None, + help="Label to use as baseline (defaults to first entry).", + ) + parser.add_argument( + "--delta", + choices=("pct", "us", "none"), + default="pct", + help="Show delta vs baseline as percent, microseconds, or not at all.", + ) + parser.add_argument( + "--title", + default=None, + help="Optional title override.", + ) + parser.add_argument( + "--no-sns", + action="store_true", + help="Disable seaborn styling even if installed.", + ) + parser.add_argument( + "--dpi", + type=int, + default=150, + help="Output DPI when saving images.", + ) + args = parser.parse_args() + + _maybe_set_backend() + + import numpy as np + import matplotlib.pyplot as plt + + try: + import seaborn as sns # type: ignore + except Exception: + sns = None + + results = _load_input(args.input) + arg_keys, labels, means, stdevs = _extract_series(results) + baseline_label = _select_baseline(labels, args.baseline) + + if sns is not None and not args.no_sns: + sns.set_theme(style="whitegrid") + palette = sns.color_palette(n_colors=len(labels)) + else: + palette = plt.cm.tab10.colors + + nrows = 2 if args.delta != "none" else 1 + height = 6.5 if nrows == 2 else 4.0 + fig, axes = plt.subplots( + nrows=nrows, + ncols=1, + figsize=(8.5, height), + sharex=True, + constrained_layout=True, + ) + if nrows == 1: + ax_abs = axes + ax_delta = None + else: + ax_abs, ax_delta = axes + + x = np.array(arg_keys) + for idx, label in enumerate(labels): + ax_abs.errorbar( + x, + means[label], + yerr=stdevs[label], + label=label, + color=palette[idx % len(palette)], + marker="o", + linewidth=2, + capsize=3, + ) + ax_abs.set_ylabel("Launch overhead (us/launch)") + ax_abs.set_xticks(x) + ax_abs.grid(True, axis="y", alpha=0.3) + ax_abs.legend(frameon=False, title="Repo", ncol=min(3, len(labels))) + + if ax_delta is not None: + base = np.array(means[baseline_label]) + ax_delta.axhline(0.0, color="0.5", linestyle="--", linewidth=1) + for idx, label in enumerate(labels): + if label == baseline_label: + continue + delta = np.array(means[label]) - base + if args.delta == "pct": + delta = np.where(base != 0, (delta / base) * 100, 0.0) + ylabel = "Delta vs baseline (%)" + else: + ylabel = "Delta vs baseline (us/launch)" + ax_delta.plot( + x, + delta, + label=label, + color=palette[idx % len(palette)], + marker="o", + linewidth=2, + ) + ax_delta.set_ylabel(ylabel) + ax_delta.set_xlabel("Kernel args") + ax_delta.grid(True, axis="y", alpha=0.3) + ax_delta.legend(frameon=False, title="Repo", ncol=min(3, len(labels))) + else: + ax_abs.set_xlabel("Kernel args") + + title = args.title or "CUDA kernel launch overhead" + subtitle = _summarize_device(results) + if subtitle: + title = f"{title}\n{subtitle}" + fig.suptitle(title, fontsize=12) + + if args.output: + fig.savefig(args.output, dpi=args.dpi) + print(f"Wrote {args.output}") + return 0 + + try: + plt.show() + except Exception: + fallback = Path("launch-overhead.png") + fig.savefig(fallback, dpi=args.dpi) + print(f"Wrote {fallback}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From fb90fd5da55c7fc88a8c2952615ba6d1ba443216 Mon Sep 17 00:00:00 2001 From: Trent Nelson Date: Sun, 25 Jan 2026 18:21:26 -0800 Subject: [PATCH 3/7] Checkpoint commit prior to switching laptop. --- LAUNCH-CONFIG-TODO.md | 54 ++++++++++++ numba_cuda/numba/cuda/dispatcher.py | 64 ++++++++++++++ numba_cuda/numba/cuda/launchconfig.py | 2 +- .../cudapy/test_launch_config_sensitive.py | 86 +++++++++++++++++++ 4 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 LAUNCH-CONFIG-TODO.md create mode 100644 numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py diff --git a/LAUNCH-CONFIG-TODO.md b/LAUNCH-CONFIG-TODO.md new file mode 100644 index 000000000..0e6255af0 --- /dev/null +++ b/LAUNCH-CONFIG-TODO.md @@ -0,0 +1,54 @@ +# Launch Config Sensitive (LC-S) plumbing + +## Context / findings +- Current launchconfig capture is compile-time only. It is injected into the TLS only around `cuda_compile_only(...)` in `numba_cuda/numba/cuda/cext/_dispatcher.cpp` and read via `numba_cuda/numba/cuda/launchconfig.py`. +- This means `launchconfig.current_launch_config()` is only non-`None` while compilation is happening; cache hits do not update it. +- CUDA kernel compilation cache is keyed only by argument types. For rewrites that depend on launch config (e.g. cuda.coop using blockdim to select CUB algorithms or to size buffers), reusing a compiled kernel with a different grid/block config is unsafe. + +## Test-first scaffolding added +- New test file: `numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py`. +- It registers a custom `Rewrite` for a single kernel name, and mimics cuda.coop behavior: + - Reads launch config during rewrite via `launchconfig.ensure_current_launch_config()`. + - Logs config to a global list (`LAUNCH_CONFIG_LOG`). + - Sets `state.metadata["launch_config_sensitive"] = True` so later compilation can observe it. +- The test launches the same kernel twice with different block sizes and **expects two log entries** (i.e. a recompile per launch-config change). +- This test should FAIL before the fix (only first launch compiles/logs). + +## ✅ Launch-config-sensitive plumbing (implemented) +- `_Kernel` now captures `launch_config_sensitive` from compile metadata. +- `CUDADispatcher` now: + - tracks launch-config sensitivity + - computes a launch-config key `(griddim, blockdim, sharedmem)` + - routes calls for new configs to per-config sub-dispatchers + - keeps the original dispatcher as the default config +- This avoids TypeManager conflicts and allows multiple compiled kernels per argtypes when launch config differs. +- Implemented in `numba_cuda/numba/cuda/dispatcher.py`. + +## Remaining TODO +1. **Run the new test on a CUDA machine** + - `python -m pytest numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py -k launch_config_sensitive` + +2. **Disk cache interaction** + - Disk cache key currently ignores launch config. For LC‑S kernels, decide: + - disable caching, or + - extend cache key to include launch config, or + - use a separate cache path keyed by launch config. + - Ensure kernel rebuild path preserves `launch_config_sensitive` if needed. + +3. **Check for any additional call sites** + - Make sure all kernel launch paths for CUDADispatcher go through `call(...)` so the dispatcher selection is effective. + +## Files changed so far +- `docs/source/reference/kernel.rst` +- `numba_cuda/numba/cuda/cext/_dispatcher.cpp` +- `numba_cuda/numba/cuda/dispatcher.py` +- `numba_cuda/numba/cuda/launchconfig.py` (new) +- `numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py` +- `numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py` (new) +- `LAUNCH-CONFIG.md` +- `LAUNCH-CONFIG-CODEX-PROMPT.md` +- `LAUNCH-CONFIG-TODO.md` +- `pixi.toml` +- `scripts/bench-launch-overhead.py` +- `scripts/plot-launch-overhead.py` +- `plots/` diff --git a/numba_cuda/numba/cuda/dispatcher.py b/numba_cuda/numba/cuda/dispatcher.py index 268c597ed..a5dc5f09c 100644 --- a/numba_cuda/numba/cuda/dispatcher.py +++ b/numba_cuda/numba/cuda/dispatcher.py @@ -166,6 +166,10 @@ def __init__( max_registers=max_registers, lto=lto, ) + self.launch_config_sensitive = bool( + getattr(cres, "metadata", None) + and cres.metadata.get("launch_config_sensitive", False) + ) tgt_ctx = cres.target_context lib = cres.library kernel = lib.get_function(cres.fndesc.llvm_func_name) @@ -1548,6 +1552,14 @@ def __init__(self, py_func, targetoptions, pipeline_class=CUDACompiler): self._cache_hits = collections.Counter() self._cache_misses = collections.Counter() + # Whether the compiled kernels are launch-config sensitive (e.g., IR + # rewrites depend on launch configuration). + self._launch_config_sensitive = False + self._launch_config_default_key = None + self._launch_config_is_specialized = False + self._launch_config_specialization_key = None + self._launch_config_specializations = {} + # The following properties are for specialization of CUDADispatchers. A # specialized CUDADispatcher is one that is compiled for exactly one # set of argument types, and bypasses some argument type checking for @@ -1593,6 +1605,52 @@ def __getitem__(self, args): raise ValueError("must specify at least the griddim and blockdim") return self.configure(*args) + @staticmethod + def _launch_config_key(launch_config): + return ( + launch_config.griddim, + launch_config.blockdim, + launch_config.sharedmem, + ) + + def _get_launch_config_specialization(self, key): + dispatcher = self._launch_config_specializations.get(key) + if dispatcher is None: + dispatcher = CUDADispatcher( + self.py_func, + targetoptions=self.targetoptions, + pipeline_class=self._compiler.pipeline_class, + ) + dispatcher._launch_config_sensitive = True + dispatcher._launch_config_is_specialized = True + dispatcher._launch_config_specialization_key = key + dispatcher._launch_config_default_key = key + self._launch_config_specializations[key] = dispatcher + return dispatcher + + def _select_launch_config_dispatcher(self, launch_config): + if not self._launch_config_sensitive: + return self + if self._launch_config_is_specialized: + return self + key = self._launch_config_key(launch_config) + if self._launch_config_default_key is None: + self._launch_config_default_key = key + return self + if key == self._launch_config_default_key: + return self + return self._get_launch_config_specialization(key) + + def _update_launch_config_sensitivity(self, kernel, launch_config): + if not getattr(kernel, "launch_config_sensitive", False): + return + if not self._launch_config_sensitive: + self._launch_config_sensitive = True + if self._launch_config_default_key is None: + self._launch_config_default_key = self._launch_config_key( + launch_config + ) + def forall(self, ntasks, tpb=0, stream=0, sharedmem=0): """Returns a 1D-configured dispatcher for a given number of tasks. @@ -1651,6 +1709,10 @@ def call(self, args, launch_config): launch_config.args = args try: + dispatcher = self._select_launch_config_dispatcher(launch_config) + if dispatcher is not self: + return dispatcher.call(args, launch_config) + if self.specialized: kernel = next(iter(self.overloads.values())) else: @@ -1658,6 +1720,8 @@ def call(self, args, launch_config): self, *args, **{_LAUNCH_CONFIG_KW: launch_config} ) + self._update_launch_config_sensitivity(kernel, launch_config) + for callback in launch_config.pre_launch_callbacks: callback(kernel, launch_config) diff --git a/numba_cuda/numba/cuda/launchconfig.py b/numba_cuda/numba/cuda/launchconfig.py index 717e6dcf5..c374d5b30 100644 --- a/numba_cuda/numba/cuda/launchconfig.py +++ b/numba_cuda/numba/cuda/launchconfig.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: BSD-2-Clause """Launch configuration access for CUDA compilation contexts. diff --git a/numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py b/numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py new file mode 100644 index 000000000..81ade9eea --- /dev/null +++ b/numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py @@ -0,0 +1,86 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause + +import numpy as np + +from numba import cuda +from numba.cuda import launchconfig +from numba.cuda.core.rewrites import register_rewrite, Rewrite +from numba.cuda.testing import skip_on_cudasim, unittest, CUDATestCase + + +LAUNCH_CONFIG_LOG = [] + + +def _clear_launch_config_log(): + LAUNCH_CONFIG_LOG.clear() + + +@register_rewrite("after-inference") +class LaunchConfigSensitiveRewrite(Rewrite): + """Rewrite that marks kernels as launch-config sensitive and logs config. + + This mimics cuda.coop's need to access launch config during rewrite, and + provides a global log for tests to assert on. + """ + + _TARGET_NAME = "launch_config_sensitive_kernel" + + def __init__(self, state): + super().__init__(state) + self._state = state + self._logged = False + self._block = None + + def match(self, func_ir, block, typemap, calltypes): + if func_ir.func_id.func_name != self._TARGET_NAME: + return False + if self._logged: + return False + self._block = block + return True + + def apply(self): + cfg = launchconfig.ensure_current_launch_config() + LAUNCH_CONFIG_LOG.append( + { + "griddim": cfg.griddim, + "blockdim": cfg.blockdim, + "sharedmem": cfg.sharedmem, + } + ) + # Mark compilation as launch-config sensitive so the dispatcher can + # avoid reusing the compiled kernel across different launch configs. + self._state.metadata["launch_config_sensitive"] = True + self._logged = True + return self._block + + +@skip_on_cudasim("Dispatcher C-extension not used in the simulator") +class TestLaunchConfigSensitive(CUDATestCase): + def setUp(self): + super().setUp() + _clear_launch_config_log() + + def test_launch_config_sensitive_requires_recompile(self): + @cuda.jit + def launch_config_sensitive_kernel(x): + x[0] = 1 + + arr = np.zeros(1, dtype=np.int32) + + launch_config_sensitive_kernel[1, 32](arr) + self.assertEqual(len(LAUNCH_CONFIG_LOG), 1) + self.assertEqual(LAUNCH_CONFIG_LOG[0]["blockdim"], (32, 1, 1)) + self.assertEqual(LAUNCH_CONFIG_LOG[0]["griddim"], (1, 1, 1)) + + launch_config_sensitive_kernel[1, 64](arr) + # Expect a new compilation for the new launch config, which will log + # a second entry with the updated block dimension. + self.assertEqual(len(LAUNCH_CONFIG_LOG), 2) + self.assertEqual(LAUNCH_CONFIG_LOG[1]["blockdim"], (64, 1, 1)) + self.assertEqual(LAUNCH_CONFIG_LOG[1]["griddim"], (1, 1, 1)) + + +if __name__ == "__main__": + unittest.main() From c6f4f02167d5523606b769fffa1d7ee4aecf8bbf Mon Sep 17 00:00:00 2001 From: Trent Nelson Date: Mon, 26 Jan 2026 09:55:11 -0800 Subject: [PATCH 4/7] Add launch-config-sensitive plumbing. --- numba_cuda/numba/cuda/compiler.py | 3 + numba_cuda/numba/cuda/dispatcher.py | 95 ++++++++ ...ache_launch_config_insensitive_usecases.py | 26 +++ .../cache_launch_config_sensitive_usecases.py | 61 +++++ .../numba/cuda/tests/cudapy/test_caching.py | 218 +++++++++++++++++- 5 files changed, 395 insertions(+), 8 deletions(-) create mode 100644 numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_insensitive_usecases.py create mode 100644 numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_sensitive_usecases.py diff --git a/numba_cuda/numba/cuda/compiler.py b/numba_cuda/numba/cuda/compiler.py index cbe1dfac2..2d908632d 100644 --- a/numba_cuda/numba/cuda/compiler.py +++ b/numba_cuda/numba/cuda/compiler.py @@ -408,6 +408,9 @@ def run_pass(self, state): call_helper=lowered.call_helper, signature=signature, fndesc=lowered.fndesc, + # Preserve metadata populated by rewrite passes (e.g. launch-config + # sensitivity) so downstream consumers can act on it. + metadata=state.metadata, ) return True diff --git a/numba_cuda/numba/cuda/dispatcher.py b/numba_cuda/numba/cuda/dispatcher.py index a5dc5f09c..f22285d37 100644 --- a/numba_cuda/numba/cuda/dispatcher.py +++ b/numba_cuda/numba/cuda/dispatcher.py @@ -20,6 +20,7 @@ from numba.cuda.core import errors from numba.cuda import serialize, utils from numba import cuda +from numba.cuda import launchconfig from numba.cuda.np import numpy_support from numba.cuda.core.compiler_lock import global_compiler_lock @@ -302,6 +303,7 @@ def _rebuild( call_helper, extensions, shared_memory_carveout=None, + launch_config_sensitive=False, ): """ Rebuild an instance. @@ -321,6 +323,7 @@ def _rebuild( instance.call_helper = call_helper instance.extensions = extensions instance.shared_memory_carveout = shared_memory_carveout + instance.launch_config_sensitive = launch_config_sensitive return instance def _reduce_states(self): @@ -341,6 +344,7 @@ def _reduce_states(self): call_helper=self.call_helper, extensions=self.extensions, shared_memory_carveout=self.shared_memory_carveout, + launch_config_sensitive=self.launch_config_sensitive, ) def _parse_carveout(self, carveout): @@ -768,6 +772,50 @@ class CUDACache(Cache): _impl_class = CUDACacheImpl + def __init__(self, py_func): + self._launch_config_key = None + self._launch_config_sensitive_flag = None + super().__init__(py_func) + marker_name = f"{self._impl.filename_base}.lcs" + self._launch_config_marker_path = os.path.join( + self._cache_path, marker_name + ) + + def _index_key(self, sig, codegen): + key = super()._index_key(sig, codegen) + if self._launch_config_key is None: + return key + return key + (("launch_config", self._launch_config_key),) + + def set_launch_config_key(self, key): + self._launch_config_key = key + + def is_launch_config_sensitive(self): + if self._launch_config_sensitive_flag is None: + self._launch_config_sensitive_flag = os.path.exists( + self._launch_config_marker_path + ) + return self._launch_config_sensitive_flag + + def mark_launch_config_sensitive(self): + if self._launch_config_sensitive_flag is True: + return + try: + self._impl.locator.ensure_cache_path() + with open(self._launch_config_marker_path, "a"): + pass + except OSError: + return + self._launch_config_sensitive_flag = True + + def flush(self): + super().flush() + try: + os.unlink(self._launch_config_marker_path) + except FileNotFoundError: + pass + self._launch_config_sensitive_flag = None + def load_overload(self, sig, target_context): # Loading an overload refreshes the context to ensure it is initialized. with utils.numba_target_override(): @@ -1613,6 +1661,31 @@ def _launch_config_key(launch_config): launch_config.sharedmem, ) + def _cache_launch_config_key(self, launch_config): + if self._launch_config_is_specialized: + return self._launch_config_specialization_key + if self._launch_config_default_key is not None: + return self._launch_config_default_key + if launch_config is None: + return None + return self._launch_config_key(launch_config) + + def _configure_cache_for_launch_config(self, launch_config): + if not isinstance(self._cache, CUDACache): + return + if self._launch_config_sensitive or self._launch_config_is_specialized: + key = self._cache_launch_config_key(launch_config) + self._cache.set_launch_config_key(key) + return + if self._cache.is_launch_config_sensitive(): + if launch_config is None: + key = None + else: + key = self._launch_config_key(launch_config) + self._cache.set_launch_config_key(key) + return + self._cache.set_launch_config_key(None) + def _get_launch_config_specialization(self, key): dispatcher = self._launch_config_specializations.get(key) if dispatcher is None: @@ -1625,6 +1698,9 @@ def _get_launch_config_specialization(self, key): dispatcher._launch_config_is_specialized = True dispatcher._launch_config_specialization_key = key dispatcher._launch_config_default_key = key + if isinstance(self._cache, CUDACache): + dispatcher.enable_caching() + dispatcher._configure_cache_for_launch_config(None) self._launch_config_specializations[key] = dispatcher return dispatcher @@ -1978,11 +2054,22 @@ def compile(self, sig): if kernel is not None: return kernel + launch_config = launchconfig.current_launch_config() + self._configure_cache_for_launch_config(launch_config) + # Can we load from the disk cache? kernel = self._cache.load_overload(sig, self.targetctx) if kernel is not None: self._cache_hits[sig] += 1 + if isinstance(self._cache, CUDACache) and getattr( + kernel, "launch_config_sensitive", False + ): + self._cache.mark_launch_config_sensitive() + if launch_config is not None: + self._cache.set_launch_config_key( + self._launch_config_key(launch_config) + ) else: # We need to compile a new kernel self._cache_misses[sig] += 1 @@ -1992,6 +2079,14 @@ def compile(self, sig): kernel = _Kernel(self.py_func, argtypes, **self.targetoptions) # We call bind to force codegen, so that there is a cubin to cache kernel.bind() + if isinstance(self._cache, CUDACache) and getattr( + kernel, "launch_config_sensitive", False + ): + self._cache.mark_launch_config_sensitive() + if launch_config is not None: + self._cache.set_launch_config_key( + self._launch_config_key(launch_config) + ) self._cache.save_overload(sig, kernel) self.add_overload(kernel, argtypes) diff --git a/numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_insensitive_usecases.py b/numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_insensitive_usecases.py new file mode 100644 index 000000000..354ec3f30 --- /dev/null +++ b/numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_insensitive_usecases.py @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause + +import numpy as np + +from numba import cuda +import sys + + +@cuda.jit(cache=True) +def cache_kernel(x): + x[0] = 1 + + +def launch(blockdim): + arr = np.zeros(1, dtype=np.int32) + cache_kernel[1, blockdim](arr) + return arr + + +def self_test(): + mod = sys.modules[__name__] + out = mod.launch(32) + assert out[0] == 1 + out = mod.launch(64) + assert out[0] == 1 diff --git a/numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_sensitive_usecases.py b/numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_sensitive_usecases.py new file mode 100644 index 000000000..1ff565b21 --- /dev/null +++ b/numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_sensitive_usecases.py @@ -0,0 +1,61 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause + +import numpy as np + +from numba import cuda +from numba.cuda import launchconfig +from numba.cuda.core.rewrites import register_rewrite, Rewrite, rewrite_registry +import sys + +_REWRITE_FLAG = "_launch_config_cache_rewrite_registered" + + +if not getattr(rewrite_registry, _REWRITE_FLAG, False): + + @register_rewrite("after-inference") + class LaunchConfigSensitiveCacheRewrite(Rewrite): + _TARGET_NAME = "lcs_cache_kernel" + + def __init__(self, state): + super().__init__(state) + self._state = state + self._block = None + self._logged = False + + def match(self, func_ir, block, typemap, calltypes): + if func_ir.func_id.func_name != self._TARGET_NAME: + return False + if self._logged: + return False + self._block = block + return True + + def apply(self): + # Ensure launch config is available and mark compilation as + # launch-config sensitive so the disk cache keys include it. + launchconfig.ensure_current_launch_config() + self._state.metadata["launch_config_sensitive"] = True + self._logged = True + return self._block + + setattr(rewrite_registry, _REWRITE_FLAG, True) + + +@cuda.jit(cache=True) +def lcs_cache_kernel(x): + x[0] = 1 + + +def launch(blockdim): + arr = np.zeros(1, dtype=np.int32) + lcs_cache_kernel[1, blockdim](arr) + return arr + + +def self_test(): + mod = sys.modules[__name__] + out = mod.launch(32) + assert out[0] == 1 + out = mod.launch(64) + assert out[0] == 1 diff --git a/numba_cuda/numba/cuda/tests/cudapy/test_caching.py b/numba_cuda/numba/cuda/tests/cudapy/test_caching.py index 3d3eadc32..2449bd647 100644 --- a/numba_cuda/numba/cuda/tests/cudapy/test_caching.py +++ b/numba_cuda/numba/cuda/tests/cudapy/test_caching.py @@ -2,6 +2,7 @@ # SPDX-License-Identifier: BSD-2-Clause import multiprocessing +import json import os import shutil import unittest @@ -84,6 +85,11 @@ def get_cache_mtimes(self): for fn in sorted(self.cache_contents()) ) + def count_cache_markers(self, suffix=".lcs"): + return len( + [fn for fn in self.cache_contents() if fn.endswith(suffix)] + ) + def check_pycache(self, n): c = self.cache_contents() self.assertEqual(len(c), n, c) @@ -97,19 +103,35 @@ class DispatcherCacheUsecasesTest(BaseCacheTest): usecases_file = os.path.join(here, "cache_usecases.py") modname = "dispatcher_caching_test_fodder" - def run_in_separate_process(self): + def run_in_separate_process(self, *, envvars=None, report_code=None): # Cached functions can be run from a distinct process. # Also stresses issue #1603: uncached function calling cached function # shouldn't fail compiling. - code = """if 1: - import sys - - sys.path.insert(0, %(tempdir)r) - mod = __import__(%(modname)r) - mod.self_test() - """ % dict(tempdir=self.tempdir, modname=self.modname) + code_lines = [ + "if 1:", + " import sys", + ] + if report_code is not None: + code_lines.append(" import json") + code_lines.extend( + [ + f" sys.path.insert(0, {self.tempdir!r})", + f" mod = __import__({self.modname!r})", + " mod.self_test()", + ] + ) + if report_code is not None: + for line in report_code.splitlines(): + if line.strip(): + code_lines.append(f" {line}") + code_lines.append( + ' print("__CACHE_REPORT__" + json.dumps(report))' + ) + code = "\n".join(code_lines) subp_env = os.environ.copy() + if envvars is not None: + subp_env.update(envvars) popen = subprocess.Popen( [sys.executable, "-c", code], stdout=subprocess.PIPE, @@ -124,6 +146,17 @@ def run_in_separate_process(self): "stderr follows\n%s\n" % (popen.returncode, out.decode(), err.decode()), ) + if report_code is None: + return None + stdout = out.decode().splitlines() + marker = "__CACHE_REPORT__" + for line in reversed(stdout): + if line.startswith(marker): + return json.loads(line[len(marker) :]) + raise AssertionError( + "cache report missing from subprocess output:\n%s" + % out.decode() + ) def check_hits(self, func, hits, misses=None): st = func.stats @@ -415,6 +448,175 @@ def cached_kernel_global(output): GLOBAL_DEVICE_ARRAY = None +@skip_on_cudasim("Simulator does not implement caching") +class LaunchConfigSensitiveCachingTest(DispatcherCacheUsecasesTest): + here = os.path.dirname(__file__) + usecases_file = os.path.join( + here, "cache_launch_config_sensitive_usecases.py" + ) + modname = "cuda_launch_config_sensitive_cache_test_fodder" + + def setUp(self): + DispatcherCacheUsecasesTest.setUp(self) + CUDATestCase.setUp(self) + + def tearDown(self): + CUDATestCase.tearDown(self) + DispatcherCacheUsecasesTest.tearDown(self) + + def test_launch_config_sensitive_cache_keys(self): + self.check_pycache(0) + mod = self.import_module() + self.check_pycache(0) + + mod.launch(32) + self.check_pycache(3) # index, data, marker + self.assertEqual(self.count_cache_markers(), 1) + + mod.launch(64) + self.check_pycache(4) # index, 2 data, marker + self.assertEqual(self.count_cache_markers(), 1) + + mod2 = self.import_module() + self.assertIsNot(mod, mod2) + mod2.launch(32) + self.check_hits(mod2.lcs_cache_kernel, 1, 0) + self.check_pycache(4) + + mod2.launch(64) + self.check_hits(mod2.lcs_cache_kernel, 1, 0) + self.assertEqual( + len(mod2.lcs_cache_kernel._launch_config_specializations), 1 + ) + specialization = next( + iter(mod2.lcs_cache_kernel._launch_config_specializations.values()) + ) + self.check_hits(specialization, 1, 0) + self.check_pycache(4) + + mtimes = self.get_cache_mtimes() + report = self.run_in_separate_process( + report_code="\n".join( + [ + "main_hits = sum(mod.lcs_cache_kernel.stats.cache_hits.values())", + "main_misses = sum(mod.lcs_cache_kernel.stats.cache_misses.values())", + "spec = next(iter(mod.lcs_cache_kernel._launch_config_specializations.values()))", + "spec_hits = sum(spec.stats.cache_hits.values())", + "spec_misses = sum(spec.stats.cache_misses.values())", + "report = {'main_hits': main_hits, 'main_misses': main_misses, 'spec_hits': spec_hits, 'spec_misses': spec_misses}", + ] + ) + ) + self.assertEqual(report["main_hits"], 1) + self.assertEqual(report["main_misses"], 0) + self.assertEqual(report["spec_hits"], 1) + self.assertEqual(report["spec_misses"], 0) + self.assertEqual(self.get_cache_mtimes(), mtimes) + + +@skip_on_cudasim("Simulator does not implement caching") +class LaunchConfigInsensitiveCachingTest(DispatcherCacheUsecasesTest): + here = os.path.dirname(__file__) + usecases_file = os.path.join( + here, "cache_launch_config_insensitive_usecases.py" + ) + modname = "cuda_launch_config_insensitive_cache_test_fodder" + + def setUp(self): + DispatcherCacheUsecasesTest.setUp(self) + CUDATestCase.setUp(self) + + def tearDown(self): + CUDATestCase.tearDown(self) + DispatcherCacheUsecasesTest.tearDown(self) + + def test_launch_config_insensitive_cache_keys(self): + self.check_pycache(0) + mod = self.import_module() + self.check_pycache(0) + + mod.launch(32) + self.check_pycache(2) # index, data + self.assertEqual(self.count_cache_markers(), 0) + + mod.launch(64) + self.check_pycache(2) + + mod2 = self.import_module() + self.assertIsNot(mod, mod2) + mod2.launch(64) + self.check_hits(mod2.cache_kernel, 1, 0) + self.check_pycache(2) + + mtimes = self.get_cache_mtimes() + report = self.run_in_separate_process( + report_code=( + "hits = sum(mod.cache_kernel.stats.cache_hits.values())\n" + "misses = sum(mod.cache_kernel.stats.cache_misses.values())\n" + "report = {'hits': hits, 'misses': misses}" + ) + ) + self.assertEqual(report["hits"], 1) + self.assertEqual(report["misses"], 0) + self.assertEqual(self.get_cache_mtimes(), mtimes) + + +@skip_on_cudasim("Simulator does not implement caching") +class MultiDeviceCachingTest(DispatcherCacheUsecasesTest): + here = os.path.dirname(__file__) + usecases_file = os.path.join( + here, "cache_launch_config_insensitive_usecases.py" + ) + modname = "cuda_multi_device_cache_test_fodder" + + def setUp(self): + DispatcherCacheUsecasesTest.setUp(self) + CUDATestCase.setUp(self) + + def tearDown(self): + CUDATestCase.tearDown(self) + DispatcherCacheUsecasesTest.tearDown(self) + + def test_cache_separate_per_compute_capability(self): + gpus = list(cuda.gpus) + if len(gpus) < 2: + self.skipTest("requires at least two GPUs") + + cc_map = {} + for gpu in gpus: + cc_map.setdefault(gpu.compute_capability, []).append(gpu.id) + + if len(cc_map) < 2: + self.skipTest( + "requires at least two distinct compute capabilities" + ) + + for cc, ids in sorted(cc_map.items()): + dev_id = ids[0] + with cuda.gpus[dev_id]: + mod = self.import_module() + mod.launch(32) + hits = sum(mod.cache_kernel.stats.cache_hits.values()) + misses = sum(mod.cache_kernel.stats.cache_misses.values()) + self.assertEqual( + hits, 0, f"unexpected cache hit for CC {cc}" + ) + self.assertEqual( + misses, 1, f"expected cache miss for CC {cc}" + ) + + mod2 = self.import_module() + mod2.launch(32) + hits = sum(mod2.cache_kernel.stats.cache_hits.values()) + misses = sum(mod2.cache_kernel.stats.cache_misses.values()) + self.assertEqual( + hits, 1, f"expected cache hit for CC {cc}" + ) + self.assertEqual( + misses, 0, f"unexpected cache miss for CC {cc}" + ) + + @skip_on_cudasim("Simulator does not implement caching") class CUDACooperativeGroupTest(DispatcherCacheUsecasesTest): # See Issue #9432: https://github.com/numba/numba/issues/9432 From 3685a6fa8b0fbc0d6e2418f731a17a4bef06357d Mon Sep 17 00:00:00 2001 From: Trent Nelson Date: Wed, 18 Feb 2026 19:46:41 -0800 Subject: [PATCH 5/7] Harden LCS cache marker handling for disk cache safety --- numba_cuda/numba/cuda/dispatcher.py | 39 ++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/numba_cuda/numba/cuda/dispatcher.py b/numba_cuda/numba/cuda/dispatcher.py index f22285d37..87238fe24 100644 --- a/numba_cuda/numba/cuda/dispatcher.py +++ b/numba_cuda/numba/cuda/dispatcher.py @@ -799,14 +799,16 @@ def is_launch_config_sensitive(self): def mark_launch_config_sensitive(self): if self._launch_config_sensitive_flag is True: - return + return True try: self._impl.locator.ensure_cache_path() with open(self._launch_config_marker_path, "a"): pass except OSError: - return + self._launch_config_sensitive_flag = False + return False self._launch_config_sensitive_flag = True + return True def flush(self): super().flush() @@ -2060,16 +2062,32 @@ def compile(self, sig): # Can we load from the disk cache? kernel = self._cache.load_overload(sig, self.targetctx) - if kernel is not None: - self._cache_hits[sig] += 1 - if isinstance(self._cache, CUDACache) and getattr( - kernel, "launch_config_sensitive", False - ): - self._cache.mark_launch_config_sensitive() + if ( + kernel is not None + and isinstance(self._cache, CUDACache) + and getattr(kernel, "launch_config_sensitive", False) + ): + cache_has_marker = self._cache.is_launch_config_sensitive() + if not cache_has_marker: + # Pre-existing cache entries without a launch-config marker are + # unsafe for LCS kernels. Force a recompile under the new key. if launch_config is not None: self._cache.set_launch_config_key( self._launch_config_key(launch_config) ) + if not self._cache.mark_launch_config_sensitive(): + # If we cannot record the marker, disable disk cache to + # avoid unsafe reuse. + self._cache = NullCache() + kernel = None + else: + if launch_config is not None: + self._cache.set_launch_config_key( + self._launch_config_key(launch_config) + ) + + if kernel is not None: + self._cache_hits[sig] += 1 else: # We need to compile a new kernel self._cache_misses[sig] += 1 @@ -2082,11 +2100,14 @@ def compile(self, sig): if isinstance(self._cache, CUDACache) and getattr( kernel, "launch_config_sensitive", False ): - self._cache.mark_launch_config_sensitive() if launch_config is not None: self._cache.set_launch_config_key( self._launch_config_key(launch_config) ) + if not self._cache.mark_launch_config_sensitive(): + # If we cannot record the marker, disable disk cache to + # avoid unsafe reuse. + self._cache = NullCache() self._cache.save_overload(sig, kernel) self.add_overload(kernel, argtypes) From f083b40bcc56e5964da88bf64cc6c472d4342303 Mon Sep 17 00:00:00 2001 From: Trent Nelson Date: Thu, 19 Feb 2026 18:55:30 -0800 Subject: [PATCH 6/7] Sync with main. --- LAUNCH-CONFIG-CODEX-PROMPT.md | 155 ++++++++---------- LAUNCH-CONFIG-TODO.md | 96 +++++------ LAUNCH-CONFIG.md | 11 ++ numba_cuda/numba/cuda/compiler.py | 9 + numba_cuda/numba/cuda/dispatcher.py | 23 +++ .../cache_launch_config_sensitive_usecases.py | 4 +- .../cudapy/test_launch_config_sensitive.py | 4 +- scripts/bench-launch-overhead.py | 7 +- 8 files changed, 171 insertions(+), 138 deletions(-) diff --git a/LAUNCH-CONFIG-CODEX-PROMPT.md b/LAUNCH-CONFIG-CODEX-PROMPT.md index 441916a45..f4c3f2a26 100644 --- a/LAUNCH-CONFIG-CODEX-PROMPT.md +++ b/LAUNCH-CONFIG-CODEX-PROMPT.md @@ -1,87 +1,68 @@ -# Codex Prompt: Launch Config Benchmarking (Baseline vs Contextvar vs V2) - -You are working in the `numba-cuda` repo with three branches/worktrees: -- **baseline**: main (or a specific baseline ref) in `~/src/numba-cuda-main` -- **contextvar**: old implementation in `~/src/numba-cuda` (branch `280-launch-config-contextvar`) -- **v2**: new implementation in `~/src/280-launch-config-v2` (branch `280-launch-config-v2`) - -Your goal is to benchmark CUDA kernel launch overhead across all three. - -## Key Artifacts -- `scripts/bench-launch-overhead.py` (micro-benchmark for launch overhead) -- `scripts/bench-against.py` (two-ref compare helper) -- Pixi tasks in `pixi.toml`: - - `bench-launch-overhead` - - `bench` - - `benchcmp` - - `bench-against` - -## Benchmarks to Run -### A) Launch Overhead Micro-Benchmark (Primary) -Run a three-way comparison using the micro-benchmark script. It measures kernel -launch overhead for 0..4 args and reports mean/stdev and deltas vs baseline. - -From `~/src/280-launch-config-v2`: -```bash -pixi run -e cu-12-9-py312 bench-launch-overhead \ - --repo baseline=$HOME/src/numba-cuda-main \ - --repo contextvar=$HOME/src/numba-cuda \ - --repo v2=$HOME/src/280-launch-config-v2 -``` - -Notes: -- The script will `pip install -e` each repo by default. If you already have - them installed in the active environment, add `--no-install`. -- You can change the Python interpreter with `--python /path/to/python`. -- You can tune loops with `--loops 200000,200000,200000,200000,20000`. -- Use `--output results.json` to save output. - -### B) Broader Benchmarks (Optional) -Use the full pytest benchmark suite for more coverage: - -```bash -pixi run -e cu-12-9-py312 bench -``` - -If you want to compare two refs in a temporary worktree: - -```bash -pixi run -e cu-12-9-py312 bench-against BASELINE_REF PROPOSED_REF -``` - -## Environment Expectations -- GPU available (the micro-benchmark refuses to run under CUDA simulator). -- Use the same CUDA toolkit + driver across all runs. -- Ensure `pixi` env `cu-12-9-py312` (or equivalent) is available. - -## Data to Capture -- Full stdout from `bench-launch-overhead` (table + deltas) -- Optional JSON output for records -- Device info from the benchmark output (GPU name, CC, CUDA runtime version) -- Git SHAs for all three repos - -## Interpretation Guidance -- Focus on delta vs baseline for each arg count. -- Large increases (e.g., +30–50%) are likely unacceptable for the new - implementation if the contextvar branch is already known to be slower. -- If v2 overhead is close to baseline and materially below contextvar, that - supports adopting v2. - -## Cleanup / Reporting -- Summarize results in a short table: - - mean ± stdev for each arg count - - delta vs baseline for each branch -- Note any anomalies (e.g., variance, outliers, or errors) -- If results are noisy, increase repeats or loops and rerun. - -## Troubleshooting -- If you see nvjitlink or compilation failures, verify that the active `pixi` - environment has CUDA toolchain components compatible with the driver. -- If results are all identical, ensure each repo is actually installed (and - not accidentally shadowed by an earlier editable install). Check `pip show - numba-cuda` and `python -c "import numba_cuda,inspect;print(numba_cuda.__file__)"`. - -## Deliverables -- A concise report of the measured overheads and deltas for baseline vs - contextvar vs v2. -- A short conclusion on whether v2 overhead is acceptable. +# Codex Prompt: Launch Config Sensitive (LC-S) work for cuda.coop + +You are resuming launch-config work in `numba-cuda` to support cuda.coop +single-phase. The cache invalidation change for `numba_cuda.__version__` is +already in a separate PR; do not redo that here. + +## Repos / worktrees +- `numba-cuda` (current worktree): `/home/trentn/src/280-launch-config-v2` + - branch: `280-launch-config-v2` +- `numba-cuda` main baseline: `/home/trentn/src/numba-cuda-main` +- cuda.coop repo: `/home/trentn/src/cccl/python/cuda_cccl` + - see `SINGLE-PHASE-*.md` for context + +## Current local state (numba-cuda) +Run: +- `git status -sb` +- `git diff` + +Expected (uncommitted) changes in this worktree: +- `numba_cuda/numba/cuda/compiler.py` + - CUDABackend sets `state.metadata["launch_config_sensitive"] = True` + when the active launch config is explicitly marked. +- `numba_cuda/numba/cuda/dispatcher.py` + - `_LaunchConfiguration` adds explicit API: + `mark_kernel_as_launch_config_sensitive()`, `get_kernel_launch_config_sensitive()`, + `is_kernel_launch_config_sensitive()`. +- `scripts/bench-launch-overhead.py` + - import compatibility for `numba.cuda.core.config` vs `numba.core.config`. +- Untracked: `PR.md`, `tags` (clean up before commit). + +## What is already implemented +- TLS-based launch-config capture in C extension, exposed via + `numba_cuda/numba/cuda/launchconfig.py`. +- Dispatcher plumbing for LC-S (per-config specialization + cache keys + `.lcs` marker). +- Tests for LC-S recompile + cache coverage. +- Docs updated for launch-config introspection. +- In cccl: `cuda/coop/_rewrite.py` now marks LC-S when accessing launch config. + It calls `mark_kernel_as_launch_config_sensitive()` when available, with + fallback to `state.metadata["launch_config_sensitive"] = True`. + +## Open decisions / tasks +1. **Explicit LC-S API decision: keep** + - `_LaunchConfiguration` explicit LC-S API is retained. + - Compiler hook in `CUDABackend` uses this API to set metadata. + - cccl rewrite is updated to use the API when available. + +2. **Run CUDA tests on a GPU** + - `pixi run -e cu-12-9-py312 pytest testing --pyargs numba.cuda.tests.cudapy.test_launch_config_sensitive -k launch_config_sensitive` + - `pixi run -e cu-12-9-py312 pytest testing --pyargs numba.cuda.tests.cudapy.test_caching -k launch_config_sensitive` + - Status: both passing on GPU in this worktree. + +3. **Validate disk-cache behavior across processes** + - Ensure `.lcs` marker + launch-config cache keying behave correctly. + - Status: covered by + `LaunchConfigSensitiveCachingTest.test_launch_config_sensitive_cache_keys` + in `test_caching.py` (passes, includes separate-process verification). + +4. **Audit launch paths** + - Confirm all kernel launch paths go through `CUDADispatcher.call()`. + - Status: Python launch paths in `dispatcher.py` verified. + +5. **Commit / cleanup** + - Remove untracked `PR.md` and `tags`. + - Prepare commit(s) for the launch-config work. + +## Notes +- If you need to re-run the overhead micro-benchmark, see `LAUNCH-CONFIG.md`. +- Update `LAUNCH-CONFIG-TODO.md` with any new decisions or test results. diff --git a/LAUNCH-CONFIG-TODO.md b/LAUNCH-CONFIG-TODO.md index 0e6255af0..ff6645359 100644 --- a/LAUNCH-CONFIG-TODO.md +++ b/LAUNCH-CONFIG-TODO.md @@ -1,54 +1,58 @@ # Launch Config Sensitive (LC-S) plumbing -## Context / findings -- Current launchconfig capture is compile-time only. It is injected into the TLS only around `cuda_compile_only(...)` in `numba_cuda/numba/cuda/cext/_dispatcher.cpp` and read via `numba_cuda/numba/cuda/launchconfig.py`. -- This means `launchconfig.current_launch_config()` is only non-`None` while compilation is happening; cache hits do not update it. -- CUDA kernel compilation cache is keyed only by argument types. For rewrites that depend on launch config (e.g. cuda.coop using blockdim to select CUB algorithms or to size buffers), reusing a compiled kernel with a different grid/block config is unsafe. +Last updated: 2026-02-19 -## Test-first scaffolding added -- New test file: `numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py`. -- It registers a custom `Rewrite` for a single kernel name, and mimics cuda.coop behavior: - - Reads launch config during rewrite via `launchconfig.ensure_current_launch_config()`. - - Logs config to a global list (`LAUNCH_CONFIG_LOG`). - - Sets `state.metadata["launch_config_sensitive"] = True` so later compilation can observe it. -- The test launches the same kernel twice with different block sizes and **expects two log entries** (i.e. a recompile per launch-config change). -- This test should FAIL before the fix (only first launch compiles/logs). +## Current status (summary) +- Launch-config TLS capture exists in C extension and is exposed via + `numba_cuda/numba/cuda/launchconfig.py` (current/ensure/capture helpers). +- Dispatcher plumbing for LC-S is implemented: + - `_Kernel` captures `launch_config_sensitive` from compile metadata. + - `CUDADispatcher` tracks LC-S and routes to per-launch-config sub-dispatchers. + - Disk cache includes a launch-config key and LC-S marker file (`.lcs`). +- Tests added: + - `numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py` + - `numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_sensitive_usecases.py` + - `numba_cuda/numba/cuda/tests/cudapy/test_caching.py` LC-S coverage +- Docs updated: `docs/source/reference/kernel.rst`. +- In cccl, `cuda/coop/_rewrite.py` now marks LC-S when accessing launch config. + It uses the explicit LaunchConfiguration API when available, with fallback to + `state.metadata["launch_config_sensitive"] = True` for compatibility. +- CUDA tests run and passing on GPU in this worktree: + - `pixi run -e cu-12-9-py312 pytest testing --pyargs numba.cuda.tests.cudapy.test_launch_config_sensitive -k launch_config_sensitive` + - `pixi run -e cu-12-9-py312 pytest testing --pyargs numba.cuda.tests.cudapy.test_caching -k launch_config_sensitive` -## ✅ Launch-config-sensitive plumbing (implemented) -- `_Kernel` now captures `launch_config_sensitive` from compile metadata. -- `CUDADispatcher` now: - - tracks launch-config sensitivity - - computes a launch-config key `(griddim, blockdim, sharedmem)` - - routes calls for new configs to per-config sub-dispatchers - - keeps the original dispatcher as the default config -- This avoids TypeManager conflicts and allows multiple compiled kernels per argtypes when launch config differs. -- Implemented in `numba_cuda/numba/cuda/dispatcher.py`. +## Local working tree state (numba-cuda) +- Branch: `280-launch-config-v2` +- Modified files (uncommitted): + - `numba_cuda/numba/cuda/compiler.py` + - `numba_cuda/numba/cuda/dispatcher.py` + - `scripts/bench-launch-overhead.py` +- Untracked: `PR.md`, `tags` -## Remaining TODO -1. **Run the new test on a CUDA machine** - - `python -m pytest numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py -k launch_config_sensitive` +## New (uncommitted) LC-S API work +- `_LaunchConfiguration` gains explicit helpers: + - `mark_kernel_as_launch_config_sensitive()` + - `get_kernel_launch_config_sensitive()` + - `is_kernel_launch_config_sensitive()` +- `CUDABackend` sets metadata when the launch config is explicitly marked. + This provides an official path to mark LC-S without poking at `state.metadata` + directly from rewrites. -2. **Disk cache interaction** - - Disk cache key currently ignores launch config. For LC‑S kernels, decide: - - disable caching, or - - extend cache key to include launch config, or - - use a separate cache path keyed by launch config. - - Ensure kernel rebuild path preserves `launch_config_sensitive` if needed. +## Remaining TODO +1. **Cleanup** + - Remove or handle untracked `PR.md` and `tags` before committing. -3. **Check for any additional call sites** - - Make sure all kernel launch paths for CUDADispatcher go through `call(...)` so the dispatcher selection is effective. +## Completed checks (2026-02-19) +- **Cross-process disk-cache behavior** + - Verified by: + `pixi run -e cu-12-9-py312 pytest testing --pyargs numba.cuda.tests.cudapy.test_caching -k launch_config_sensitive` + - `LaunchConfigSensitiveCachingTest.test_launch_config_sensitive_cache_keys` + exercises cache reuse in a separate process and passed. +- **Launch path audit** + - Python launch paths in `dispatcher.py` all route through + `CUDADispatcher.call()`: `__getitem__()` -> `configure()` -> + `_LaunchConfiguration.__call__()` -> `call()`, plus `ForAll.__call__()`. -## Files changed so far -- `docs/source/reference/kernel.rst` -- `numba_cuda/numba/cuda/cext/_dispatcher.cpp` -- `numba_cuda/numba/cuda/dispatcher.py` -- `numba_cuda/numba/cuda/launchconfig.py` (new) -- `numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py` -- `numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py` (new) -- `LAUNCH-CONFIG.md` -- `LAUNCH-CONFIG-CODEX-PROMPT.md` -- `LAUNCH-CONFIG-TODO.md` -- `pixi.toml` -- `scripts/bench-launch-overhead.py` -- `scripts/plot-launch-overhead.py` -- `plots/` +## Notes +- Separate PR for cache invalidation on `numba_cuda.__version__` is already + pushed; do not re-implement here. diff --git a/LAUNCH-CONFIG.md b/LAUNCH-CONFIG.md index f0ac577cc..8865358e8 100644 --- a/LAUNCH-CONFIG.md +++ b/LAUNCH-CONFIG.md @@ -4,6 +4,17 @@ This repo includes lightweight benchmarking scaffolding to quantify CUDA kernel launch overhead across three launch-config implementations (baseline, old contextvar branch, and the new v2 branch). +## Status / Next Steps (Launch Config Work) +- LC-S plumbing is implemented in `dispatcher.py` and supporting files. +- CUDA LC-S tests have been run on GPU in this branch and are passing. +- There are uncommitted changes in `compiler.py`, `dispatcher.py`, and + `scripts/bench-launch-overhead.py` that add an explicit LC-S API on + `_LaunchConfiguration` and a compiler hook to honor it. +- cccl rewrite integration now uses the explicit LC-S API with a fallback to + metadata for compatibility. +- Cross-process disk-cache behavior is covered by LC-S caching tests and passes. +- See `LAUNCH-CONFIG-TODO.md` for a detailed handoff checklist. + ## What’s Included ### 1) `scripts/bench-launch-overhead.py` diff --git a/numba_cuda/numba/cuda/compiler.py b/numba_cuda/numba/cuda/compiler.py index 2d908632d..4f666209d 100644 --- a/numba_cuda/numba/cuda/compiler.py +++ b/numba_cuda/numba/cuda/compiler.py @@ -15,6 +15,7 @@ from numba.cuda.core.interpreter import Interpreter from numba.cuda import cgutils, typing, lowering, nvvmutils, utils +from numba.cuda import launchconfig from numba.cuda.api import get_current_device from numba.cuda.codegen import ExternalCodeLibrary @@ -398,6 +399,14 @@ def run_pass(self, state): """ lowered = state["cr"] signature = typing.signature(state.return_type, *state.args) + launch_cfg = launchconfig.current_launch_config() + if ( + launch_cfg is not None + and launch_cfg.is_kernel_launch_config_sensitive() + ): + if state.metadata is None: + state.metadata = {} + state.metadata["launch_config_sensitive"] = True state.cr = cuda_compile_result( typing_context=state.typingctx, diff --git a/numba_cuda/numba/cuda/dispatcher.py b/numba_cuda/numba/cuda/dispatcher.py index 87238fe24..65488f5f5 100644 --- a/numba_cuda/numba/cuda/dispatcher.py +++ b/numba_cuda/numba/cuda/dispatcher.py @@ -704,6 +704,7 @@ def __init__(self, dispatcher, griddim, blockdim, stream, sharedmem): self.sharedmem = sharedmem self.pre_launch_callbacks = [] self.args = None + self._kernel_launch_config_sensitive = None if ( config.CUDA_LOW_OCCUPANCY_WARNINGS @@ -729,6 +730,28 @@ def __init__(self, dispatcher, griddim, blockdim, stream, sharedmem): def __call__(self, *args): return self.dispatcher.call(args, self) + def mark_kernel_as_launch_config_sensitive(self): + """Mark this configured launch path as launch-config sensitive. + + Once set, this flag is intentionally sticky for this + ``_LaunchConfiguration`` instance. This aligns with the expected LC-S + use case: if code generation depends on launch config for this + kernel/configuration path, treat it as launch-config sensitive for all + subsequent compilations through the same configured launcher. + """ + self._kernel_launch_config_sensitive = True + + def get_kernel_launch_config_sensitive(self): + """Return the launch-config sensitivity flag. + + The result is ``None`` if no explicit decision was made. + """ + return self._kernel_launch_config_sensitive + + def is_kernel_launch_config_sensitive(self): + """Return True if this kernel was marked as launch-config sensitive.""" + return bool(self._kernel_launch_config_sensitive) + def __getstate__(self): state = self.__dict__.copy() state["stream"] = int(state["stream"].handle) diff --git a/numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_sensitive_usecases.py b/numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_sensitive_usecases.py index 1ff565b21..669007622 100644 --- a/numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_sensitive_usecases.py +++ b/numba_cuda/numba/cuda/tests/cudapy/cache_launch_config_sensitive_usecases.py @@ -34,8 +34,8 @@ def match(self, func_ir, block, typemap, calltypes): def apply(self): # Ensure launch config is available and mark compilation as # launch-config sensitive so the disk cache keys include it. - launchconfig.ensure_current_launch_config() - self._state.metadata["launch_config_sensitive"] = True + cfg = launchconfig.ensure_current_launch_config() + cfg.mark_kernel_as_launch_config_sensitive() self._logged = True return self._block diff --git a/numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py b/numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py index 81ade9eea..744a52532 100644 --- a/numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py +++ b/numba_cuda/numba/cuda/tests/cudapy/test_launch_config_sensitive.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: BSD-2-Clause import numpy as np @@ -51,7 +51,7 @@ def apply(self): ) # Mark compilation as launch-config sensitive so the dispatcher can # avoid reusing the compiled kernel across different launch configs. - self._state.metadata["launch_config_sensitive"] = True + cfg.mark_kernel_as_launch_config_sensitive() self._logged = True return self._block diff --git a/scripts/bench-launch-overhead.py b/scripts/bench-launch-overhead.py index e02e8cb95..2f8b406cc 100644 --- a/scripts/bench-launch-overhead.py +++ b/scripts/bench-launch-overhead.py @@ -71,7 +71,12 @@ def _run_worker(label, loops, repeats, json_only): import numpy as np import numba from numba import cuda - from numba.cuda.core import config + + try: + from numba.cuda.core import config + except ModuleNotFoundError: + # Older branches use numba.core.config instead of numba.cuda.core. + from numba.core import config if config.ENABLE_CUDASIM: raise RuntimeError("CUDA simulator enabled; benchmarks require GPU.") From 40c3c5cb8107efa55bd59787af2e57937e2027f2 Mon Sep 17 00:00:00 2001 From: Trent Nelson Date: Fri, 20 Feb 2026 14:29:40 -0800 Subject: [PATCH 7/7] Update plots. --- plots/launch-overhead-abs.png | Bin 68463 -> 82035 bytes plots/launch-overhead-abs.svg | 1568 ++++++++++++++++++++++++++ plots/launch-overhead-pct.png | Bin 0 -> 108350 bytes plots/launch-overhead-pct.svg | 1851 ++++++++++++++++++++++++++++++ plots/launch-overhead-us.png | Bin 0 -> 112465 bytes plots/launch-overhead-us.svg | 1866 +++++++++++++++++++++++++++++++ scripts/plot-launch-overhead.py | 12 + 7 files changed, 5297 insertions(+) create mode 100644 plots/launch-overhead-abs.svg create mode 100644 plots/launch-overhead-pct.png create mode 100644 plots/launch-overhead-pct.svg create mode 100644 plots/launch-overhead-us.png create mode 100644 plots/launch-overhead-us.svg diff --git a/plots/launch-overhead-abs.png b/plots/launch-overhead-abs.png index a86353a2b4300db939b14f9e71df839300133d92..d3238c5d13b6fbe04f1039c520588ec253fa49f2 100644 GIT binary patch literal 82035 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