[Bugfix] Only require XGrammar on x86 (#10865)

Signed-off-by: mgoin <michael@neuralmagic.com>
This commit is contained in:
Michael Goin
2024-12-03 13:32:21 -05:00
committed by GitHub
parent 2f2cdc745a
commit 7090c27bb2
4 changed files with 36 additions and 3 deletions

View File

@@ -1,5 +1,5 @@
from .interface import _Backend # noqa: F401
from .interface import Platform, PlatformEnum, UnspecifiedPlatform
from .interface import CpuArchEnum, Platform, PlatformEnum, UnspecifiedPlatform
current_platform: Platform
@@ -120,4 +120,4 @@ elif is_openvino:
else:
current_platform = UnspecifiedPlatform()
__all__ = ['Platform', 'PlatformEnum', 'current_platform']
__all__ = ['Platform', 'PlatformEnum', 'current_platform', 'CpuArchEnum']

View File

@@ -1,4 +1,5 @@
import enum
import platform
import random
from typing import TYPE_CHECKING, NamedTuple, Optional, Tuple, Union
@@ -37,6 +38,14 @@ class PlatformEnum(enum.Enum):
UNSPECIFIED = enum.auto()
class CpuArchEnum(enum.Enum):
X86 = enum.auto()
ARM = enum.auto()
POWERPC = enum.auto()
OTHER = enum.auto()
UNKNOWN = enum.auto()
class DeviceCapability(NamedTuple):
major: int
minor: int
@@ -184,6 +193,23 @@ class Platform:
f"{quant} quantization is currently not supported in "
f"{cls.device_name}.")
@classmethod
def get_cpu_architecture(cls) -> CpuArchEnum:
"""
Determine the CPU architecture of the current system.
Returns CpuArchEnum indicating the architecture type.
"""
machine = platform.machine().lower()
if machine in ("x86_64", "amd64", "i386", "i686"):
return CpuArchEnum.X86
elif machine.startswith("arm") or machine.startswith("aarch"):
return CpuArchEnum.ARM
elif machine.startswith("ppc"):
return CpuArchEnum.POWERPC
return CpuArchEnum.OTHER if machine else CpuArchEnum.UNKNOWN
class UnspecifiedPlatform(Platform):
_enum = PlatformEnum.UNSPECIFIED