Keyword arguments are silently ignored when a decorated function is called without positional arguments
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 2/5
- 預估耗時
- 1-3 小時
- 新手友好度
- 76/100
- Issue 類型
- 缺陷
- 描述清晰度
- 描述清楚
- 活躍度
- 活躍
- 技術堆疊
- python
- 領域
- performance
研究方向
從 nsight/collection/core.py 開始,追蹤 _sanitize_configs 周圍以及 if len(args) > 0 檢查處的呼叫時設定處理。閱讀 test_config_at_call_time_with_kwargs,並為僅使用關鍵字引數的呼叫(例如 bench(n=4096))補上測試涵蓋。完成標準是:關鍵字引數要麼用作設定,要麼一律引發文件所述的 ProfilerException,且不會默默回退到預設值。
由索引模型根據 Issue 內容生成。
描述
Description
Calling a function decorated with @nsight.analyze.kernel with only keyword arguments drops them. The call is profiled with the parameter default (or with the decorator-time configs), and the results report that configuration instead of the requested one. No error or warning is raised.
import nsight
import torch
@nsight.analyze.kernel
def bench(n: int = 64) -> None:
a = torch.randn(n, n, device="cuda")
b = torch.randn(n, n, device="cuda")
with nsight.annotate("add"):
_ = a + b
df = bench(n=4096).to_dataframe()
print(df[["Annotation", "n", "Metric"]]) # n is 64, not 4096
The same happens with @nsight.analyze.kernel(configs=[(64,)]) and bench(n=4096).
bench(42, y=23) already raises ProfilerException: Keyword arguments are not supported yet: ['y'] (_sanitize_configs in nsight/collection/core.py, tested by test_config_at_call_time_with_kwargs). That check sits inside if len(args) > 0:, so it is skipped when there are no positional arguments.
Expected
The same ProfilerException, or the keyword arguments being used as the configuration.
Environment
nsight-python main at c89d4b5, Python 3.12.3, Linux x86_64.
How this was checked: no GPU was available, so the profiling backend was replaced by a mock (NVTX ranges and NCUCollector.collect). Config handling, the run loop, extraction and aggregation were the real nsight code. An equivalent script with the kernel launch stubbed out shows n=64 in the results for both cases (requested n=4096, profiled n=64). It has not been run on a GPU with NCU or CUPTI.
A small fix is ready if you approve it: move the existing check out of the if len(args) > 0: block, so keyword arguments raise the same ProfilerException on every call, and add a test next to test_config_at_call_time_with_kwargs. That turns today's silent wrong result into an error for callers who use bench(n=...). Supporting keyword arguments instead would be your call.
This was found with an AI coding assistant (Claude Code, claude-fable-5-2), which also wrote and ran the mocked repro and drafted this report.
- 主要語言
- Python
- 星號
- 301
- 分支
- 23
- 平均合併
- 2 天 20 小時
- 30 天內合併 PR
- 12
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
NVIDIA/nsight-python 的其他 Issue
-
難度 3/5 1-2 天 新手友好度 54/100
NVIDIA/nsight-python#89 ·
維護者通常 1 天內回覆
-
Enable collecting metrics from a set可能重新可做 @Alok-Joshi 於 57 天前認領,目前沒有進行中的 PR。 未關閉
NVIDIA/nsight-python#7 · 3 則留言 · 已指派 1 人 ·
維護者通常 1 天內回覆
查看 NVIDIA/nsight-python 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 84/100
FAIRmat-NFDI/pynxtools#861 ·
-
Criteria can pass when the deliverable is missing可能已有人在做 @clementtisseau 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 68/100
harveyai/harvey-labs#217 ·
維護者通常 2 天內回覆
-
難度 2/5 1-3 小時 新手友好度 62/100
維護者通常 1 天內回覆
-
priority/medium roadmap/v1.1.1 stakeholder/rapr type/bug
難度 2/5 1-3 小時 新手友好度 83/100
databrickslabs/ontos#1420 ·
維護者通常 3 天內回覆
-
[Bug] method_logger uses fragile definition-time inspect stack frame instead of func.__qualname__未關閉bug
難度 2/5 1-3 小時 新手友好度 76/100
維護者通常 1 天內回覆