unable to create StreamExecutor for CUDA:0: failed initializing StreamExecutor for CUDA device...

本文档针对在Ubuntu 16.04环境下,使用CUDA 10.0和CUDNN 7.6.5时遇到的TensorFlow-GPU 2.0初始化CUDA:0失败的问题进行讨论。错误发生于网络初始化前,解决方案是在导入包之后添加特定代码段。参考了多个资源以解决此卷积算法失败的报错。

环境

  • Ubuntu: 16.04
  • CUDA: 10.0
  • CUDNN: 7.6.5

执行情况

$ python3 test.py
2020-10-13 15:20:14.602211: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcuda.so.1
2020-10-13 15:20:14.605874: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1006] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-10-13 15:20:14.606291: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties: 
name: Tesla V100-SXM2-32GB major: 7 minor: 0 memoryClockRate(GHz): 1.53
pciBusID: 0000:00:08.0
2020-10-13 15:20:14.606480: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.0
2020-10-13 15:20:14.607907: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10.0
2020-10-13 15:20:14.609115: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10.0
2020-10-13 15:20:14.609426: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10.0
2020-10-13 15:20:14.611090: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10.0
2020-10-13 15:20:14.612343: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10.0
2020-10-13 15:20:14.616370: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-10-13 15:20:14.616475: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1006] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-10-13 15:20:14.616929: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1006] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-10-13 15:20:14.617299: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
2020-10-13 15:20:14.617549: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2020-10-13 15:20:14.625251: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2499995000 Hz
2020-10-13 15:20:14.625774: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x560b01298670 executing computations on platform Host. Devices:
<think>我们正在处理一个关于Sim-v0平台初始化错误的问题,错误信息是:“unable to find EGL device for CUDA device 0”。根据错误信息,这涉及到EGL(Embedded-System Graphics Library)和CUDA的交互。EGL是OpenGL ES和OpenVG等渲染API与底层原生窗口系统之间的接口。CUDA是NVIDIA的并行计算平台和编程模型。 根据引用[1]中提到的,不同平台的EGL配置可能有细微差别,需要作为通用移植问题处理。引用[2]则提到了一个由于OpenGL渲染库初始化失败导致的问题,与显卡驱动和硬件加速设置有关。因此,我们可以推测当前问题可能与EGL配置、显卡驱动或硬件加速设置有关。 错误信息表明在尝试为CUDA设备0(通常指第一个NVIDIA GPU)查找对应的EGL设备时失败。这通常发生在使用GPU进行图形渲染或计算时,需要EGL能够识别并连接到CUDA设备。 可能的原因和解决方案: 1. 显卡驱动问题:确保安装了最新的NVIDIA显卡驱动。过时的驱动可能不支持所需的EGL扩展。 2. EGL设备枚举问题:EGL可能无法正确枚举可用的设备,特别是当系统中有多个GPU(如集成显卡和独立显卡)时。 3. 环境配置问题:可能需要设置环境变量来指定使用哪个GPU设备。 4. 权限问题:运行程序的用户可能没有访问GPU设备的权限。 5. 系统硬件加速设置:如引用[2]所述,硬件加速设置不正确可能导致OpenGL初始化失败。 具体步骤: 1. 更新显卡驱动:访问NVIDIA官方网站下载并安装最新的显卡驱动。 2. 检查硬件加速设置(针对Windows系统): 打开“控制面板”->“显示”->“设置”->“高级”->“疑难解答”,将硬件加速滑块调整到最右侧(完全加速)。 3. 设置环境变量: 可以尝试设置环境变量`EGL_DEVICE_ID`来指定EGL设备。例如,在Linux下,可以通过`export EGL_DEVICE_ID=0`来设置。在Windows下,可以在命令提示符中使用`set EGL_DEVICE_ID=0`或在系统环境变量中设置。 另外,也可以尝试设置`CUDA_VISIBLE_DEVICES`环境变量来指定CUDA设备,例如:`export CUDA_VISIBLE_DEVICES=0`(Linux)或`set CUDA_VISIBLE_DEVICES=0`(Windows)。 4. 检查设备枚举: 使用工具如`eglinfo`(在Linux上,可以通过安装`mesa-utils`包获得)来列出可用的EGL设备。在Windows上,可以尝试使用NVIDIA提供的工具(如NVIDIA System Management Interface,nvidia-smi)来检查GPU状态。 5. 权限问题:在Linux系统中,确保用户有权限访问`/dev/nvidia*`设备文件。可以将用户添加到`video`组或`render`组(具体取决于系统配置),或者修改设备文件的权限。 6. 检查系统日志:在Linux下,查看`/var/log/Xorg.0.log`或内核日志(`dmesg`)中是否有与NVIDIA驱动相关的错误信息。在Windows下,可以查看事件查看器中的系统日志。 如果以上步骤不能解决问题,可能需要更深入地检查应用程序或平台的具体配置,确保它正确地请求了EGL设备。 由于错误信息提到“Sim-v0”,这可能是某个特定的模拟器或平台,因此还需要参考该平台的文档或社区支持。 根据引用[3][4][5],这些是关于嵌入式平台(如s3c2410、s3c6410)的I2C设备注册,与当前问题关系不大,但提醒我们设备注册和驱动加载的顺序可能影响设备的可用性。不过,对于PC上的NVIDIA显卡,通常由系统自动管理。 因此,我们首先从驱动和配置入手。 生成相关问题: 1. 如何检查系统上的EGL设备? 2. 如何更新NVIDIA显卡驱动? 3. 如何设置环境变量以指定EGL设备? 4. 为什么CUDA设备0无法找到对应的EGL设备? 5. Sim-v0平台对EGL和CUDA的具体要求是什么?</think>### Sim-v0平台初始化错误分析 根据错误信息`Sim-v0 Platform initializing error: unable to find EGL device for CUDA device 0`,该问题发生在尝试将CUDA设备与EGL图形接口绑定时。以下是根本原因和解决方案: #### 核心问题 1. **EGL-CUDA设备映射失败**:系统无法为CUDA设备0(通常是主GPU)找到对应的EGL渲染设备 2. **图形栈兼容性问题**:通常由以下原因导致: - 显卡驱动未启用OpenGL硬件加速 [^2] - EGL配置与CUDA设备不兼容 [^1] -GPU环境下设备枚举错误 #### 解决方案 1. **启用硬件加速**(Windows系统): ```markdown 控制面板 > 显示 > 设置 > 高级 > 疑难解答 > 将硬件加速滑块拖到最右侧 ``` 这是解决OpenGL初始化的基础步骤 [^2] 2. **更新显卡驱动**: - 访问NVIDIA官网下载最新驱动 - 安装时勾选"清洁安装"选项 - 重启后验证驱动版本:`nvidia-smi` 3. **配置EGL设备映射**: ```bash # Linux/MacOS export EGL_DEVICE_ID=0 # 强制指定设备ID # Windows set EGL_DEVICE_ID=0 ``` 4. **验证设备兼容性**: ```bash # 检查EGL可用设备 egl-query-devices-ext # 检查CUDA设备列表 nvidia-smi -L ``` 确保输出中存在匹配的设备ID 5. **平台特定配置**: 在`Sim-v0`配置文件中添加: ```ini [rendering] use_cuda_device=0 force_egl_display=1 # 强制EGL初始化 ``` #### 技术原理 当平台初始化时(类似嵌入式系统的`platform_device`注册流程 [^3][^4]),EGL需要完成: 1. 枚举可用的图形设备 2. 建立与CUDA设备的映射关系 3. 创建OpenGL渲染上下文 若硬件加速未启用或驱动不兼容,会导致EGL设备枚举失败,出现`unable to find EGL device`错误。这本质上是图形栈的初始化问题 [^1][^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值