errors.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from ..errors import TritonError
  2. from typing import Optional
  3. class InterpreterError(TritonError):
  4. def __init__(self, error_message: Optional[str] = None):
  5. self.error_message = error_message
  6. def __str__(self) -> str:
  7. return self.error_message or ""
  8. class OutOfResources(TritonError):
  9. def __init__(self, required, limit, name):
  10. self.required = required
  11. self.limit = limit
  12. self.name = name
  13. def __str__(self) -> str:
  14. return f"out of resource: {self.name}, Required: {self.required}, Hardware limit: {self.limit}. Reducing block sizes or `num_stages` may help."
  15. def __reduce__(self):
  16. # this is necessary to make CompilationError picklable
  17. return (type(self), (self.required, self.limit, self.name))
  18. class PTXASError(TritonError):
  19. def __init__(self, error_message: Optional[str] = None):
  20. self.error_message = error_message
  21. def __str__(self) -> str:
  22. error_message = self.error_message or ""
  23. return f"PTXAS error: {error_message}"
  24. class AutotunerError(TritonError):
  25. def __init__(self, error_message: Optional[str] = None):
  26. self.error_message = error_message
  27. def __str__(self) -> str:
  28. error_message = self.error_message or ""
  29. return f"Autotuner error: {error_message}"