目录

概述

编程模型

 软件架构

源码分析

核心类图

注册OP

 DALI初始化​

执行计算图


概述

Nvidia Data Loading Library ( 简称DALI )  是Nvidia提供的开源库,用于深度学习中便捷的执行图形、视频、语音等各种数据类型的处理,本文基于DALI 1.9版本 链接 对软件架构和源码做分析

编程模型

DALI的应用程序编程模型和Tensorflow非常类似 - 构建计算图和节点,在DALI中称为创建需要执行具体操作的Operator,并将Operator连接起来称为Pipeline,然后Build和Run Pipeline得到计算结果

 软件架构

软件架构分为几层

  • Python层提供对应编程的API
  • Native层的backend负责初始化和注册Python API的实现
  • libdali 层实现构建计算图、节点、执行计算图的基础设施代码逻辑
  • libdali_operators提供了真正处理数据的OP实现,包括CPU的实现,基于各种第三方库的API实现
  • libdali_kernels通过CUDA实现了部分OP的计算

源码分析

核心类图

 

计算图、执行器、Operator,以及管理注册Operator的Registry之间的类关系 

注册OP

 上图展示了一个OP如何被注册到DALI 框架中的核心时序

 

 DALI初始化

 上图展示了应用使用DALI框架的初始化核心时序

执行计算图

  上图展示了build和run pipeline的核心时序

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