Jetson编译安装pycuda

基于jetson orin nano jetpack512模块上安装pycuda

1、安装依赖

sudo apt update
sudo apt-get install build-essential python3-dev python3-pip libboost-all-dev libpython3-dev python3-setuptools libncurses5-dev libreadline-dev libffi-dev gfortran

可使用nvcc --version查看是否有信息输出,若没有,且安装cuda的情况下,需要手动将CUDA 的路径添加到环境变量中

vim ~/.bashrc
#在文件末尾加入如下内容(cuda版本要与当前版本匹配)
export PATH=/usr/local/cuda-11.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH

 2、进入conda环境并安装cuda工具包

conda install cudatoolkit=11.4 -c nvidia

3、安装numpy

pip install numpy

4、获取pycuda源码(版本根据实际情况获取)

git clone --branch v2022.2 https://github.com/inducer/pycuda.git
cd pycuda

5、配置编译并设置环境变量

#运行 configure.py 并指定 CUDA 路径(通常在 /usr/local/cuda):
python3 configure.py --cuda-root=/usr/local/cuda
#设置环境变量
export PATH=/usr/local/cuda-11.4/bin:$PATH
export CUDADIR=/usr/local/cuda-11.4

6、编译

make -j$(nproc)

编译生成_pvt_struct.cpython-38-aarch64-linux-gnu.so文件 

7、编译成功后安装pycuda

sudo python3 setup.py install

8、测试安装

python3 -c "import pycuda.driver as cuda; cuda.init(); print(cuda.Device(0).name())"
#输出应为 Jetson 的 GPU 名称(如 NVIDIA Orin)

9、若未检测出来需要清除并强制编译

d7cdb4e0405444c383d64f03f9f1b79d.png

清除强制编译

python3 setup.py clean
python3 setup.py build
python3 setup.py install

10、再次验证

 python3 -c "import pycuda.driver as cuda; cuda.init(); print(cuda.Device(0).name())"

614ec4726dba40a7880386062e2db6dc.png

输出结果如图所示即为安装配置成功 。

