源码编译带GPU支持的TensorFlow时出现ValueError: invalid literal报错
解决方案
错误根因
你提供的CUDA路径对应的头文件不是官方CUDA toolkit的原生头文件:你找到的~/miniconda3/lib/python3.9/site-packages/tensorflow/include/tensorflow/core/platform/cuda.h是TensorFlow自身封装的CUDA适配层头文件,该文件没有定义CUDA_VERSION宏,导致配置脚本读取版本时拿到空值,触发类型转换报错。
修复步骤
- 首先找到conda安装的cudatoolkit的正确根路径:激活你用于编译TensorFlow的conda环境后,执行
echo $CONDA_PREFIX,输出的路径就是当前环境的根目录,执行ls $CONDA_PREFIX/include/cuda.h确认该路径下存在原生CUDA头文件。 - 重新运行
python configure.py,当要求输入CUDA路径时,直接输入上一步拿到的$CONDA_PREFIX的绝对路径即可(不要输入到include子目录层级,配置脚本会自动在根路径下搜索include、lib等子目录)。 - 当要求输入CUDA SDK版本时,填写
11.3即可,无需填写完整的三位版本号,也不要仅填主版本号11。
可选验证步骤
如果操作后仍然报错,可以手动检查原生CUDA头文件的版本宏是否正常:执行grep "define CUDA_VERSION" $CONDA_PREFIX/include/cuda.h,正常会输出类似#define CUDA_VERSION 11030的结果,只要该值存在就不会触发空值转换错误。
内容的提问来源于stack exchange,提问作者Konqi
相关产品推荐
相关产品推荐

