code: def bm_chamfer() -> None:
      # Currently disabled.
      return
      devices = ["cpu"]
      if torch.cuda.is_available():
          devices.append("cuda:0")
  
      kwargs_list_naive = []
      batch_size = [1, 32]
      return_normals = [True, False]
      test_cases = product(batch_size, return_normals, devices)
  
      for case in test_cases:
          b, n, d = case
          kwargs_list_naive.append(
              {
                  "batch_size": b,
                  "P1": 32,
                  "P2": 64,
                  "return_normals": n,
                  "device": d,
              }
          )
  
      benchmark(
          TestChamfer.chamfer_naive_with_init,
          "CHAMFER_NAIVE",
          kwargs_list_naive,
          warmup_iters=1,
      )
  
      if torch.cuda.is_available():
          device = "cuda:0"
          kwargs_list = []
          batch_size = [1, 32]
          P1 = [32, 1000, 10000]
          P2 = [64, 3000, 30000]
          return_normals = [True, False]
          homogeneous = [True, False]
          test_cases = product(
              batch_size, P1, P2, return_normals, homogeneous
          )
  
          for case in test_cases:
              b, p1, p2, n, h = case
              kwargs_list.append(
                  {
                      "batch_size": b,
                      "P1": p1,
                      "P2": p2,
                      "return_normals": n,
                      "homogeneous": h,
                      "device": device,
                  }
              )
          benchmark(
              TestChamfer.chamfer_with_init,
              "CHAMFER",
              kwargs_list,
              warmup_iters=1,
          )
  
imports: from itertools import product
  import torch
  from fvcore.common.benchmark import benchmark
  from tests.test_chamfer import TestChamfer
label_desc: Use image node_id 1 for calling a global function with example usage: bm_chamfer() without return types