You could also use broadcasting on both tensors:
t1 = torch.randn(3, 4)
t2 = torch.randn(5, 4)

maxs = []

for line in t1:
  # Current maximum has shape of (5, 4)
  curr_max = torch.maximum(line, t2)
  maxs.append(curr_max)

# 'maxs' will have shape of (3, 5, 4)
maxs = torch.stack(maxs)

# use broadcasting
max_broadcast = torch.maximum(t1.unsqueeze(1), t2.unsqueeze(0))
print((maxs - max_broadcast).abs().max())
> tensor(0.)