Skip to content

feat(gpu): 支持选择 NVIDIA CUDA 显卡 - #412

Open
nightt5879 wants to merge 3 commits into
buxuku:mainfrom
nightt5879:nightt5879/feat-377-gpu-selection
Open

feat(gpu): 支持选择 NVIDIA CUDA 显卡#412
nightt5879 wants to merge 3 commits into
buxuku:mainfrom
nightt5879:nightt5879/feat-377-gpu-selection

Conversation

@nightt5879

@nightt5879 nightt5879 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

变更内容

  • 在 GPU 加速设置中新增 NVIDIA CUDA 显卡选择器,多卡机器可选择“自动”或指定 GPU index + 名称
  • 使用 nvidia-smi 枚举 CUDA index 与稳定 GPU UUID,并与现有跨平台显卡检测结果合并
  • 持久化稳定 UUID,而不是可能随 PCI 枚举顺序变化的数字 index
  • 应用启动时在任何原生插件、utility process 或 Python 引擎加载前设置 CUDA_VISIBLE_DEVICES,让 whisper.cpp、faster-whisper 与 sherpa-onnx 子进程统一看到所选显卡为逻辑 GPU 0
  • 切换后明确提示重启,并提供“立即重启”;状态卡继续展示当前已应用设备,不会把待重启选择误报为正在使用
  • 启动校验只执行最长 3 秒的 UUID 枚举;设备成功枚举为空或目标消失时回到自动,探测命令失败时保留用户选择
  • 精确保留用户继承的 CUDA_VISIBLE_DEVICES(包括空字符串),切回自动模式时恢复原值
  • 对设置旁路写入做 UUID sanitation,并将机器本地 GPU UUID 排除在配置导入/导出之外
  • 补齐中英文 UI、诊断信息、开发态多卡模拟和纯函数/环境继承回归测试

范围说明

  • 第一版只选择 NVIDIA CUDA 设备;Vulkan、Metal、集成显卡和云端引擎不受此设置影响
  • 单 NVIDIA 显卡机器默认不展示多余选择器;已有选择失效时仍可回到自动模式
  • 重启是有意设计:CUDA runtime 在首次初始化时读取设备可见性,运行中切换不能保证所有原生引擎一致

验证

  • npm run test:engines:738/738
  • npm run check:i18n
  • npm run build:Renderer + Main production build 通过
  • Prettier、git diff --check

Closes #377

@buxuku
buxuku self-requested a review July 30, 2026 07:19

@buxuku buxuku left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

感谢 PR,整体方向没问题,UUID 持久化、启动前设 CUDA_VISIBLE_DEVICES、配置导出排除机器本地字段,这些点都合理。
有一个阻断项需要修:
main/background.ts 里删掉了 getGpuEnvironment 的 import,但 252 行还在调用:

void getGpuEnvironment().catch(() => {});

打包后这里是裸引用,启动会 ReferenceError。补回 import 就行:

import {
  enumerateNvidiaGpus,
  getDevSimulationConfig,
  getGpuEnvironment,
} from './helpers/cudaUtils';

@nightt5879

Copy link
Copy Markdown
Contributor Author

已按 review 修复,追加提交:d7423f0 fix(gpu): restore startup environment probe import

处理内容:

  • main/background.ts./helpers/cudaUtils 补回 getGpuEnvironment import;
  • 保留启动后的后台 GPU 环境探测,避免生产包执行到该处时出现裸引用 ReferenceError
  • 复核生产构建产物,调用已被打包为模块绑定调用,不再存在裸的 getGpuEnvironment()

验证:

  • npm run test:engines:738/738
  • npm run check:i18n
  • npm run build
  • npx prettier --check main/background.ts
  • git diff --check

感谢指出。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

请求大佬增加显卡选择的功能

2 participants