jetson nano 使用cuda加速python代码环境配置与加速思路(未完待续)
一、环境配置
1.安装cuda
sudo apt-get install cuda-toolkit-11-4
2.环境变量配置
sudo gedit ~/.bashrc
#在最后加上
export PATH=/usr/local/cuda-11.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-11.4
运行以下命令使更改生效:
source ~/.bashrc
3.验证CUDA安装是否成功:
nvcc --version
运行示例程序:
#进入 CUDA 自带的示例程序 deviceQuery 的目录。
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
#编译 deviceQuery 程序,编译成功后,会生成可执行文件 deviceQuery
sudo make
./deviceQuery
程序会检测当前系统的 CUDA 设备和驱动信息。如果看到 Result = PASS,说明 CUDA 正常工作。
4.安装必要的CUDA加速库
pip install numba cupy-cuda11x opencv-python
二、加速思路
我的原python代码耗时0.088s,说明计算本身不复杂。
Jetson Nano的GPU较弱(128核/4GB共享内存),数据传输开销可能成为瓶颈
思路:
1.识别可并行部分:图像像素级操作
2.避免并行化:小规模标量计算
3.使用OpenCV的CUDA模块 (cv2.cuda)
OpenCV提供了CUDA加速的GPU版本函数,可以直接替换部分CPU操作。
适合:图像阈值处理、矩阵运算、直方图均衡化等。
4.使用Numba的CUDA加速
适合:复杂的逐像素计算或并行化算法。
5.减少CPU-GPU数据传输
尽量减少upload(数据从CPU传到GPU)和download(数据从GPU传回CPU)的次数。
尽量在GPU上连续完成多个操作。
步骤:
- 初始化CUDA流和GPU内存:
在代码开头初始化CUDA流,用于异步操作:
# 初始化CUDA流
stream = cv2.cuda_Stream()
…
报错的解决办法
1.SystemError: <class 'cv2.cuda.Stream'> returned a result with an error set
通常是由于 OpenCV 的 CUDA 模块未正确编译或初始化 导致的。在 Jetson Nano 上,虽然 OpenCV 预装了 CUDA 支持,但某些情况下可能需要额外配置。
2.import cupy时 出现报错AttributeError: module 'numpy' has no attribute 'typeDict'
是NumPy 版本与 CuPy 版本不兼容 导致的
先检查NumPy版本 pip3 show numpy 如果版本是 1.20+(我是1.24.4),需要降级。降到1.19.5就兼容了。
欢迎来到FlagOS开发社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。
更多推荐



所有评论(0)