all_ops.py 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. # Copyright (c) Microsoft Corporation.
  2. # SPDX-License-Identifier: Apache-2.0
  3. # DeepSpeed Team
  4. import os
  5. import pkgutil
  6. import importlib
  7. try:
  8. # during installation time accelerator is visible, otherwise return deepspeed.accelerator
  9. from accelerator import get_accelerator
  10. except ImportError:
  11. from deepspeed.accelerator import get_accelerator
  12. # List of all available ops
  13. # reflect all builder names into __op_builders__
  14. op_builder_dir = get_accelerator().op_builder_dir()
  15. op_builder_module = importlib.import_module(op_builder_dir)
  16. __op_builders__ = []
  17. for _, module_name, _ in pkgutil.iter_modules([os.path.dirname(op_builder_module.__file__)]):
  18. # avoid self references
  19. if module_name != 'all_ops' and module_name != 'builder':
  20. module = importlib.import_module("{}.{}".format(op_builder_dir, module_name))
  21. for member_name in module.__dir__():
  22. if member_name.endswith('Builder'):
  23. # append builder to __op_builders__ list
  24. builder = get_accelerator().create_op_builder(member_name)
  25. __op_builders__.append(builder)
  26. ALL_OPS = {op.name: op for op in __op_builders__ if op is not None}
  27. accelerator_name = get_accelerator()._name