What's could be wrong and what should we do to enable DLA Deconvolution layer?

In the TensorRT-Developer-Guide.pdf ,it claimed that DLA supports Deconvolution layer.

But when we implement our cnn with DLAcore enabled,it warns us “Internal DLA error for Deconvolution layer”,and then falling back to GPU.

We did the following simple test to detail this problem.

With a cnn net deconvolution_dla_test.prototxt:

input: "data"
input_shape {
  dim: 1
  dim: 3
  dim: 368 
  dim: 640 
}

layer {
  name: "264"
  type: "Deconvolution"
  bottom: "data"
  top: "264"
  convolution_param {
    num_output: 12
    bias_term: true
    group: 1
    pad_h: 2
    pad_w: 2
    kernel_h: 3
    kernel_w: 3
    stride_h: 2
    stride_w: 2
  }
}

And benchmark tool command:

./trtexec --avgRuns=100 --deploy=deconvolution_dla_test.prototxt --fp16 --batch=1 --iterations=10 --output=264   --useDLACore=0  --useSpinWait

We got:

avgRuns: 100 
deploy: deconvolution_dla_test_prototxt
fp16
batch: 1
iterations: 10
output: 264 
useDLACore: 0
useSpinWait
Input "data": 3x368x640
Output "264": 6x735x1279
Internal DLA error for layer 264. Use allowGPUFallback() to enable GPU fallback.
name=data, bindingIndex=0, buffers.size()=2
name=264, bindingIndex=1, buffers.size()=2

Our tensorrt verison:

tensorrt                                   5.0.3.2-1+cuda10.0                           arm64        Meta package of TensorRT

Our question is 1.what’s could be wrong and 2.what should we do to enable DLA Deconvolution layer?

Yours sincerely

Hi,

DLA do support deconvolution layer but only with 2x2 kernel and stride size <=2.
It looks like your kernel is 3x3. Is it possible to update it into 2x2?

Thanks.

Hi

We modified the deconvolution kernel size to 2x2. It did not work.

Anyway,your reply “DLA do support deconvolution layer but only with 2x2 kernel and stride size <=2” seems to be inconsistent with your reference.

According to Page48 of TensorRT-Developer-Guide.pdf which describes specific restrictions of layers, an item about convolution and deconvolution layers noted that “Width and height of stride must be in the range [1,8] for Convolution Layer and[1,32] for Deconvolution layer”.

When will you truly have this “Width and height of stride must be in the range [1,8] for Convolution Layer and[1,32] for Deconvolution layer”. item supported?

Hi,

It looks like there is an internal issue for this.
Let me check it with our internal and update more information with you.

Thanks.

Hi,

Sorry for the late.

Currently, DLA only supports zero-padding deconvolution layer.
We are implementing the support for non-zero padding case and will be available in our future release.

Thanks.

I did have to switch kernel size from 3x3 to 2x2 to remove the error (Internal DLA error for Deconvolution layer). But now i’m getting some more cryptic errors without diagnostics :) But then otherwise (without cryptic mystery) life would be too easy and boring.