消歧义

文中的算力一词指代 (Compute) Capability

一、问题描述

以下是配置:

配置版本
显卡Nvidia Geforce GTX 960M
系统Windows 10 20H2
CUDAV10.1.105
cuDNNV7.6.5
tensorflow-gpuV2.3.1
PythonV3.6.8 64Bit

比对N卡官网配置,960M(算力5.0)可以支持CUDA V10.1和cuDNN V7.6(官网错误标注为V7.4,实际可以支持V7.6),然而在实际运行代码中抛出错误...no kernel image is available for execution on the device

然而在970M(算力5.2)则可以正常运行,两张卡只相差0.2算力

二、解决方法

简而言之,问题出在虽然CUDA和cuDNN版本正确,但tensorflow V2.3不支持算力5.2以下的显卡。算力5.2是一个界线,而960M的算力为5.0,因此不能使用V2.3

详细原因见参考文章

解决方法亲测有以下几种:

  • 降低版本pip tensorflow-gpu==2.2
  • 使用快照版tensorflow,名称为pip tf-nightly-gpu==2.3.0.dev20200530
    若快照版会在Adding visible gpu devices:0卡顿,等一会就好
  • 换电脑

参考文章

  • 关于tensorflow V2.3不支持960M显卡及算力5.2以下显卡的测试及原因

GitHub:no kernel image is available for execution on the device #42467

  • 关于问题的解决方案之一

GitHub:CUDA runtime implicit initialization on GPU:0 failed. Status: device kernel image is invalid? #41990

  • 关于运行至Adding visible gpu devices:0卡顿

CSDN:tensorflow-gpu运行测试代码,卡在 I tensorflow/core/common_runtime/gpu/gpu_device.cc:1512] Adding visible gpu

  • 关于tensorflow不同python版本的解释

CSDN:TensorFlow提供Python语言的四个不同版本tensorflow,tensorflow-gpu,tf-nightly、tf-nightly-gpu

  • 关于tensorflow V2.3的更新内容

Tensorflow Blog:What’s new in TensorFlow 2.3?

更多推荐