NVIDIA相关的nvidia-smi.exe位置变化不定的问题,想必很多人都有遇到过,我自己电脑是NVIDIA显卡,也遇到过,我网上搜了下,很多人有遇到。我自己遇到过系统里有2套驱动nvlddmkm.sys甚至3套nvidia-smi.exe,混乱不堪。在阿里云、腾讯云等云厂商都有nvidia显卡的GPU云服务器,也会有这些问题。了解此知识点,云上云下通用。请一定要详细阅读我这篇文档:https://cloud.tencent.com/developer/article/2076819
我自己总结了一个可靠的办法,确保升级显卡驱动后,一切正常。(NVIDIA每月出一个新版驱动,驱动本身的健壮性我不敢保障,我这里强调的是驱动安装唯独的严谨性。)
首先,卸载干净旧驱动,卸载的话先运行appwiz.cpl从程序列表正常卸载,卸载后会提示重启,重启后appwiz.cpl里是否变成低版本驱动了(我自己就遇到了,明明卸载新安装的驱动,重启后发现appwiz.cpl列表里变成了低版本,还得卸载一次,直到appwiz.cpl列表里不再有nvidia的记录),重启后用Display Driver Uninstaller 从安全模式卸载显卡驱动,我是用msconfig配置的安全模式,参考https://cloud.tencent.com/developer/article/1917677
Display Driver Uninstaller,简称DDU,我从这儿下载的,http://www.dayanzai.me/display-driver-uninstaller.html ,原本就是绿色无毒免费软件,放心使用,不涉及版权,只不过软件官网现在打不开了才贴的第三方链接
DDU卸载显卡驱动过程:
DDU卸载完成后,进入系统,msconfig反向操作,取消安全模式,然后用everything搜nvidia相关的nvlddmkm 、nvidia-smi、nvml.dll关键词,相关文件、目录尽可能别残留(一般appwiz.cpl正常卸载后、又在安全模式下用了DDU善后,基本已经干干净净了),假如用everything搜到了残留比如C:Program FilesNVIDIA Corporation ,最好是用revo uninstaller pro等清理注册表的软件来扫描该目录,如果对应目录有注册表残留,会识别出来让你手动清理的。
卸载完成后再安装新版的。
以上,只为确保系统内只有一套显卡驱动及其相关文件,发现system32目录下的nvml.dll的大小跟C:WindowsSystem32DriverStoreFileRepositorynv...nvml.dll大小不一样,我试了几个版本的驱动貌似都是这样,这2个nvml.dll我分别替换到system32目录nvdia-smi.exe都能正常工作,可以忽略
还没完,安装完新版后,C:Program FilesNVIDIA Corporation下面是不存在NVSMI子目录的, 需要处理下这2个目录里4个文件的一致性
C:Program FilesNVIDIA CorporationNVSMI
C:WindowsSystem32
首先,安装显卡驱动后,会在C:WindowsSystem32DriverStoreFileRepository目录下产生一些文件
一般来说,C:Program FilesNVIDIA CorporationNVSMI目录下有这4个文件,
C:Program FilesNVIDIA CorporationNVSMIMCU.exe
C:Program FilesNVIDIA CorporationNVSMInvdebugdump.exe
C:Program FilesNVIDIA CorporationNVSMInvidia-smi.exe
C:Program FilesNVIDIA CorporationNVSMInvml.dll
如果用everything(https://www.voidtools.com/zh-cn/)搜的话,能搜到C:WindowsSystem32DriverStoreFileRepository……某目录下有东西,比如
C:Program FilesNVIDIA CorporationNVSMIMCU.exe
C:WindowsSystem32DriverStoreFileRepositorynvgridsw.inf_amd64_c8a9594e922208d5MCU.exe
C:Program FilesNVIDIA CorporationNVSMInvdebugdump.exe
C:WindowsSystem32DriverStoreFileRepositorynvgridsw.inf_amd64_c8a9594e922208d5nvdebugdump.exe
C:Program FilesNVIDIA CorporationNVSMInvidia-smi.exe
C:WindowsSystem32DriverStoreFileRepositorynvgridsw.inf_amd64_c8a9594e922208d5nvidia-smi.exe
C:Program FilesNVIDIA CorporationNVSMInvml.dll
C:WindowsSystem32DriverStoreFileRepositorynvgridsw.inf_amd64_c8a9594e922208d5nvml.dll
我升级驱动后,一般是搜那4个文件,在C:WindowsSystem32DriverStoreFileRepository目录下找这4个同名文件,看更新时间是不是我升级驱动的时间,是的话,我就把这4个文件往下面2个目录拷贝一份进行替换(替换之前可以先备份下目的位置的原始文件),然后多重启几次,
C:Program FilesNVIDIA CorporationNVSMI
C:WindowsSystem32
重启后打开cmd命令行,分别执行
"C:Program FilesNVIDIA CorporationNVSMInvidia-smi.exe"
"C:WindowsSystem32nvidia-smi.exe"
2个都正常显示进程后再关机做镜像导入腾讯云购买新机器。(之前有次,2个目录的nvidia-smi.exe执行结果不一样,搞得我很恼火,发现是windows联网情况下自动更新驱动了,不知道NVIDIA咋处理的,反正是乱了,后来还是我手动搞一致的,为了避免自动更新驱动导致问题,我把自动更新驱动禁止了,参考https://cloud.tencent.com/developer/article/2070462)