from ..errors import TritonError
from typing import Optional
class InterpreterError(TritonError):
def __init__(self, error_message: Optional[str] = None):
self.error_message = error_message
def __str__(self) -> str:
return self.error_message or ""
class OutOfResources(TritonError):
def __init__(self, required, limit, name):
self.required = required
self.limit = limit
self.name = name
def __str__(self) -> str:
return f"out of resource: {self.name}, Required: {self.required}, Hardware limit: {self.limit}. Reducing block sizes or `num_stages` may help."
def __reduce__(self):
# this is necessary to make CompilationError picklable
return (type(self), (self.required, self.limit, self.name))