mobilenet-v2训练关键点检测模型:caffe.cpp:245] Multi-GPU execution not available - rebuild with USE_NCCL

采用mobilenet-v2训练关键点检测模型,数据准备好后:
1.训练level1
sh train.sh
出现问题:
F0514 17:41:13.275457 13942 caffe.cpp:245] Multi-GPU execution not available - rebuild with USE_NCCL
解决方法:
(1)检查cuda和gcc版本(要求:cuda version>6.0,gcc 版本>=gcc 4.8)
cat /usr/local/cuda/version.txt
gcc -v
(2)安装nccl
步骤:
下载nccl:https://developer.nvidia.com/nccl
cd nccl-master
sudo make CUDA_HOME=/usr/local/cuda-8.0/ test #根据自己cuda路径修改CUDA_HOME
sudo make install
sudo ldconfig

2.修改caffe目录下的Makefile.config
把#USE_NCCL:=1 改为USE_NCCL:=1 #把前面的#注释掉

3.重新编译caffe
make all –j24
出现问题:
caffe.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is…
错误原因:
系统内安装的多个版本protobuf选择问题,我的caffe编译时支持protobuf2.6.1版本,而Anaconda安装的protobuf版本为3.6.1,编译时默认选择了3.6.1版本
解决方法:
卸载protobuf3.6.1:conda uninstall libprotobuf
重新安装protobuf2.6.1
具体步骤可查看博客 (https://blog.youkuaiyun.com/zhang_comeon/article/details/100042512)

4.再次重新编译
成功!

<think>我们正在帮助用户解决安装gpu-burn时遇到的编译错误,错误提示是找不到cublas_v2.h文件。这个文件是CUDA开发工具包的一部分,因此问题通常与CUDA的安装或配置有关。根据引用内容,我们可以总结出几种可能的解决方法: 1. **确保已安装CUDA Toolkit**:cublas_v2.h是CUDA Toolkit的一部分,因此首先需要确认系统上已经正确安装了CUDA Toolkit。可以通过运行`nvcc --version`来检查CUDA是否安装以及版本信息。 2. **检查CUDA头文件路径**:如果CUDA已经安装,但编译器仍然找不到头文件,可能是因为CUDA的头文件路径没有包含在编译器的搜索路径中。通常,CUDA的头文件位于`/usr/local/cuda/include`。在编译gpu-burn时,可以通过设置`CPATH`环境变量或使用编译选项`-I`来指定头文件路径。例如,在Makefile中添加: ``` CFLAGS += -I/usr/local/cuda/include ``` 3. **安装特定版本的libcurand-dev**:引用[2]中提到安装`libcurand-dev-11-0`(根据CUDA版本选择合适的版本)。这个库是CUDA的随机数库,但同时也可能包含其他必要的头文件和库。因此,可以尝试安装对应版本的开发包: ```bash sudo apt-get install libcurand-dev-11-0 ``` 注意:这里的版本号(11.0)需要根据你的CUDA版本进行调整。例如,CUDA 11.0对应11-0,CUDA 10.1对应10-1等。 4. **检查CPU_ONLY模式**:引用[1]中提到,在编译Caffe时,如果虚拟机无法使用CUDA,可以通过启用CPU_ONLY模式来避免使用CUDA相关功能。但是,对于gpu-burn,它是一个GPU压力测试工具,显然需要GPU支持,因此不能使用CPU_ONLY模式。所以,我们需要确保CUDA配置正确,而不是禁用GPU支持。 5. **检查cuDNN安装**:引用[3]中提到了cuDNN的安装,但gpu-burn可能并不直接依赖cuDNN。不过,如果cuDNN安装不正确,有时也会影响其他CUDA程序的编译。确保cuDNN正确安装,并且其头文件路径(通常在`/usr/local/cuda/include`)已经被包含。 6. **修改Makefile**:参考引用[4]中的方法,虽然它是针对Caffe的,但思路类似。我们可以检查gpu-burn的Makefile,确保其中正确设置了CUDA的库路径和头文件路径。可能需要手动修改Makefile,添加类似以下内容: ``` INCPATH += -I/usr/local/cuda/include LIBPATH += -L/usr/local/cuda/lib64 ``` 并确保链接时包含了cublas库,例如: ``` LIBS = -lcublas -lcudart ``` 7. **环境变量设置**:确保`LD_LIBRARY_PATH`环境变量包含了CUDA库的路径,例如: ```bash export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH ``` 并在编译前设置好。 **具体解决步骤建议:** 1. **确认CUDA安装**: ```bash nvcc --version ``` 如果未安装,需要先安装与显卡驱动兼容的CUDA版本。 2. **安装libcurand-dev**(根据CUDA版本): ```bash # 以CUDA 11.0为例 sudo apt-get install libcurand-dev-11-0 ``` 3. **修改gpu-burn的Makefile**: 打开gpu-burn目录下的Makefile,在编译选项中加入CUDA头文件路径和库路径。例如: ```makefile CFLAGS = -O3 -I/usr/local/cuda/include LDFLAGS = -L/usr/local/cuda/lib64 -lcudart -lcublas ``` 注意:根据系统架构(64位或32位),库路径可能是`/usr/local/cuda/lib64`或`/usr/local/cuda/lib`。 4. **尝试编译**: ```bash make ``` 5. **如果仍然失败**,检查具体的错误信息,并确保没有其他依赖缺失。 **注意**:如果是在虚拟机中,由于虚拟机通常无法直接访问物理GPU(除非使用PCI直通等),可能无法使用CUDA。这种情况下,安装gpu-burn没有意义,因为无法使用GPU。 如果用户是在物理机上安装,请确保已经正确安装了NVIDIA驱动和CUDA Toolkit。 根据引用内容,我们提供了以上解决方案。请用户根据实际情况选择合适的方法。</think>### 解决 gpu-burn 编译错误:`fatal error: cublas_v2.h: No such file or directory` 此错误表明编译时找不到 CUDA 的核心头文件,以下是系统化的解决方案: --- #### 1. **确认 CUDA Toolkit 安装状态** ```bash # 检查 CUDA 版本 nvcc --version ``` - 若未安装:[下载 CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit-archive) 并选择与驱动兼容的版本 - 若已安装:验证头文件路径是否存在 ```bash ls /usr/local/cuda/include/cublas_v2.h ``` --- #### 2. **安装缺失的 CUDA 开发库**(关键步骤) 根据 CUDA 版本安装对应开发包: ```bash # 示例:CUDA 11.0 sudo apt-get install cuda-toolkit-11-0 libcublas-dev-11-0 ``` > 📌 注意:版本号(如 `11-0`)必须与 `nvcc --version` 输出完全匹配[^2] --- #### 3. **配置编译器包含路径** 在 gpu-burn 的 Makefile 中添加 CUDA 头文件路径: ```makefile # 在 CFLAGS 行添加包含路径 CFLAGS = ... -I/usr/local/cuda/include ``` ```bash # 验证路径有效性 echo "/usr/local/cuda/include" | xargs ls -d ``` --- #### 4. **链接 CUDA 运行时库** 在 Makefile 中确保链接 CUDA 库: ```makefile # 在 LDFLAGS 行添加库路径和依赖 LDFLAGS = ... -L/usr/local/cuda/lib64 -lcudart -lcublas ``` --- #### 5. **环境变量配置** ```bash # 临时生效(推荐测试用) export CPATH=/usr/local/cuda/include:$CPATH export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH # 永久生效(写入 ~/.bashrc) echo 'export CPATH=/usr/local/cuda/include:$CPATH' >> ~/.bashrc echo 'export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc ``` --- #### 6. **虚拟机特殊处理** 若在虚拟机中运行: - 确认已启用 GPU 直通(PCI Passthrough) - 或强制使用 CPU 模式(不推荐,丧失 GPU 测试功能): ```bash # 修改 Makefile 添加宏定义 CFLAGS += -DCPU_ONLY ``` --- ### 验证修复 重新编译并检查: ```bash cd gpu-burn make clean && make ./gpu_burn 60 # 测试运行60秒 ``` > ⚠️ **常见陷阱** > - CUDA 版本与 NVIDIA 驱动不兼容:使用 `nvidia-smi` 检查驱动支持的最高 CUDA 版本 > - 多版本 CUDA 冲突:通过 `/usr/local/cuda` 软链接切换版本 > - 文件权限问题:`sudo chmod -R a+r /usr/local/cuda/include` --- ### 故障排除流程图 ```mermaid graph TD A[编译报错 cublas_v2.h] --> B{检查CUDA安装} B -->|未安装| C[安装匹配版本的CUDA Toolkit] B -->|已安装| D{检查头文件路径} D -->|路径缺失| E[修复环境变量 CPATH/LIBRARY_PATH] D -->|路径存在| F[检查Makefile包含路径] F --> G[添加 -I/usr/local/cuda/include] G --> H[添加 -L/usr/local/cuda/lib64] H --> I[重新编译] I --> J{成功?} J -->|否| K[检查CUDA与驱动兼容性] K --> L[更新NVIDIA驱动] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值