核心内容摘要
AI换脸技术下的白鹿:是惊喜还是惊吓?
说明在前面的CUDA环境安装中安装过CUDA
1但没有安装cuDNN。
随着CUDA系列的逐渐深入对CUDA版本的要求也越来越高不然很多新的技术没办法推进。
所以只好重装驱动。
甚至找了块RTX的高一些的显卡。
但可惜的是升级失败了。
硬件虽然可以认出但从Nivida官网下载的新驱动根本无法安装在环境检查的那个环节就报无法支持。
原因是Windows10的版本过低。
查了下正好小一个很小的版本号。
在这个版本的Win10中只支持标准版的驱动而NVIDIA公司已经在后续的版本不再支持标准版本转而全面支持DCH驱动。
后来只好又恢复了老的显卡去官网下载了Nvidia App这次倒很顺利将显卡的驱动升级到了470CUDA支持11的初级版本。
本来也想止步于此至少大部分的CUDA相关内容可以继续展开。
但天不遂人愿在第二周正在写代码时系统突然报“微信崩溃恢复中”然后好长时间没办法恢复只好硬重启。
然后就没有然后了。
再也无法进入系统初步猜测是系统盘的固态硬盘寿命到了。
随即将电脑搬到朋友处进行了测试确实是如此只好换了张新的固态硬盘重做了系统。
但可笑的是官网下载的Windows10竟然不能安装Nivdia App总是报CUDA不支持这个操作系统。
但最后还是通过升级Windows10将驱动升级到了580支持了CUDA
1
6。
本文将针对这个环境进行描述说明重点描述CUDA
1
66安装的不同与cuDNN的安装以及Pytorch的安装及相关验证方法。
本文的环境是Windows1022h2vistual Studio2019/2022andconda
CUDA
1
6cuDNN
8.
7.
29 PyTorch
2.
1
0cu126从各种资料查看理论上讲CUDA
1
6可以适配cuDNN8以上及9以上的版本。
但大多安装推荐的都是使用的8故选用一个较新8的版本。
vistual Studio以提前安装了2019和20022两个版本。
之后安装了andconda3。
CUDA的安装
CUDA的安装CUDA的安装方法与前文基本一致但
1
6的版本在安装时指定路径时只有一个路径指定框架不像以前有三个指定路径的框注意如果C盘允许推荐不要改变这个安装路径对于新手不太友好而且后面的cuDNN配置方便。
利用前文的验证方法也通过了验证说明安装成功。
此处出现了一个问题下面再说。
安装成功后用前文的各种验证方法都可以通过。
但打开VS2022或VS2019都没创建CUDA
1
6运行时的这个模板即在Vistual Studio的创建项目中没有模板可选。
查询了很多资料最简单的说是重装其次有的说手动指定相关的文件。
在后者的说明中查看一下相关的选项在“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v
1
6\extras\”文件中根本没有visual_studio_integration这个文件夹。
这也意味着根本就没有安装或没有安装成功VS扩展支持。
想了一下在安装CUDA时是取消了“visual studio integration”这个安装选项的于是觉得可能是高版本的里面需要安装或在安装VS时未选中相关的选项。
将CUDA安装程序打开重新安装但只安装这个选项即下图注意图像中CUDA选项中是除了它即红框选中部分都选择了而此次安装正好相反其它所有都不选只选这一个红框内的“visual studio integration”。
重新安装后再启动vs2019/2022在创建新项目时都出现了CUDA Runtime
1
6这个模型。
恢复成功。
所以建议在安装CUDA更高版本时可注意此选项。
这里再重申一下较高版本的CUDA安装时会自动进行相关环境变量的设置如无特殊的应用或需求一般不需要显示的进行环境变量的配置这一点和网上的很多资料有些不同不过真正去设置也会发现已经设置好了。
cuDNN的安装因为要使用cdDNN所以下载了上面的相应版本。
虽然网上说9以上的版本也可以支持但为了保险起见还是下载了较老的版本。
这里有一个不同9以上的直接打开exe安装即可。
9以下是解压版本即下载的是一个压缩包解压缩后将cuDNN相应路径名下的文件拷贝到CUDA安装的相关路径下同名文件夹下即可即合并相同文件夹及其下面的文件。
也不用重新指定环境变量。
即下图所示cuDNN安装完成后有一个很明显的问题怎么验证它成功安装了。
这就需要安装一个Pytorch来应用测试一下。
Pytorch的安装pytorch的安装又经历了过山车一样的心情。
参照相关的网上的安装说明有好几种方法可以下载离线包也可以使用anaconda安装也可以使用pip安装。
这里参考使用pip安装。
步骤如下创建虚拟环境conda create -n pytorch_gpu_env python
13 #anaconda安装的Python是这个版本python --versionconda activate pytorch_gpu_env此处还犯了个低级错误pytorch写成了pytroch结果激活时报了个错误无语。
强烈推荐使用虚拟环境安装。
安装Pytorch打开Pytorch的官网“https://pytorch.org/get-started/locally/”其会自动检测当前的环境并给出相关的安装选项和命令如下图把上图最下面的命令复制出来粘贴到虚拟环境的命令行中pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126从理论上讲就可以坐等成功了。
可国内网络啊。
连着报错先是说“SSL”连接问题然后说“远端主机强行关闭”问了下DeepSeek说是国内的网络的问题。
解决方法推荐使用国内的镜像源。
然后按照方法使用了清华的镜像。
结果确实安装成功了。
但测试发现是一个CPU版本。
本想着修改一下再创建一个新的虚拟环境再装一个GPU版本可忽然想到会不是科学的方法下载就好呢于是用科学方法下载果然一分钟就安装好了。
无语。
干代码的不容易。
安装成功后使用下面的脚本测试一下import torch import sys print( *
print(PyTorch安装信息:) print(fPyTorch版本: {torch.__version__}) print(fCUDA可用: {torch.cuda.is_available()}) print(fCUDA版本: {torch.version.cuda}) print(fcuDNN启用: {torch.backends.cudnn.enabled}) print(fGPU数量: {torch.cuda.device_count()}) if torch.cuda.is_available(): print(f当前GPU: {torch.cuda.get_device_name(
}) print(fGPU内存: {torch.cuda.get_device_properties(
.total_memory / 1e9:.2f} GB) # 测试cuDNN x torch.randn(1, 3, 224, 224, devicecuda) try: # 尝试一个使用cuDNN的操作 x torch.nn.functional.conv2d(x, torch.randn(64, 3, 3, 3, devicecuda)) print(cuDNN操作测试: 成功) # 再次检查版本 print(fcuDNN版本: {torch.backends.cudnn.version()}) except Exception as e: print(fcuDNN操作测试失败: {e})说明这段验证代码从网上找的。
其运行结果是PyTorch安装信息: PyTorch版本:
2.
1
0cu126 CUDA可用: True CUDA版本:
1
6 cuDNN启用: True GPU数量: 1 当前GPU: NVIDIA GeForce GTX 960 GPU内存:
29 GB cuDNN操作测试: 成功 cuDNN版本: 91002否则相关选项无法打印或干脆是None。
注意安装可以中断然后继续安装不会影响进一步的安装。
而且中断后也可以再次安装会继续推进但还会断有耐心的可以不断尝试看是否最终可以安装成功。
如果在中断后想删除相关安装操作可以使用下面的命令pip list #查看安装项目 pip uninstall torch torchvision torchaudio -y #移除相关安装其实不如直接把这个虚拟环境删除使用下面的命令conda remove -n pytroch_env --all // 删除虚拟环境名如pytroch_env)环境及下属所有包
旧程序的兼容在vs2019/2022中打开原来VS2017的CUDA项目无法进行升级直接报环境错误找不到CUDA
1的相关内容。
可能如果同时安装了CUDA
1就能够升级上来吧没有经过实验验证。
但推测可能是这样的。
在Windows上可以同时支持多个版本的CUDA的。
相关的方法可以查询资料此处不把这个进行说明。
环境测试依然沿用老的方法直接打开VS2019/2022在创建新项目时选择“CUDA
1
6 Runtime”即可自动创建一个测试例程将原来的回调函数相关部分的代码拷贝进来如下#includecuda_runtime.h#includedevice_launch_parameters.h#includestdio.h#includecstdio#includecstdlib// 回调函数voidCUDART_CBtestCB(cudaStream_tstream,cudaError_tstatus,void*userData){printf(enter callback\n);printf(cur status: %s\n,cudaGetErrorString(status));if(userData!nullptr){int*d(int*)userData;printf(user data: %d\n,*d);}printf(GPU operate completed!......\n);}// 向量加法__global__voidvecAdd(constfloat*a,constfloat*b,float*c,intn){intiblockIdx.x*blockDim.xthreadIdx.x;if(in){c[i]a[i]b[i];}}intmain(){constintN10000;constsize_tsizeN*sizeof(float);printf(CUDA callback demo start...\n);// host memfloat*hA(float*)malloc(size);float*hB(float*)malloc(size);float*hC(float*)malloc(size);for(inti0;iN;i){hA[i]i;hB[i]i1;}// dev memfloat*dA,*dB,*dC;cudaMalloc(dA,size);cudaMalloc(dB,size);cudaMalloc(dC,size);cudaStream_tstream;cudaStreamCreate(stream);// user dataintuserData108;printf(user data: %d\n,userData);printf(start copy data from host...\n);//host-devcudaMemcpyAsync(dA,hA,size,cudaMemcpyHostToDevice,stream);cudaMemcpyAsync(dB,hB,size,cudaMemcpyHostToDevice,stream);printf(start kernel...\n);intbSize256;intnBlocks(NbSize-
/bSize;vecAddnBlocks,bSize,0,stream(dA,dB,dC,N);// copy :dev-hostprintf(start copy from dev...\n);cudaMemcpyAsync(hC,dC,size,cudaMemcpyDeviceToHost,stream);// add callbackcudaStreamAddCallback(stream,testCB,userData,
;printf(host continues to work ...\n);for(inti0;i10;i){printf(host:cur num %d...\n,i);}// watttingprintf(waitting...\n);cudaStreamSynchronize(stream);for(inti0;i100;i){printf(result data :%f\n,hC[i]);}// 清理资源cudaStreamDestroy(stream);cudaFree(dA);cudaFree(dB);cudaFree(dC);free(hA);free(hB);free(hC);printf(app end\n);return0;}程序可以正常编译并启动运行。
但有一个警告出现Cuda12Stream.lib 和对象 D:\vs2022_cuda_project\Cuda12Stream\x64\Debug\Cuda12Stream.exp 1LINK : warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突请使用 /NODEFAULTLIB:library它的意思和原来开发多线程库时的“多线程调试MT或MTd”选择问题一样可以不处理。
也可以使用下面的方式去除警告右键项目——属性 配置属性-链接器-命令行 粘贴下面的代码 /NODEFAULTLIB:LIBCMT /NODEFAULTLIB:LIBCMTD再重新编译相关项目则没有了这个问题。
五、
总结通过本文的升级安装同样的显卡已经可以支持相当新的CUDA版本虽然无法支持最新的CUDA13。
在这种情况下一般的验证型应用都可以进行开发使用了。
以后有时间再把C版本的Pytorch和TensorFlow安装起来就可以更好的把相关软硬件利用起来。