cudnn之Partially-packed Tensors

cudnn 的 nd tensor的内存排列形式有 Fully-packed Tensors、Partially-packed Tensors、Spatially Packed Tensors、Overlapping Tensors这4种,本文讲Partially-packed Tensors。
Partially-packed Tensors就是地址长度大于值的个数,举个例子,一个float32数组a[3][2][2],stride为[5,2,1],那么此数组在device上占用的内存应为sizeof(float32)35,值的个数为12,占用的内存却为15,也就是取值或者存值不连续。
cudnn的输入和输出都可以是 Fully-packed Tensors,输入好理解,按照步长去指定地址取值进行计算就对了,但输出呢?实际上,输出内存中多出来的内存没有进行操作,初始值是啥就是啥,一般用cudaMemSet为0值。

你可能感兴趣的:(深度学习)