赞
踩
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。
博客内容主要围绕:
5G/6G协议讲解
高级C语言讲解
Rust语言讲解
需要安装CUDA Toolkit
、NVIDIA cudnn
、vs2022
、cmake
、python
,这一节主要介绍一下CUDA Toolkit
、NVIDIA cudnn
的安装,其他的都比较常用了,相信大家已经在使用了。
在Windows命令行窗口输入
nvidia-smi
查看是否安装了cuda toolkit,如果显示下面的内容表示已经安装了
如果没有安装需要登陆NVIDIA网站,下载最新版本的cuda toolkit并安装。
从NVIDIA下载cudnn版本,下载后正常安装就可以。
pip install numpy
pip install opencv-python
pip install opencv-contrib-python
宏名 | 值 |
---|---|
WITH-CUDA | ON |
OPENCV-DNN-CUDA | ON |
ENABLE_FAST_MATH | ON |
OPENCV_ENABLE_NONFREE | ON |
BUILD_opencv_world | ON |
上面都是布尔参数,下面配置的是opencv的外部库,
执行配置过程,正常会失败,没关系我们还有一些参数没有配置
宏名 | 值 |
---|---|
CUDA_FAST_MATH | ON |
CMAKE_CONFIGURATIONTYPES | Release |
下面配置的是cudnn的库(一定要明确到具体的库文件,不能只定位到目录,感觉是bug)
进入cuda toolkit安装目录(默认安装目录C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\extras\demo_suite),在cmd中执行deviceQuery.exe
可以看到博主的GPU能力是8.6,配置下面的宏定义
宏名 | 值 |
---|---|
CUDA_ARCH_BIN | 8.6 |
执行配置过程
博主的电脑中有多个python版本,之前就遇到过实际使用的python版本与cmake自动检测的python版本不一致,导致显示安装成功,但是没有实际的效果。下面是cmake自动检测的python版本
如果你使用的python版本与自动检测的不一致,可以参考下面的宏定义修改python版本
右键ALL_BUILD
选择生成,此时就开始了漫长的编译过程,差不多需要60分钟
右键INSTALL
选择生成,此时就开始了安装过程
执行下面的代码
import os
os.add_dll_directory("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v12.6\\bin")
os.add_dll_directory("C:\\Program Files\\NVIDIA\\CUDNN\\v9.3\\bin\\12.6")
import cv2
count = cv2.cuda.getCudaEnabledDeviceCount()
print(count)
可以看到输出的结果为1,表示已经成功安装了cuda使能的opencv-python。
问题现象
:fatal error C1189: #error: – unsupported Microsoft Visual Studio version! Only the versions between 2017 and 2022 (inclusive) are supported! The nvcc flag ‘-allow-unsupported-compiler’ can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk.
解决方法
:可以参考 1.1.1节更新 CUDA Toolkit,更新后需要同步更新下面的宏参数:
问题现象
:提示 x64.lib not found in opencv_world.vcxproj
解决方法
:将宏变量CUDNN_LIBRARY
指定到具体的库文件名。如果只是指定到x64
文件夹,会提示无法打开x64.lib文件;如果指定到lib
文件夹,会提示无法打开lib.lib文件。
问题现象
:提示 “A dynamic link library (DLL) initialization routine failed”
Traceback (most recent call last):
File "d:\programming\fanduel-boggle-cheat\opencv_cuda_cudnn.py", line 4, in <module>
import cv2
File "C:\Users\evank\anaconda3\envs\opencv_cuda_cudnn\Lib\site-packages\cv2\__init__.py", line 181, in <module>
bootstrap()
File "C:\Users\evank\anaconda3\envs\opencv_cuda_cudnn\Lib\site-packages\cv2\__init__.py", line 153, in bootstrap
native_module = importlib.import_module("cv2")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\evank\anaconda3\envs\opencv_cuda_cudnn\Lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: DLL load failed while importing cv2: The specified module could not be found.
解决方法
:需要指定cudnn和cuda的bin
目录
import os
os.add_dll_directory("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v12.6\\bin")
os.add_dll_directory("C:\\Program Files\\NVIDIA\\CUDNN\\v9.3\\bin\\12.6")
import cv2
count = cv2.cuda.getCudaEnabledDeviceCount()
print(count)
问题现象
:提示无法打开文件“pythonxxx_d.lib”
解决方法
:主要因为使用vs2022编译方式为Debug,并不是Release。项目构建方式换成Release就可以了。pythonxxx_d.lib是CPython的debug版本。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。