NVDLA专题12:具体模块介绍——RUBIK

2024-08-24 04:12

本文主要是介绍NVDLA专题12:具体模块介绍——RUBIK,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述

RUBIK类似于BDMA,它无需任何数据计算对数据映射格式进行转换。RUBIK有3种工作模式,分别是:

  • 合并(Contract)数据立方体
  • 将特征数据立方体分割为多平面(multi-planar)格式
  • 将多平面(multi-planar)格式合并到数据立方体

由于该模块的功能是转换特征数据立方体,我们称之为RUBIK单元。

合并(contract)

软件反卷积层总是使用几个硬件层或两个阶段。第一阶段是卷积流水线产生结果,第二阶段是contract的合同模式。

正常情况下,SW反卷积层的反卷积 x stride和 y stride大于1。通过这些strides的扩展,第一阶段硬件层的输出是一个通道扩展的数据立方体。RUBIK中的contract模式转换映射格式来扩展立方体。下图显示了一个重新映射示例,其中x stride为2,y stride 为3。

输入立方体大小和输出立方体大小的公式为:

RUBIK引擎slice by sclice 地实现contract,它接受一个Wx1xC输入sclice,并将其转换为一个W'xH'xC '输出子多维数据子立方体。然后继续到下一个输入slice,它从不跨线路边界发送请求。

当执行contract时,输入/输出起始地址和行间距应与32 bytes对齐。它总是试图发送256 bytes的请求,存储效率在80%~100%之间,受起始地址的影响。如果所有地址stride和起始地址都是256 byte对齐的,则存储器效率达到100%。

contract模式的要求:

  • 通道大小应能被解卷积x stride、y stride和32 bytes整除。如下式所示:
  • 输入和输出数据立方体的每个维度,如输入数据宽度、输出数据宽度、输入通道大小,在一个contract层中不应超过8192。

拆分和合并(Split and Merge)

拆分和合并是RUBIK中两种相反的操作模式。Split将数据立方体转换为M平面格式(M-planar formats, NCHW),平面的数量等于通道尺寸。合并模式将一系列平面转换为要特征据立方体。转换如下图所示。

M平面格式类似于图像格式。它是一种pitch linear格式,包含T_R16_I、T_R8_I或T_R16_F数据。每个平面仅包含1个通道数据或单个元素,所有平面(M平面)的line stride和planar stride应与64bytes对齐。它不同于NVDLA的其他数据格式。

功耗

RUBIK单元在数据路径中应用时钟门控,当单元空闲且可编程寄存器中没有可用的硬件层时,RUBIK数据路径的时钟被选通(gated)。

这篇关于NVDLA专题12:具体模块介绍——RUBIK的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101418

相关文章

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Python中的getopt模块用法小结

《Python中的getopt模块用法小结》getopt.getopt()函数是Python中用于解析命令行参数的标准库函数,该函数可以从命令行中提取选项和参数,并对它们进行处理,本文详细介绍了Pyt... 目录getopt模块介绍getopt.getopt函数的介绍getopt模块的常用用法getopt模

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详