要确认CUDA程序真正调用本地NVIDIA GPU,须通过deviceQuery和bandwidthTest验证设备识别与内存带宽,用nvidia-smi实时观察GPU-Util跳升,并用PyTorch脚本触发真实kernel执行且返回计算结果。

要确认CUDA程序是否真正调用了本地NVIDIA GPU显卡,不能只看nvcc --version或nvidia-smi能运行——这两者只说明编译器存在、驱动加载成功,不代表你的CUDA代码实际跑在GPU上。必须通过可执行的CUDA测试程序触发真实核函数调度,并观察GPU实时负载变化。
用deviceQuery验证GPU设备枚举与计算能力
打开命令提示符(cmd),进入CUDA安装目录下的demo_suite文件夹,例如:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\extras\demo_suite。
将deviceQuery.exe拖入命令行窗口后回车执行。
若输出末尾显示Result = PASS,且列出至少一个设备(如“Device 0: 'NVIDIA GeForce RTX 4090'”),说明CUDA Runtime已成功识别GPU并读取其Compute Capability(如8.6);若显示“no CUDA-capable device is detected”,则驱动未加载、GPU被禁用或PCIe链路异常。
用bandwidthTest验证GPU内存带宽实际启用
在同一目录下,将bandwidthTest.exe拖入命令行并回车。
观察输出中“Host to Device Bandwidth”和“Device to Host Bandwidth”两行数值——正常应达数GB/s(如RTX 4090可达20+ GB/s)。若数值恒为0 MB/s或提示“Failed to allocate device memory”,说明CUDA上下文创建失败,常见原因是显存被其他进程(如桌面窗口管理器、浏览器GPU加速)长期占用,需重启Windows资源管理器或临时关闭图形应用。
这一步操作起来很简单,直接把文件拖进去就行。
用nvidia-smi实时监控GPU计算负载
方法一:启动CUDA测试程序后,立即在另一cmd窗口运行nvidia-smi,观察“GPU-Util”列是否从0%跳升至30%以上。
方法二:运行nvidia-smi -l 1(每秒刷新一次),同时在原窗口重复执行deviceQuery,你会看到GPU-Util瞬时冲高再回落——这才是CUDA kernel真正被调度执行的铁证。
【注意:若GPU-Util始终为0%,哪怕deviceQuery显示PASS,也代表CUDA调用被静默降级到CPU仿真模式】
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
用Python脚本触发真实CUDA kernel执行
第一步:确保已安装PyTorch(含CUDA支持),在conda环境内启动Python解释器。
第二步:依次执行以下命令:
>>> import torch
>>> x = torch.randn(10000, 10000, device='cuda')
>>> y = torch.mm(x, x.t())
>>> y.sum().item()
第三步:执行过程中保持nvidia-smi -l 1运行,你会看到GPU显存占用突增、GPU-Util持续高于60%,且最后一行返回一个浮点数值——这表示矩阵乘法kernel已在GPU上完成计算并同步回主机。
第四步:执行torch.cuda.is_available()返回True只是基础前提,【只有tensor在cuda设备上完成实际运算并产生非零结果,才证明CUDA调用链路完全贯通】










