anaconda3报错Can‘t find libdevice directory解决方案

anaconda3报错Can't find libdevice directory解决方案

  • 1. 问题描述
  • 2. 解决方案
  • 3. 原理分析
  • 4. 其他解决方案

1. 问题描述

使用anaconda3运行tensorflow进行单机多GPU运算时报错:

error: Can't find libdevice directory ${CUDA_DIR}/nvvm/libdevice

较的全报错如下(其中[…]为省略内容):

[] TensorFloat-32 will be used for the matrix multiplication. This will only be logged once.
error: Can't find libdevice directory ${CUDA_DIR}/nvvm/libdevice
[]
2022-11-19 20:59:24.723478: W tensorflow/core/framework/op_kernel.cc:1768] UNKNOWN: JIT compilation failed.
[]
  File "/home/bit202/anaconda3/lib/python3.9/site-packages/tensorboard/plugins/scalar/summary_v2.py", line 89, in scalar
    return tf.summary.write(
tensorflow.python.framework.errors_impl.UnknownError: {{function_node __wrapped__FloorMod_device_/job:localhost/replica:0/task:0/device:GPU:0}} JIT compilation failed. [Op:FloorMod]

2. 解决方案

在主系统环境安装Nvidia CUDA,即可解决该问题,关于CUDA安装教程,网上有很多,简而言之就是下载到你的系统和Nvidia显卡驱动对应的CUDA版本,手动安装即可。

3. 原理分析

由于报错为找不到${CUDA_DIR}/nvvm/libdevice文件夹,那么这是个什么文件夹呢?通过头部环境变量的宏名称${CUDA_DIR},我们可以推断出,该文件夹应该是CUDA的库文件位置。那么我们找一台已经在主系统环境下安装了CUDA的电脑看一下其安装路径下是否有这个文件。

CUDA的安装路径为/usr/local/cuda*,如下图可以看到libdevice这个文件,说明报错内容的路径就是指这个。
anaconda3报错Can‘t find libdevice directory解决方案_第1张图片
按照这个逻辑,我在anaconda虚拟环境路径下的lib目录下也找到了libdevice所包含的文件,如下图所示,但是手动在lib路径下添加了/nvvm/libdevice路径,并且将libdevice.10.bc拷贝进该路径下,重新设置CUDA_DIR环境变量为~/anaconda3/lib,运行程序仍然报错。
anaconda3报错Can‘t find libdevice directory解决方案_第2张图片
所以最后只有一个办法,在主系统环境下安装与虚拟环境cudatookit相同版本的Nvidia CUDA,最后正常运行。

4. 其他解决方案

  1. 复制路径
  2. 新建环境变量
  3. 安装cuda-nvcc
conda install -c nvidia cuda-nvcc

但是这三种方案都没有尝试,读者可以自行尝试

你可能感兴趣的:(tensorflow,python,tensorflow,深度学习,anaconda)