code: def backward(ctx, dy):
      # sanity check
      assert dy.is_contiguous(
          memory_format=torch.channels_last
      ), "Only support NHWC layout."
  
      # retrive saved info
      x, w, b, sums = ctx.saved_tensors
      G = ctx.G
      eps = ctx.eps
      algo = ctx.algo
      with_swish = ctx.with_swish
  
      # enqueue bprop kernel
      dx, dw, db = group_norm_cuda.backward(
          dy, sums, x, G, w, b, eps, algo, with_swish
      )
  
      return dx, None, dw, db, None, None, None
  
imports: import torch
  import torch.nn.functional
  import torch.nn.init
  import group_norm_cuda
  from torch import Tensor
  from torch.nn.parameter import Parameter
  from torch._dynamo import disable
  from functools import partial
label_desc: Use image node_id 2 for calling the GroupNormNHWC obj's underlying member method code with example usage: obj.backward(ctx, dy) and returns: dx,  None,  dw,  db,  None,  None,  None