g_float32 = torch.mm(d_float32, f_float16.float())
CPU Training Example:
  # Creates model and optimizer in default precision
  model = Net()
  optimizer = optim.SGD(model.parameters(), ...)

  for epoch in epochs:
      for input, target in data:
          optimizer.zero_grad()

          # Runs the forward pass with autocasting.
          with torch.autocast(device_type="cpu", dtype=torch.bfloat16):
              output = model(input)
              loss = loss_fn(output, target)

          loss.backward()
          optimizer.step()

CPU Inference Example:
  # Creates model in default precision
  model = Net().eval()

  with torch.autocast(device_type="cpu", dtype=torch.bfloat16):
      for input in data:
          # Runs the forward pass with autocasting.
          output = model(input)

CPU Inference Example with Jit Trace:
  class TestModel(nn.Module):
      def __init__(self, input_size, num_classes):
