code: def test_launch_ffn_bias_bwd():
      batch_size, seq_len = kt.bs_sl()
      hidden_dim = kt.hidden_dim
      coef = random.randint(1, 4)
      print(f"(rows, cols): ({batch_size*seq_len}, {coef*hidden_dim})")
  
      val = kt.rand((batch_size * seq_len, coef * hidden_dim))
      custom_res = kt.rand((coef * hidden_dim))
  
      if kt.dtype == torch.float:
          func = cuda_module.torch_launch_ffn_bias_bwd_fp32
      else:
          func = cuda_module.torch_launch_ffn_bias_bwd_fp16
  
      # [batch_size*seq_len, coef*hidden_dim] ->
      # [batch_size*seq_len, coef*hidden_dim]
  
      def custom():
          func(val, custom_res, batch_size * seq_len, coef * hidden_dim)
          return [
              custom_res,
          ]
  
      def baseline():
          temp = val.to(torch.float)
          base = torch.sum(temp, 0)
          base = base.to(val)
          return [
              base.contiguous(),
          ]
  
      return custom, baseline
  
imports: import random
  import torch
  from torch._C import ScriptModule, dtype
  from torch.nn import functional
  from lightseq.training.ops.pytorch.builder import KernelBuilder, AdamBuilder
  from tests.util import TestDecorator
  from torch_crf import CRF
label_desc: Use image node_id 14 for calling a global function with example usage: test_launch_ffn_bias_bwd() and returns: custom,  baseline, list, list