code: def _update_params_on_kvstore_nccl(param_arrays, grad_arrays, kvstore, param_names):
      
      valid_indices = [index for index, grad_list in
                       enumerate(grad_arrays) if grad_list[0] is not None]
      valid_grad_arrays = [grad_arrays[i] for i in valid_indices]
      valid_param_arrays = [param_arrays[i] for i in valid_indices]
      valid_param_names = [param_names[i] for i in valid_indices]
      size = len(valid_grad_arrays)
      start = 0
      # Use aggregation by default only with NCCL
      default_batch = '16'
      batch = int(os.getenv('MXNET_UPDATE_AGGREGATION_SIZE', default_batch))
      while start < size:
          end = start + batch if start + batch < size else size
          # push gradient, priority is negative index
          kvstore.push(valid_param_names[start:end], valid_grad_arrays[start:end], priority=-start)
          # pull back the weights
          kvstore.pull(valid_param_names[start:end], valid_param_arrays[start:end], priority=-start)
          start = end
docs: Perform update of param_arrays from grad_arrays on NCCL kvstore.