产品NVIDIA Technical Blog·原文 2026年11月14日

NVIDIA发布cuDLA Python绑定,可在Jetson AGX Orin上用Python调用DLA推理

NVIDIA技术博客介绍cuda-bindings 13.3.0新增的cuda.bindings.cudla模块,开发者在Jetson AGX Orin上无需写C++即可管理DLA设备、加载模型并提交推理任务;该版本仅支持混合模式。

AI解读:cuDLA Python绑定降低了在Jetson AGX Orin上调用DLA的编程门槛,但适用范围有明确限制:本版本只支持混合模式(CUDA_DLA),请求独立模式会抛出ErrorUnsupportedOperation。

DLA是固定功能加速器,支持卷积、池化等常见层,但可支持层数少于GPU。NVIDIA指出,常需预处理ONNX图,裁掉DLA不兼容的首尾层。

运行已有DLA loadable只需JetPack自带的libcudla.so;只有把训练模型编译成loadable时才需要TensorRT的trtexec工具。

据NVIDIA博客,RTX Spark将把DLA推理带到Windows AI开发笔记本,且cuDLA API在两个平台一致;该表述为公司说法,博客未给出RTX Spark的上市时间或性能数据。

NVIDIA技术博客发布教程,介绍通过cuda.bindings.cudla在Python中直接调用Jetson AGX Orin上的深度学习加速器(DLA)执行推理。该模块随cuda-bindings 13.3.0提供,是对cuDLA C++ API的Cython生成薄封装,面向混合模式工作流。

博客称,应用可用它创建DLA设备、从内存加载编译好的网络、注册GPU内存缓冲区,并把推理任务提交到CUDA流上,与GPU前后处理按顺序执行。

示例以图像分类为主线,从安装绑定、用trtexec编译DLA loadable,到创建设备、加载模块、分配内存、提交任务、同步并读回输出,共九步,全部在Python进程内完成。

安装与编译前提

在运行JetPack的Jetson Orin上,libcudla.so随JetPack提供,绑定可直接发现,无需单独安装cuDLA SDK或其他运行时库。Python绑定通过pip install "cuda-bindings>=13.3.0" 安装;JetPack默认Python可能低于最低要求的 3.10,博客建议用deadsnakes PPA安装Python 3.12并建立虚拟环境。

只有把训练模型编译成DLA loadable时才需要TensorRT。博客示例面向TensorRT 11.4.1、CUDA 13.4 Update 1、JetPack 7.2.2或更高版本,使用固定输入尺寸的FP16 ONNX模型,trtexec关键参数包括 --useDLACore=0、--inputIOFormats=chw16、--outputIOFormats=chw16、--buildDLAStandalone和 --saveEngine。TensorRT 11从模型张量类型推导精度,不再支持 --fp16和 --int8标志。

  • 运行已有loadable只需libcudla.so,不需TensorRT
  • --buildDLAStandalone生成的裸DLA loadable在推理时不依赖TensorRT
  • 并非所有网络层都兼容DLA,常需裁剪ONNX图的首尾不兼容层

Python调用的步骤与限制

博客把运行时流程拆为九步:初始化CUDA并创建设备、以字节对象加载loadable、查询模块输入输出张量描述符、按描述符的size_分配GPU内存、用cudla.mem_register注册缓冲区、拷贝并预处理输入、构造cudla.Task并调用submit_task、同步CUDA流后拷回输出、最后逐一销毁句柄。

设备创建时cudla.Mode.CUDA_DLA选择混合模式,DLA任务通过CUDA流提交,因此GPU预处理核、DLA推理和GPU后处理可在同一流上排队。博客明确,本版本不支持独立模式,因为独立模式需要NvSci缓冲区和同步原语;若请求该模式,create_device会抛出CudlaError(ErrorUnsupportedOperation)。

所有cuDLA调用失败时抛出cudla.CudlaError,异常携带数字状态和可读名称,例如ErrorInvalidDevice (8)。博客建议用try/finally做清理,因为DLA设备句柄是不透明C资源,不会在垃圾回收时自动释放。

  • module_load_from_memory直接接收Python bytes,无需文件路径
  • 张量大小全部来自描述符,博客称同一代码路径可处理任意网络结构
  • 预处理是脚本中唯一与模型相关的部分

输出与跨平台说明

同步完成后,output_cpu是保存原始DLA输出的NumPy数组,可交给NumPy、PyTorch或OpenCV做后续处理。博客以ResNet-50骨干为例,列出输入张量形状 (1,64,56,56) 和输出张量形状 (1,2048,7,7),并说明张量名称和大小应从描述符读取,而不是硬编码。

博客还称,NVIDIA RTX Spark将把DLA推理带到主流Windows AI开发笔记本,cuDLA API在Jetson和RTX Spark上完全一致。该表述来自NVIDIA博客,未给出RTX Spark的规格、发布时间或实测数据。

信息来源

更多

新闻专题
外观