So, only way is wait until the next cudnn is released (probably 7.7? or 8.0?) and pytorch supports the new release. Maybe I need to find some other model without using (3,1,1) kernel.



 ptrblck:

That sounds bad. Do you have links to public repositories, which implement these models and could post them here, please?


There are several models that uses conv3D with (3, 1, 1) kernel.
Most famous one might be SlowFast network from facebook and there are many follow up models.

  
      github.com
  
  
    facebookresearch/SlowFast/blob/6bb1cd8a24da17252ad4450de3e61fa074b181ff/slowfast/models/resnet_helper.py#L185

    num_groups,
    dilation,
    norm_module,
):
    (str1x1, str3x3) = (stride, 1) if self._stride_1x1 else (1, stride)

    # Tx1x1, BN, ReLU.
    self.a = nn.Conv3d(
        dim_in,
        dim_inner,
        kernel_size=[self.temp_kernel_size, 1, 1],
        stride=[1, str1x1, str1x1],
        padding=[int(self.temp_kernel_size // 2), 0, 0],
        bias=False,
    )
    self.a_bn = norm_module(
        num_features=dim_inner, eps=self._eps, momentum=self._bn_mmt
    )
    self.a_relu = nn.ReLU(inplace=self._inplace_relu)

    # 1x3x3, BN, ReLU.



  
  
    
    
  
  


R(2+1)D also uses the 3D conv with (3, 1, 1) kernel.

  
      github.com
  
  
    facebookresearch/VMZ/blob/f4089e2164f67a98bc5bed4f97dc722bdbcd268e/lib/models/builder/video_model.py#L89

        no_bias=self.no_bias,
    )
    self.add_spatial_bn(middle_filters, suffix='_middle')
    self.add_relu()
    self.prev_blob = self.model.ConvNd(
        self.prev_blob,
        '%scomp_%d_conv_%d' %
        (self.prefix, self.comp_count, self.comp_idx),
        middle_filters,
        out_filters,
        [kernels[0], 1, 1],
        weight_init=("MSRAFill", {}),
        strides=[strides[0], 1, 1] * 1,
        pads=[pads[0], 0, 0] * 2,
        no_bias=self.no_bias,
    )
elif block_type == '0.3d' or block_type == '0.3d+relu':
    self.prev_blob = self.model.ConvNd(
        self.prev_blob,
        '%scomp_%d_conv_%d_middle' %
        (self.prefix, self.comp_count, self.comp_idx),



  
  
    
    
  
  





 ptrblck:

I answered in the issue and cannot reproduce the error with your provided code.
Could you check, if you are still seeing this issue?


As for the last issue, It seems it related to the pytorch version. It works without the error in pytorch-v1.4.
Now problem is I cannot use amp in pytorch-v1.4 because of the above issue.