class_docstr: Tests for ops in byteps.mxnet.
code: def test_byteps_trainer_param_order(self):
      net = mx.gluon.nn.Sequential()
      # layers may be added in a random order for all workers
      layers = {"ones_": 1, "zeros_": 0}
      for name, init in layers.items():
          net.add(
              mx.gluon.nn.Dense(
                  10,
                  in_units=10,
                  weight_initializer=mx.init.Constant(init),
                  use_bias=False,
                  prefix=name,
              )
          )
      params = net.collect_params()
      net.initialize()
      trainer = bps.DistributedTrainer(params, "sgd")
      trainer._init_params()
      # check the result of bps_broadcast
      for name, init in layers.items():
          weight = params[name + "weight"].data()[0].asnumpy()
          expected = np.full(
              shape=weight.shape, fill_value=init, dtype=weight.dtype
          )
          assert np.array_equal(weight, expected), (weight, expected)
  
      print("test_byteps_trainer_param_order passed")
  
file_path: byteps/tests/test_mxnet.py
imports: import itertools
  import unittest
  import byteps.mxnet
  import mxnet
  import numpy
  from meta_test import MetaTest
label_desc: Use image node_id 2 for calling the MXTest obj's underlying member method code with example usage: obj.test_byteps_trainer_param_order() without return types