<think>根据用户提供的TensorRT安装信息,我们可以确认Jetson Nano上已经安装了TensorRT 8.5.2(CUDA 11.4版本)。接下来需要指导用户如何利用已安装的TensorRT来优化YOLOv8的推理性能,并解决之前出现的ONNX Runtime问题。 ### 解决方案:使用TensorRT部署YOLOv8 #### 1. 转换ONNX模型到TensorRT引擎 ```bash # 确保在虚拟环境中 source activate yolo8 # 使用Ultralytics官方工具转换 yolo export model=yolov8n.onnx format=engine device=0 ``` #### 2. 解决转换可能出现的错误 **错误场景1:ONNX解析失败** ```bash # 安装ONNX GraphSurgeon(TensorRT依赖) pip install onnx-graphsurgeon --index-url https://pypi.ngc.nvidia.com ``` **错误场景2:CUDA版本不匹配** ```bash # 检查CUDA版本(需与TensorRT的CUDA 11.4匹配) nvcc --version # 应为11.4 # 若不匹配,重新安装PyTorch的CUDA 11.4版本 pip install torch==1.12.0+cu114 torchvision==0.13.0+cu114 --extra-index-url https://download.pytorch.org/whl/cu114 ``` #### 3. 使用TensorRT引擎进行推理 ```bash yolo predict model=yolov8n.engine source="ultralytics/assets/bus.jpg" task=detect ``` #### 4. 性能优化技巧 ```python # 创建~/.ultralytics/settings.yaml并添加 params: workers: 0 # 禁用多进程(Jetson内存限制) batch: 1 imgsz: 640 half: True # FP16模式 ``` #### 5. 验证TensorRT加速效果 ```python import time from ultralytics import YOLO model = YOLO('yolov8n.engine') # 预热 model.predict(source="ultralytics/assets/bus.jpg", verbose=False) # 测速 start = time.time() for _ in range(10): model.predict(source="ultralytics/assets/bus.jpg", verbose=False) print(f"平均推理时间: {(time.time()-start)/10:.2f}秒") ``` ### 备选方案:使用TensorRT API直接部署 ```c++ // 示例代码:tensorrt_deploy.cpp #include <NvInfer.h> #include <NvOnnxParser.h> // 创建TensorRT引擎(需编译执行) // 详细代码参考:https://github.com/wang-xinyu/tensorrtx/tree/master/yolov8 ``` ### 系统配置检查清单 ```bash # 确认TensorRT版本 dpkg -l | grep TensorRT # 确认GPU内存分配 sudo tegrastats # 监控GPU内存使用 # 设置性能模式(最高时钟频率) sudo nvpmodel -m 0 # 10W模式 sudo jetson_clocks ``` §§相关问题§§1. 如何解决TensorRT转换YOLOv8模型时出现的`Unsupported ONNX data type: STRING`错误?2. 在Jetson Nano上使用TensorRT部署YOLOv8时,如何启用FP16精度提升推理速度?3. 如何通过修改TensorRT配置参数来优化YOLOv8引擎的内存占用?4. 当TensorRT推理出现`INVALID_ARGUMENT`错误时,有哪些调试步骤?5. 如何利用TensorRT的profiler工具分析YOLOv8模型各层执行时间?</think>### Jetson Nano 上的 TensorRT 环境分析与优化指南 #### 环境分析(基于您的 `dpkg` 输出) 1. **TensorRT 版本**:8.5.2 (CUDA 11.4) 2. **关键组件**: - `libnvinfer8`:TensorRT 运行时库 - `libnvonnxparsers8`:ONNX 解析支持 - `nvidia-tensorrt`:主元数据包 3. **兼容性状态**: ```bash # 验证 CUDA-TensorRT 版本匹配 nvcc --version # 应显示 CUDA 11.4 cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 ``` #### 优化 YOLOv8 的 TensorRT 部署方案 ##### 1. 转换 ONNX 到 TensorRT 引擎 ```bash # 使用官方转换工具 /usr/src/tensorrt/bin/trtexec \ --onnx=yolov8n.onnx \ --saveEngine=yolov8n.engine \ --fp16 \ # 启用 FP16 加速 --workspace=1024 \ # 限制内存使用 --verbose ``` ##### 2. 内存优化配置 ```bash # 创建优化配置文件 (~/.ultralytics/settings.yaml) params: workers: 0 # 禁用多进程加载 batch: 1 # 单批次处理 imgsz: 640 # 固定输入尺寸 half: True # FP16 推理 ``` ##### 3. 使用 TensorRT 执行预测 ```bash yolo predict \ model=yolov8n.engine \ source="ultralytics/assets/bus.jpg" \ task=detect \ device=0 \ verbose=False # 减少日志输出 ``` ##### 4. 性能监控工具 ```bash # 实时监控资源使用 tegrastats --interval 1000 # 每秒刷新 # 输出示例 RAM 1500/2000MB | SWAP 450/2048MB | CPU [50%] | GPU [60%] | EMC 50% | APE 150 ``` #### 常见问题解决方案 **问题:转换时出现 `Unsupported ONNX opset version`** ```bash # 降低 ONNX opset 版本 yolo export model=yolov8n.pt format=onnx opset=12 ``` **问题:推理时显存不足** ```python # 在预测代码中添加内存清理 import torch import gc def predict_with_memory_cleanup(): results = model.predict(...) torch.cuda.empty_cache() gc.collect() return results ``` #### 验证 TensorRT 加速效果 ```python from ultralytics import YOLO import time # 加载 TensorRT 引擎 trt_model = YOLO('yolov8n.engine') # 基准测试 start = time.time() for _ in range(10): trt_model.predict("ultralytics/assets/bus.jpg", verbose=False) print(f"TensorRT 平均推理时间: {(time.time()-start)/10:.4f}s") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值