我以前曾在此Win 10 64位家庭系统(针对1080Ti卡)上运行CUDA 9.x,但需要针对TensorFlow 2更新到CUDA 10.0。我最初以为TF2在CUDA 10.1上还可以,所以首先安装了10.1,直到后来才发现它必须是CUDA 10。
无法正常工作...
要测试TF,我运行了此程序以验证安装(通过Anaconda的Jupyter笔记本-新建的TF2环境)
import tensforflow as tf
print(tf.reduce_sum(tf.random.normal([1000, 1000])))
我在基本的Python测试中收到此错误
内部错误:cudaGetDevice()失败。状态:找不到cudaGetErrorString符号
这表明找不到密钥文件,但是我无法找出根本原因-而且该错误信息的命中很少,没有一个对我有帮助。
当前配置
已安装CUDA 10.0 Nvidia驱动程序436.48游戏就绪驱动程序
到目前为止的潜在问题和解决方案
显然他们都没有固定的东西
已知的可能性
[已由更新2取代] nvidia-smi.exe报告了CUDA 10.1(是的,它在Win 10上可用)-但是通过注册表检查我找不到任何东西暗示CUDA 10.1在那里徘徊... 更新在C:\ Windows \ System32
尽管已卸载,但是注册表中的Computer \ HKEY_USERS.DEFAULT \ Software \ Microsoft \ VisualStudio \ 14.0_Config \ InstalledProducts项下的XYZ仍为CudaXYZWizardsPackage-XYZ = 90、91、100、101-但我对此表示怀疑是Python中TF的问题;)更新 C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ Extensions \ NVIDIA中没有任何内容,只有10.0,所以孤儿注册表项。
其他信息
问题
答案 0 :(得分:1)
下载并安装Anaconda(Python 3.7):https://www.anaconda.com/distribution/
在命令提示符下:
conda update conda conda update python conda create --name tensorflow-gpu conda activate tensorflow-gpu conda install pip jupyter pip install tensorflow-gpu conda install cudatoolkit=10.0 -c pytorch
Anaconda3 (64-bit) -> Jupyter Notebook (tensorflow-gpu)
import tensorflow as tf
%%time
with tf.device('/CPU:0'):
a = tf.random.uniform([1000,1000])
b = tf.random.uniform([1000,1000])
c = tf.matmul(a, b)
墙壁时间:18.9毫秒
%%time
with tf.device('/GPU:0'):
a = tf.random.uniform([1000,1000])
b = tf.random.uniform([1000,1000])
c = tf.matmul(a, b)
挂墙时间:2.99毫秒
答案 1 :(得分:0)
这主要是扩展评论,因为@diego要求更新...
我现在已安装CUDA 10.0,并且nVidia控制面板将nvcuda.dll报告为v 10.0.132
我已使用Visual Studio 2017从C:\ ProgramData \ NVIDIA Corporation \ CUDA Samples \ v10.0 \ 1_Utilities \ deviceQuery中的vs解决方案构建了推荐的演示devicequery.exe(请注意.exe最终以C: \ ProgramData \ NVIDIA Corporation \ CUDA Samples \ v10.0 \ bin \ win64 \ Debug)
然后该程序从cmd提示符运行,并给出以下输出。
devicequery正在启动...
CUDA设备查询(运行时API)版本(CUDART静态链接)
检测到1个支持CUDA的设备
设备0:“ GeForce GTX 1080 Ti” CUDA驱动程序版本/运行时 版本10.0 / 10.0 CUDA功能主要/次要版本 数:6.1全局内存总数:11264 MBytes(11811160064 bytes)(28)多处理器,(128)CUDA 核心/ MP:3584 CUDA核心GPU最大时钟速率:
1607 MHz(1.61 GHz)内存时钟频率:
5505 Mhz内存总线宽度:352位L2 缓存大小:最大2883584字节 纹理尺寸大小(x,y,z)1D =(131072),2D =(131072, 65536),3D =(16384、16384、16384)最大分层1D纹理大小, (num)层1D =(32768),2048层最大分层2D纹理 大小(num)层2D =(32768,32768),2048层 恒定内存:65536字节共享总量 每块内存:49152字节寄存器总数 每块可用:65536变形尺寸:
每个多处理器32个线程的最大数量:最大2048个 每个块的线程数:1024的最大尺寸 线程块(x,y,z):(1024、1024、64)网格的最大尺寸 大小(x,y,z):(2147483647、65535、65535)最大内存间距:
2147483647字节纹理对齐:512 字节并发复制和内核执行:是,有2个副本 引擎在内核上的运行时间限制:是
集成GPU共享主机内存:不支持主机 页面锁定的内存映射:是对齐要求 表面:是设备具有ECC支持:
禁用的CUDA设备驱动程序模式(TCC或WDDM):WDDM (Windows显示驱动程序模型)设备支持统一寻址 (UVA):是设备支持计算抢占:否
支持合作内核发布:无支持 MultiDevice Co-op内核启动:无设备PCI域ID /总线 ID /位置ID:0/1/0计算模式: <默认(多个主机线程可以同时将:: cudaSetDevice()与设备一起使用)>deviceQuery,CUDA驱动程序= CUDART,CUDA驱动程序版本= 10.0,CUDA 运行时版本= 10.0,NumDevs = 1结果= PASS
我是怎么做到的?很难具体说明,因为我没有意识到自己成功了,但是我记得将显示驱动程序设置为VGA,重新启动(为安全起见两次),然后卸载CUDA 10.0,重新启动然后安装10.0。
我确实注意到我使用vs 2012解决方案构建了deviceQuery,但是我确实同意在解决方案打开时进行VS更新。