The ptxas error was: ptxas fatal : Value ‘sm_86‘ is not defined for option ‘gpu-name‘

开发环境:

Ubuntu 20.04.4 LTS + Anaconda3 + Tensorflow2.4 + RTX 3090

警告信息:

2022-07-13 09:38:01.471614: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudnn.so.8
2022-07-13 09:38:03.812569: W tensorflow/stream_executor/gpu/asm_compiler.cc:235] Your CUDA software stack is old. We fallback to the NVIDIA driver for some compilation. Update your CUDA version to get the best performance. The ptxas error was: ptxas fatal   : Value 'sm_86' is not defined for option 'gpu-name'

2022-07-13 09:38:03.812923: W tensorflow/stream_executor/gpu/redzone_allocator.cc:314] Unimplemented: /usr/local/cuda-11.0/bin/ptxas ptxas too old. Falling back to the driver to compile.
Relying on driver to perform ptx compilation.
Modify $PATH to customize ptxas location.
This message will be only logged once.
2022-07-13 09:38:03.961728: W tensorflow/stream_executor/gpu/asm_compiler.cc:235] Your CUDA software stack is old. We fallback to the NVIDIA driver for some compilation. Update your CUDA version to get the best performance. The ptxas error was: ptxas fatal   : Value 'sm_86' is not defined for option 'gpu-name'

有很多文章分析了问题原因,主要是说低版本的CUDA对新出来的显卡支持不好,升CUDA版本到11.1及以上即可。又因为Tensorflow与CUDA和cuDNN版本强相关,还得参考Build from source on Windows  |  TensorFlow (google.cn)选择合适的版本。

 因为代码是基于TF2.4写的,直接创建新conda环境,问题没解决。

conda create -n tf2.4 python=3.8 cudatoolkit=11.2 cudnn=8.1 -c conda-forge
conda activate tf2.4
conda install tensorflow-gpu=2.4 -c conda-forge

因为系统路径下已安装/usr/local/cuda-11.1,想着直接用,问题没解决。

pip install tensorflow-gpu==2.4.0
export PATH=/usr/local/cuda-11.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-11.1

升级Tensorflow到更高版本,问题还是没有解决。

pip uninstall tensorflow-gpu
pip install tensorflow-gpu==2.6.0

查了一下cuDNN库,发现默认使用的是/usr/lib/x86_64-linux-gnu/libcudnn.so.8.0.5,可能需要升一下级,但是没有root权限。

最后解决方案:

去官网下载合适的 CUDA ToolkitcuDNN 安装到自己工作目录。安装 CUDA Toolkit 时不要装驱动程序,cuDNN的包不需要安装,直接解压并放到 CUDA Toolkit 对应的子目录里即可。最后修改好环境变量。

