Ubuntu+Tesla M40上OpenCL问题解决过程

作者在配置GPU机器过程中遇到使用conver_imageset工具时出现coredump问题,通过逐步排查发现是由OpenCL引起的。最终通过关闭OpenCV的OpenCL支持解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前些天配置了一台GPU机器,装了opencl,也装了OpenCV,OpenCV安装的时候使用了WITH_OPENCV=ON选项。

后面在准备数据库的使用,使用了caffe自带的conver_imageset工具,总是出现core dump。由于caffe是release编译的,gdb不出什么信息,显示错误在LMDB中

release版本信息

感觉不太可能是LMDB的问题,于是编译了debug版本的conver_imageset-d,gdb core出来的信息是
debug版本信息

这回可以确定问题出在OpenCL,cv::ocl::haveOpenCL() 函数中。google了一下,确实有人在调用这个函数的时候收不到响应,但也没有帖子能说明为什么。于是我想是否是OpenCL没装好,于是打算重装OpenCL-》重装OpenCV-》最后重装caffe(鉴于依赖关系)。

当重装OpenCL的时候,cuda的相应项都被自动删除了,并换上了其他版本,reboot之后使用nvidia-smi就一直hang住没有响应。
安装过程

看来保留opencl功能还需要进一步探索,而此机器上的opencv又急需使用,于是只能弃车保帅,使用如下选项编译了一版opencv,放弃了opencl

 cmake -DWITH_OPENCL=OFF -DWITH_CUDA=ON -D CMAKE_BUILD_TYPE=RELEASE -D WITH_FFMPEG=ON -D  WITH_TBB=ON -D OPENCV_EXTRA_MODULES_PATH= ~/opencv_contrib/modules -D CMAKE_INSTALL_PREFIX= /usr/local ..

然后一切都work了,就是速度比我CPU的mac上还慢一点。

### Tesla M40 安装教程及常见问题 在安装 Tesla M40 时,需要确保设备被正确识别并正常运行。以下是关于 Tesla M40 安装的详细指南以及可能遇到的问题及其解决方案。 #### 1. 硬件准备 在安装 Tesla M40 前,需确认以下硬件条件是否满足: - **主板 BIOS 设置**:主板 BIOS 必须支持开启 “Above 4G decoding” 或类似功能,以支持 Tesla M40 的 24GB 显存寻址[^2]。 - **PCIE 插槽兼容性**:如果主板没有核显,确保 PCIE 插槽能够同时支持计算显卡和亮机显卡[^2]。 - **电源要求**:Tesla M40 需要 700W 以上的供电能力,并且电源应能引出额外的 EPS 8pin 接口或提供两条 8 针 PCIE 供电线缆。如果电源接口不匹配,可使用专用转接线来解决供电问题[^4]。 #### 2. 驱动程序安装 - 在安装 Tesla M40 后,打开“设备管理器”,确认设备已被正确识别[^1]。如果未识别,可能是驱动程序未正确安装。 - 访问 NVIDIA 官方网站(https://www.nvidia.cn/Download/index.aspx?lang=cn),选择最新的驱动程序下载并安装[^1]。 - 安装完成后,验证驱动是否成功切换到 WDDM 模式。 #### 3. 散热解决方案 Tesla M40 是被动散热设计,没有内置风扇,因此需要外部气流进行冷却[^4]。建议以下方案: - **服务器机箱**:收一个二手机架式服务器是最理想的解决方案,因为其内部风扇可以提供充足的散热气流[^4]。 - **台式机箱改造**:如果使用台式机箱,则需要对散热系统进行改造,例如增加强力风扇或定制风道。 #### 4. 软件环境配置 - 确保操作系统已安装 CUDA Toolkit 和相关驱动程序,以便充分利用 Tesla M40 的计算能力[^3]。 - 如果计划运行深度学习框架(如 TensorFlow 或 PyTorch),需要安装对应的版本并测试 GPU 加速效果。 #### 5. 常见问题解决方法 - **问题 1:设备未被识别** - 检查驱动程序是否正确安装,尝试重新安装最新版本的 NVIDIA 驱动。 - **问题 2:温度过高** - 确认散热系统是否正常工作,必要时增加额外风扇或改进风道设计[^4]。 - **问题 3:电源不足** - 检查电源输出是否达到 Tesla M40 的要求,考虑更换更高功率的电源或使用转接线解决供电问题[^2]。 ```python # 示例代码:验证 GPU 是否可用 import torch if torch.cuda.is_available(): print("CUDA is available. Device:", torch.cuda.get_device_name(0)) else: print("CUDA is not available.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值