code: def _fused_adan_multi_tensor(
      params: List[Tensor],
      grads: List[Tensor],
      exp_avgs: List[Tensor],
      exp_avg_sqs: List[Tensor],
      exp_avg_diffs: List[Tensor],
      neg_pre_grads: List[Tensor],
      *,
      beta1: float,
      beta2: float,
      beta3: float,
      bias_correction1: float,
      bias_correction2: float,
      bias_correction3_sqrt: float,
      lr: float,
      weight_decay: float,
      eps: float,
      no_prox: bool,
      clip_global_grad_norm: Tensor,
  ):
      import fused_adan
  
      multi_tensor_applier = MultiTensorApply(2048 * 32)
      _dummy_overflow_buf = torch.cuda.IntTensor([0])
      multi_tensor_applier(
          fused_adan.adan_multi_tensor,
          _dummy_overflow_buf,
          [
              params,
              grads,
              exp_avgs,
              exp_avg_sqs,
              exp_avg_diffs,
              neg_pre_grads,
          ],
          beta1,
          beta2,
          beta3,
          bias_correction1,
          bias_correction2,
          bias_correction3_sqrt,
          lr,
          weight_decay,
          eps,
          no_prox,
          clip_global_grad_norm,
      )
      torch._foreach_zero_(neg_pre_grads)
      torch._foreach_add_(neg_pre_grads, grads, alpha=-1.0)
  
file_path: NeMo/nemo/core/optim/adan.py
imports: import math
  from typing import List
  import torch
  from torch import Tensor
  from torch.optim.optimizer import Optimizer
label_desc: Use image node_id 3 for calling a global function with example usage: _fused_adan_multi_tensor(params, grads, exp_avgs, exp_avg_sqs, exp_avg_diffs, neg_pre_grads) without return types