code: def test_binary_bc_tensor(ctx, op):
      t1 = [torch.rand((2, 3, 4, 5)) for _ in range(3)]
      dt1 = DTensor.from_sharding_list(ctx, t1, num_partitions=3)
  
      t2 = torch.rand((4, 5))
      assert op(dt1, t2) == DTensor.from_sharding_list(
          ctx, [op(s, t2) for s in t1], num_partitions=3
      )
  
      t2 = torch.rand((1, 1, 4, 5))
      assert op(dt1, t2) == DTensor.from_sharding_list(
          ctx, [op(s, t2) for s in t1], num_partitions=3
      )
  
      t1 = [torch.rand((2, 3, 4, 5)) for _ in range(3)]
      dt1 = DTensor.from_sharding_list(
          ctx, t1, num_partitions=3, axis=1
      )
  
      t2 = torch.rand((4, 5))
      assert op(dt1, t2) == DTensor.from_sharding_list(
          ctx, [op(s, t2) for s in t1], num_partitions=3
      )
  
imports: import pytest
  import torch
  from fate.arch import Context
  from fate.arch.computing.backends.standalone import CSession
  from fate.arch.federation.backends.standalone import StandaloneFederation
  from fate.arch.tensor import DTensor
  from pytest import fixture
label_desc: Use image node_id 15 for calling a global function with example usage: test_binary_bc_tensor(ctx, op) without return types