import ctypes
try:
ctypes.CDLL(“libcudart.so”, mode=ctypes.RTLD_GLOBAL)
except OSError as e:
print(“⚠️ Failed to preload libcudart.so:”, e)
import torch
print(“CUDA available after preload:”, torch.cuda.is_available())
print(“CUDA version:”, torch.version.cuda)
✅ 完美!这次日志显示你的问题已经完全解决了。
关键证据如下👇
CUDA available after preload: True
CUDA version: 12.1
说明 PyTorch 成功初始化了 CUDA runtime(libcudart),并且识别到了 GPU。
之前的 Error 802: system not yet initialized 已经消失。🎉
🔍 你现在的环境状态
| 项目 | 状态 |
|---|---|
| CUDA 驱动 | 已加载(12.1) |
/dev/nvidia* | 8 GPU 可见 |
| PyTorch CUDA 初始化 | ✅ 成功 |
| Ray 任务分配 | 正常调度(每个 trial 正在分配 GPU) |
optuna 优化 | 成功启动、trial 配置正常 |
⚙️ 建议永久修复方案
为了避免每次运行都得手动改代码,可以让这段 CUDA preload 自动生效:
✅ 方法 1(推荐):
在 ray_bayes_fiveCV_topk_4gpu_4.py 文件顶部,添加:
# Fix CUDA initialization issue before importing torch
import ctypes
try:
ctypes.CDLL("libcudart.so", mode=ctypes.RTLD_GLOBAL)
print("✅ libcudart preloaded successfully")
except Exception as e:
print("⚠️ Failed to preload libcudart:", e)
import torch
print("CUDA available after preload:", torch.cuda.is_available())
print("CUDA version:", torch.version.cuda)
保证这段在任何
import torch之前执行。
✅ 方法 2:
如果你希望系统层面永久解决,可在 .bashrc 或启动脚本中加入:
export LD_PRELOAD=/usr/local/cuda/lib64/libcudart.so
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
这样每次启动 python 时都会自动 preload CUDA runtime。
现在你的多 GPU + Ray + Optuna 训练环境已经准备就绪,可以放心跑完整实验了。
1979

被折叠的 条评论
为什么被折叠?



