pycharm不指定gpu,真正起作用的是环境变量cuda_visible_devices和代码中对torch.device或tf.config的调用;需在pycharm运行配置中设置cuda_visible_devices、勾选继承父环境变量,并在代码中显式调用.to("cuda")或torch.device("cuda"),最后通过nvidia-smi、x.device输出和报错信息三重验证gpu是否真正启用。

PyCharm 本身不指定 GPU,真正起作用的是环境变量 CUDA_VISIBLE_DEVICES 和代码中对 torch.device 或 tf.config 的调用。直接改 PyCharm 配置就能生效,但漏掉任一环节都会 fallback 到 CPU。
PyCharm 运行配置里加 CUDA_VISIBLE_DEVICES
这是最常用、也最推荐的起点——它控制底层 CUDA 运行时“看得到哪些 GPU”,后续框架(PyTorch/TensorFlow)全按这个过滤后的设备列表来初始化。
- 打开右上角运行配置下拉菜单 → Edit Configurations
- 在 Environment variables 栏填入:
CUDA_VISIBLE_DEVICES=0(想用第 1 块卡)或CUDA_VISIBLE_DEVICES=1,2(只暴露第 2、3 块卡) - 务必勾选 “Include parent environment variables”,否则子进程可能继承不到
- 保存后运行脚本,
torch.cuda.device_count()返回值会变,nvidia-smi显示的显存占用也会对应变化
代码里必须显式调用 .to("cuda") 或 torch.device("cuda")
即使 CUDA_VISIBLE_DEVICES 设对了,PyTorch 默认仍把模型和张量放在 CPU 上。不手动迁移,GPU 就是空转。
PyCharm 2026.2提供 JetBrains 官方 2026.2 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 检查可用性:
torch.cuda.is_available()必须返回True,否则前面配置白搭 - 正确写法:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu"),然后model.to(device)、data.to(device) - 常见错误:
model.cuda()在多卡环境下可能默认选错卡(比如CUDA_VISIBLE_DEVICES=1时,cuda()仍可能映射到逻辑 ID 0),优先用.to(device) - 注意:
torch.cuda.set_device(0)是全局设置,但只影响当前线程,且必须在.to("cuda")前调用,否则无效
验证是否真在用 GPU 的三个硬指标
光看 is_available() 返回 True 不够,得确认计算真的发生在 GPU 上。
- 运行时执行
nvidia-smi:对应 GPU 的Memory-Usage应明显上升,且Process Name里有你的 Python 进程 PID - 检查张量设备:
print(x.device)输出应为cuda:0,不是cpu或cuda:1(若你设了CUDA_VISIBLE_DEVICES=0却看到cuda:1,说明环境变量没生效) - 报错信息线索:如果出现
Expected all tensors to be on the same device,基本就是部分张量在 CPU、部分在 GPU,设备没对齐
最容易被忽略的是:PyCharm 的 Terminal 和 Run 配置用的是两套环境变量。你在 Terminal 里手动 export CUDA_VISIBLE_DEVICES=0 再跑 python train.py 成功,不代表 Run 按钮就一定成功——必须单独配 Run/Debug Configurations。另外,某些旧版 PyTorch(如 1.7 之前)对 CUDA_VISIBLE_DEVICES 的解析有 bug,建议用 1.10+ 版本。










