class_docstr: Base class for continual learning skeletons.
  
  **Training loop**
  The training loop is organized as follows::
  
      train
          train_exp  # for each experience
  
  **Evaluation loop**
  The evaluation loop is organized as follows::
  
      eval
          eval_exp  # for each experience
class_docstr_tok: ["Base","class","for","continual","learning","skeletons",".","*","*","Training","loop","*","*","The","training","loop","is","organized","as","follows",":",":","train","train_exp","#","for","each","experience","*","*","Evaluation","loop","*","*","The","evaluation","loop","is","organized","as","follows",":",":","eval","eval_exp","#","for","each","experience"]
docstr: Check if strategy elements (plugins, ...) are compatible with
  distributed training.
  This check does nothing if not training in distributed mode.
docstr_tok: ["Check","if","strategy","elements","(","plugins",",","...",")","are","compatible","with","distributed","training",".","This","check","does","nothing","if","not","training","in","distributed","mode","."]
code: def _check_distributed_training_compatibility(self):
      """
      Check if strategy elements (plugins, ...) are compatible with
      distributed training.
      This check does nothing if not training in distributed mode.
      """
      if not DistributedHelper.is_distributed:
          return True
  
      unsupported_plugins = []
      for plugin in self.plugins:
          if not getattr(plugin, "supports_distributed", False):
              unsupported_plugins.append(plugin)
  
      if len(unsupported_plugins) > 0:
          warnings.warn(
              "You are using plugins that are not compatible"
              "with distributed training:"
          )
          for plugin in unsupported_plugins:
              print(type(plugin), file=sys.stderr)
  
      return len(unsupported_plugins) == 0
  
imports: import sys
  import warnings
  from collections import defaultdict
  from typing import Iterable, Sequence, Optional, TypeVar, Union, List
  import torch
  from torch.nn import Module
  from avalanche.benchmarks import CLExperience, CLStream
  from avalanche.core import BasePlugin
  from avalanche.distributed.distributed_helper import DistributedHelper
  from avalanche.training.templates.strategy_mixin_protocol import BaseStrategyProtocol
  from avalanche.training.utils import trigger_plugins
label_desc: Use image node_id 12 for calling the BaseTemplate obj's underlying member method code with example usage: obj._check_distributed_training_compatibility() and returns: unknown, True