使用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]
在主系统环境安装Nvidia CUDA
,即可解决该问题,关于CUDA
安装教程,网上有很多,简而言之就是下载到你的系统和Nvidia显卡驱动对应的CUDA
版本,手动安装即可。
由于报错为找不到${CUDA_DIR}/nvvm/libdevice
文件夹,那么这是个什么文件夹呢?通过头部环境变量的宏名称${CUDA_DIR}
,我们可以推断出,该文件夹应该是CUDA的库文件位置。那么我们找一台已经在主系统环境下安装了CUDA的电脑看一下其安装路径下是否有这个文件。
CUDA的安装路径为/usr/local/cuda*
,如下图可以看到libdevice
这个文件,说明报错内容的路径就是指这个。
按照这个逻辑,我在anaconda虚拟环境路径下的lib
目录下也找到了libdevice
所包含的文件,如下图所示,但是手动在lib
路径下添加了/nvvm/libdevice
路径,并且将libdevice.10.bc
拷贝进该路径下,重新设置CUDA_DIR
环境变量为~/anaconda3/lib
,运行程序仍然报错。
所以最后只有一个办法,在主系统环境下安装与虚拟环境cudatookit
相同版本的Nvidia CUDA
,最后正常运行。
conda install -c nvidia cuda-nvcc
但是这三种方案都没有尝试,读者可以自行尝试