C++调用libtorch遇到的问题:munmap_chunk():invalid pointer

项目场景:

项目需要使用C++做深度学习,所以使用libtorch完成深度学习任务

问题描述

在执行训练时会遇到问题:munmap_chunk():invalid pointer
在这里插入图片描述


原因分析:

主要考虑环境问题:!!!GCC编译器版本太低
当前环境:
libtorch为1.2.0-cpu
C++版本:C++11
GCC:4.8.5
cmake:3.29.2

解决方案:

1、升级GCC编译器版本至GCC(G++) 4.9.2

升级GCC编译器版本步骤可参考:

步骤 1: 安装依赖项

首先,确保安装了所有必需的依赖项:

sudo yum install gcc gcc-c++ bzip2 bzip2-devel wget

步骤 2: 从源码编译安装 GCC 4.9.2

  1. 下载 GCC 4.9.2 的源码:
cd /usr/src
wget http://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz
tar -xzvf gcc-4.9.2.tar.gz
  1. 编译并安装 GCC 4.9.2:
d gcc-4.9.2
./contrib/download_prerequisites
mkdir build && cd build
../configure --prefix=/opt/gcc-4.9.2 --enable-languages=c,c++ --disable-multilib
make -j$(nproc)
sudo make install

这个过程可能需要较长时间。

步骤 3: 使用 alternatives 切换 GCC 版本

  1. 设置 alternatives

对于已安装的每个版本,使用 alternatives 注册每个版本的 gccg++

sudo alternatives --install /usr/bin/gcc gcc /opt/gcc-4.9.2/bin/gcc 492
sudo alternatives --install /usr/bin/g++ g++ /opt/gcc-4.9.2/bin/g++ 492

这里的数字 492 是优先级,可以根据需要调整。

  1. 为 GCC 4.8.5 做同样的设置(如果已安装):
sudo alternatives --install /usr/bin/gcc gcc /usr/bin/gcc48 485
sudo alternatives --install /usr/bin/g++ g++ /usr/bin/g++48 485

步骤 4: 切换使用不同版本的 GCC

要在已安装的 GCC 版本之间切换,可以使用:

sudo alternatives --config gcc
sudo alternatives --config g++

这将提供一个选择界面,选择希望使用的 GCC和G++ 版本。

2、重新修改CMakeList文件

重新修改CMakeList文件可参考:

set(CMAKE_CXX_COMPILER "/opt/gcc-4.9.2/bin/g++")
set(CMAKE_CXX_STANDARD 11)
project(自己的项目名称)
(注意一定要先set,再project,
位置非常重要:set() 命令用于指定编译器必须在 project() 命令之前。一旦 project() 被调用,CMake 就会锁定使用的编译器。)

确保GCC和G++都换成了4.9.2
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值