def __init__(self, args, params):
        super().__init__(args, params)
        if self.args.distributed_weight_update == 2:
            dwu_args = self.distributed_weight_update_config
            print("DistributedFusedAdam",dwu_args)
            self._optimizer = DistributedFusedAdam(params, **dwu_args, **self.optimizer_config)
        elif self.args.distributed_weight_update == 3:
            dwu_args = self.distributed_weight_update_config
            print("DistributedFusedAdamV2",dwu_args)
            self._optimizer = DistributedFusedAdamV2(params, **dwu_args, **self.optimizer_config)
        elif self.args.distributed_weight_update == 4:
            dwu_args = self.distributed_weight_update_config
            print("DistributedFusedAdamV3",dwu_args)
            self._optimizer = DistributedFusedAdamV3(params, **dwu_args, **self.optimizer_config)
        else:
            assert (self.args.distributed_weight_update == 0), "Vanilla optimizer not supported anymore"
            self._optimizer = FusedAdam(params, **self.optimizer_config)