Ubuntu20.04安装NVIDIA混合精度计算库apex全流程及各类报错问题解答
创始人
2024-06-02 08:13:29
0

目录

  • 一. 安装CUDA
  • 二. 安装apex
  • 三. 各类报错问题解决
    • 3.1 C++编译错误
    • 3.2 Apex优化算子错误
    • 3.3 CUDA错误
    • 3.4 g++或gcc错误

背景:跟李沐老师一起探索RTX 3090的深度学习浮点运算性能,需要安装apex进行半精度运算,本文总结了Ubuntu20.04安装NVIDIA混合精度计算库apex全流程及各类报错问题解答

环境:
Ubuntu20.04
AMD 5800 8-core 16-Thread
NVIDIA RTX 3090
Pytorch1.13(gpu)
Python3.9
CUDA11.7

一. 安装CUDA

确保你的apex跟CUDA版本对应,如果不对应,则在运行程序时会产生各类kernel fusion之类的错误。

wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run
sudo sh cuda_11.7.1_515.65.01_linux.run

网不好可以先用浏览器下载,然后再安装。
安装时一直确认就可以了,如果已经安装过NVIDIA驱动可以去掉驱动的选项。
添加环境变量:

vim ~/.bashrc
export CUDA_HOME=/usr/local/cuda

source ~/.bashrc

如何进行软链接来对不同CUDA版本进行切换,看我其他专栏的相关文章写的很详细。

二. 安装apex

此前记得安装gcc g++ make,并确保三者都可以在命令行中直接找到。


git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

正常安装成功是没有任何error信息的,会显示成功安装:

请添加图片描述

三. 各类报错问题解决

3.1 C++编译错误

报错信息:

subprocess.CalledProcessError: Command '['which', 'c++']' returned non-zero

原因:
ubuntu提供了这样一个包 build-essential,编译c/c++的,安装build-essential:

sudo apt-get install build-essential

3.2 Apex优化算子错误

报错信息:

RuntimeError: apex.optimizers.FusedAdam requires cuda extensions

原因:Apex缺少cuda_ext 库,一定是没有正确安装好apex,需要卸载重装:

pip uninstall apex

3.3 CUDA错误

报错信息:

RuntimeError: Error compiling objects for extension

原因:没有正确安装CUDA库,或者CUDA版本与所安装的Pytorch版本不对应。
解决:重新安装正确版本的CUDA

3.4 g++或gcc错误

报错信息:

subprocess.calledprocesserror command ' 'which' 'g++' ' returned non-zero exit status 1

原因:gcc与g++不是同一个大版本,编译失败。
解决:

sudo apt remove g++ 
sudo apt remove gcc
sudo apt-get update
sudo apt-get install gcc-9 g++-9
#建立强链接
sudo ln -s /usr/bin/gcc-9 /usr/bin/gcc -f
sudo ln -s /usr/bin/g++-9 /usr/bin/g++ -f

相关内容

热门资讯

女孩子怎么做到黑白两道通吃? 女孩子怎么做到黑白两道通吃?一不怕丑。他不怕苦。把自己当一个女汉子。你首先可以跟任何人睡,明白吗?
书香伴我成长的诗句和名言 书香伴我成长的诗句和名言书籍是成长的阶梯——高尔基
追女人不是讨好她而生征服她 女... 追女人不是讨好她而生征服她 女人恰恰就喜欢被男人征服?这是肯定的,如果一个男人自己没有能力,也没有更...
偷偷的喜欢一个人,是一种什么样... 偷偷的喜欢一个人,是一种什么样的感觉?不表白的话,过后是否会遗憾?是一种既幸福又心酸的感觉。我觉得不...
找陈妙瑛演的电视剧 找陈妙瑛演的电视剧如果没有记错就是缉私群英(1996)《缉私群英》,是陈妙瑛追一个偷光碟的小孩,欧阳...
辞组四字词,简组四字词,静组四... 辞组四字词,简组四字词,静组四字词,倾组四字词辞:不辞而别 不辞劳苦 辞不达意静:风平浪静 夜深...
山东拜年为什么要下跪磕头 山东拜年为什么要下跪磕头磕头拜年,就是一种表达对长辈的尊敬和对家族中死去长辈的敬畏。山东人过年磕头的...
白色水晶手链的寓意是什么 白色水晶手链的寓意是什么白色水晶手链寓意着洁净,其质地干净透彻,显得晶莹剔透,佩戴在身上比较干净利落...
死神来了12345都是讲什么的... 死神来了12345都是讲什么的 ?主人公预感别人会死,结果实现了我记得第一部好像是过山车坠毁 第二部...
外卖平台消费券补贴加码,成都餐...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! 封面新闻记者 欧阳...