nvdla study ---内存数据格式

理解nvdla设计,首先必须头脑中对数据格式及其内存存放形式有个清晰的认识。
1 输入格式
1)weightdata输入格式:

weight for direct convolution
weight for image input
weight for Winograd convolution

2)activation data输入格式:
feature data format
pixel format (ROI input)

2 输出格式
feature data format
bias data
PReLU data
batch-normalization data
element-wise data
3 精度类型
支持三种精度:int8,int16,fp16
图像在运算前被转成一种类型。featuredata可以是任一一种类型。
引擎支持动态转换类型,需要遵循以下规则:
1)NVDLA convolution pipeline supports precision conversion for image
input mode only.
2)Direct convolution (DC) mode and Winograd convolution mode do not
support precision conversion
3)For image input mode (please see section 6.1.1.4), pipeline allows
conversion from integer to all 3 types. Floating point images can
only be converted to fp16.
3)Batch-normalization and element-wise layer (implemented in SDP)
support free conversion of int16 <-> fp16 and int8 <-> int16 for DC
mode only.
4)LRN layer (implemented in CDP) does not support any precision
conversion
5)Pooling layer (implemented in PDP) does not support any precision
conversion.

4 Feature Data Format

feature data是以3d cube(WxHxC)形式组织。进一步把这个大的cube,拆分成1x1x32byte的形式,这个小的cube被称为atom cube。
内存存放以以下扫描顺序:
C’ (32byte) -> W -> H -> C (surfaces)

5Weight Format
每个kernel也是以3d cube(wxhxc)形式组织。有多个kernel,用group来组织。每个cube进一步分成1x1x64-element small cube。根据精度类型,可以是1x1x128byte或者1x1x64byte。
内存存放以以下扫描顺序:
按kernel group单位,扫描每个kernel group的顺序:
C’->K->W->H->C

正常情况下, 一个 atom 包含 1x1x32Bytes data, 但是下面情况不再遵守
:

Bias data format;
PReLU data format;
Batch normalization data format;
Element-wise data format

BytesPerAtom=ElementPerAtom * ComponentsPerElement * BytesPerComponent

总结:
注意cube的组织。每种硬件层有不同的数据组织格式。

你可能感兴趣的:(nvdla)