#
# 下载安装包
#
wget https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run
wget https://developer.download.nvidia.cn/compute/machine-learning/cudnn/secure/8.1.0.77/11.2_20210127/cudnn-11.2-linux-x64-v8.1.0.77.tgz
#
# 安装 CUDA Toolkit
#
chmod 755 cuda_11.2.2_460.32.03_linux.run
./cuda_11.2.2_460.32.03_linux.run --toolkit --installpath=/home/tanxingjun/programs/nvidia/cuda-11.2
#
# 安装 cuDNN
#
tar -zxvf cudnn-11.2-linux-x64-v8.1.0.77.tgz
mv lib64/* /home/tanxingjun/programs/nvidia/cuda-11.2/lib64
mv include/* /home/tanxingjun/programs/nvidia/cuda-11.2/include
#
# 设置路径
#
export PATH=/home/tanxingjun/programs/nvidia/cuda-11.2/bin:/home/tanxingjun/programs/nvidia/cuda-11.2/lib64:$PATH
export LD_LIBRARY_PATH=/home/tanxingjun/programs/nvidia/cuda-11.2/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/home/tanxingjun/programs/nvidia/cuda-11.2

疑问:有些文章提到Tensorflow2.4+cuda-11.1的组合就可以解决,但我实测无效,Tensorflow必须升级到更高版本,即使有更高版本的cuda库,Tensorflow2.4还是会去加载cuda-11.0

2022-07-13 09:37:54.477347: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0

CMake Warning: Ignoring extra path from command line: "../openMVS" -- Detected version of GNU GCC: 94 (904) Compiling with C++17 CMake Error at /home/xujx/.local/lib/python3.8/site-packages/cmake/data/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:751 (message): Compiling the CUDA compiler identification source file "CMakeCUDACompilerId.cu" failed. Compiler: /usr/bin/nvcc Build flags: Id flags: --keep;--keep-dir;tmp -v The output was: 255 #$ _SPACE_= #$ _CUDART_=cudart #$ _HERE_=/usr/lib/nvidia-cuda-toolkit/bin #$ _THERE_=/usr/lib/nvidia-cuda-toolkit/bin #$ _TARGET_SIZE_= #$ _TARGET_DIR_= #$ _TARGET_SIZE_=64 #$ NVVMIR_LIBRARY_DIR=/usr/lib/nvidia-cuda-toolkit/libdevice #$ PATH=/usr/lib/nvidia-cuda-toolkit/bin:/usr/local/cuda-11.8/bin:/home/xujx/anaconda3/bin:/home/xujx/anaconda3/condabin:/home/xujx/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin #$ LIBRARIES= -L/usr/lib/x86_64-linux-gnu/stubs -L/usr/lib/x86_64-linux-gnu #$ rm tmp/a_dlink.reg.c #$ gcc -D__CUDA_ARCH__=300 -E -x c++ -DCUDA_DOUBLE_MATH_FUNCTIONS -D__CUDACC__ -D__NVCC__ -D__CUDACC_VER_MAJOR__=10 -D__CUDACC_VER_MINOR__=1 -D__CUDACC_VER_BUILD__=243 -include "cuda_runtime.h" -m64 "CMakeCUDACompilerId.cu" > "tmp/CMakeCUDACompilerId.cpp1.ii" #$ cicc --c++14 --gnu_version=90400 --allow_managed -arch compute_30 -m64 -ftz=0 -prec_div=1 -prec_sqrt=1 -fmad=1 --include_file_name "CMakeCUDACompilerId.fatbin.c" -tused -nvvmir-library "/usr/lib/nvidia-cuda-toolkit/libdevice/libdevice.10.bc" --gen_module_id_file --module_id_file_name "tmp/CMakeCUDACompilerId.module_id" --orig_src_file_name "CMakeCUDACompilerId.cu" --gen_c_file_name "tmp/CMakeCUDACompilerId.cudafe1.c" --stub_file_name "tmp/CMakeCUDACompilerId.cudafe1.stub.c" --gen_device_file_name "tmp/CMakeCUDACompilerId.cudafe1.gpu" "tmp/CMakeCUDACompilerId.cpp1.ii" -o "tmp/CMakeCUDACompilerId.ptx" #$ ptxas -arch=sm_30 -m64 "tmp/CMakeCUDACompilerId.ptx" -o "tmp/CMakeCUDACompilerId.sm_30.cubin" ptxas fatal : Value 'sm_30' is not defined for option 'gpu-name' # --error 0xff -- Call Stack (most recent call first): /home/xujx/.local/lib/python3.8/site-packages/cmake/data/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD) /home/xujx/.local/lib/python3.8/site-packages/cmake/data/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:53 (__determine_compiler_id_test) /home/xujx/.local/lib/python3.8/site-packages/cmake/data/share/cmake-3.26/Modules/CMakeDetermineCUDACompiler.cmake:307 (CMAKE_DETERMINE_COMPILER_ID) CMakeLists.txt:109 (ENABLE_LANGUAGE)是什么问题
07-08
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值