transformer.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. """
  2. Copyright 2020 The Microsoft DeepSpeed Team
  3. """
  4. from .builder import CUDAOpBuilder
  5. class TransformerBuilder(CUDAOpBuilder):
  6. BUILD_VAR = "DS_BUILD_TRANSFORMER"
  7. NAME = "transformer"
  8. def __init__(self, name=None):
  9. name = self.NAME if name is None else name
  10. super().__init__(name=name)
  11. def absolute_name(self):
  12. return f'deepspeed.ops.transformer.{self.NAME}_op'
  13. def extra_ldflags(self):
  14. if not self.is_rocm_pytorch():
  15. return ['-lcurand']
  16. else:
  17. return []
  18. def sources(self):
  19. return [
  20. 'csrc/transformer/ds_transformer_cuda.cpp',
  21. 'csrc/transformer/cublas_wrappers.cu',
  22. 'csrc/transformer/transform_kernels.cu',
  23. 'csrc/transformer/gelu_kernels.cu',
  24. 'csrc/transformer/dropout_kernels.cu',
  25. 'csrc/transformer/normalize_kernels.cu',
  26. 'csrc/transformer/softmax_kernels.cu',
  27. 'csrc/transformer/general_kernels.cu'
  28. ]
  29. def include_paths(self):
  30. includes = ['csrc/includes']
  31. if self.is_rocm_pytorch():
  32. from torch.utils.cpp_extension import ROCM_HOME
  33. includes += [
  34. '{}/hiprand/include'.format(ROCM_HOME),
  35. '{}/rocrand/include'.format(ROCM_HOME)
  36. ]
  37. return includes