TensorFlow不兼容GPU计算能力8.6的警告问题求助
问题解答
1. 为何每次新会话都会出现该警告?
你安装的这个适配无AVX CPU的TensorFlow预编译包,没有预先针对RTX 3060 Ti的计算能力8.6编译对应的CUDA内核二进制文件。每次启动新的Python会话时,TensorFlow会检测GPU的算力规格,发现没有匹配的预编译内核,就会弹出这个警告,提示要从PTX代码即时编译(JIT)CUDA内核。
而JIT编译的结果只保存在当前会话的内存里,关闭会话后就会被释放,所以每次新开会话都要重新做一次检测,自然每次都会触发这个警告,首次运行时还得重新编译,所以耗时久。
2. 如何消除此警告?
给你几个可行的解决办法:
- 方法一:使用同时适配无AVX CPU和算力8.6 GPU的TensorFlow包
找现成的或者自己编译一个TensorFlow wheel,要求同时支持无AVX的i7 950,以及算力8.6的GPU。自己编译的话,要在编译参数里指定--config=cuda和--cuda-compute-capabilities=8.6,同时关闭AVX相关的编译选项。 - 方法二:直接屏蔽这个警告
在代码开头加几行配置,把这个警告藏起来:
注意:这种方法只是看不到警告了,JIT编译的问题还在,首次运行还是会慢。import tensorflow as tf # 直接把TensorFlow的日志级别调到ERROR,屏蔽所有警告 tf.get_logger().setLevel('ERROR') # 或者更精准地只屏蔽这个特定警告 import warnings warnings.filterwarnings("ignore", category=UserWarning, message=r".*TensorFlow was not built with CUDA kernel binaries compatible with compute capability.*") - 方法三:让JIT编译结果缓存到磁盘
TensorFlow默认会把JIT编译的结果缓存到磁盘,但可能因为权限或路径问题没生效。你可以手动指定缓存目录,确保自己有读写权限:
首次编译完成后,后续新开会话就能读取缓存的编译结果,不仅速度会快很多,警告可能也会减少(或者至少不会再因为编译耗时久而影响使用)。import os # 设置缓存路径,替换成你有权限的文件夹 os.environ['CUDA_CACHE_PATH'] = 'C:/temp/cuda_cache' import tensorflow as tf
内容的提问来源于stack exchange,提问作者Thot
相关产品推荐
相关产品推荐

