reprospect.tools.architecture module

reprospect.tools.architecture.CUDA_SUPPORT: Final[dict[int, SimpleSpec]] = {70: <SimpleSpec: '>=9,<=12.9'>, 75: <SimpleSpec: '>=10'>, 80: <SimpleSpec: '>=11.2'>, 86: <SimpleSpec: '>=11.2'>, 87: <SimpleSpec: '>=11.5'>, 89: <SimpleSpec: '>=11.8'>, 90: <SimpleSpec: '>=11.8'>, 100: <SimpleSpec: '>=12.8'>, 103: <SimpleSpec: '>=12.9'>, 110: <SimpleSpec: '>=13.0'>, 120: <SimpleSpec: '>=12.8'>, 121: <SimpleSpec: '>=12.9'>}

CUDA Toolkit support.

References:

Note

It is declared at module scope because of https://github.com/mypyc/mypyc/issues/1122, though it should be declared as typing.Final within ComputeCapability.

class reprospect.tools.architecture.ComputeCapability(*, major: int, minor: int)View on GitHub

Bases: object

Compute capability.

References:

Note

Explicitly implements all ordering methods as a workaround for https://github.com/mypyc/mypyc/issues/1176. This requires also implementing __hash__ explicitly, since mypyc loses automatic hashability when comparison methods are defined, see https://github.com/mypyc/mypyc/issues/1173.

__init__(*, major: int, minor: int) None
__str__() strView on GitHub
property as_int: intView on GitHub
>>> from reprospect.tools.architecture import ComputeCapability
>>> ComputeCapability(major = 8, minor = 6).as_int
86
static from_int(value: int) ComputeCapabilityView on GitHub
>>> from reprospect.tools.architecture import ComputeCapability
>>> ComputeCapability.from_int(86)
ComputeCapability(major=8, minor=6)
major: int
minor: int
supported(version: Version) boolView on GitHub

Check if the architecture is supported by the CUDA version.

>>> from semantic_version import Version
>>> from reprospect.tools.architecture import NVIDIAArch
>>> NVIDIAArch.from_str('VOLTA70').compute_capability.supported(version = Version('13.0.0'))
False
class reprospect.tools.architecture.NVIDIAArch(family: NVIDIAFamily, compute_capability: ComputeCapability)View on GitHub

Bases: object

NVIDIA architecture.

It models NVIDIA GPU hardware identifiers — i.e., the microarchitecture family and compute capability.

__init__(family: NVIDIAFamily, compute_capability: ComputeCapability) None
__str__() strView on GitHub
property as_compute: strView on GitHub

Convert to CUDA “virtual architecture” (compute_).

>>> from reprospect.tools.architecture import NVIDIAArch
>>> NVIDIAArch.from_str('ADA89').as_compute
'compute_89'
property as_sm: strView on GitHub

Convert to CUDA “real architecture” (sm_).

compute_capability: ComputeCapability
family: NVIDIAFamily
static from_compute_capability(cc: str | int | ComputeCapability) NVIDIAArchView on GitHub
static from_str(arch: str) NVIDIAArchView on GitHub
>>> from reprospect.tools.architecture import NVIDIAArch
>>> NVIDIAArch.from_str('AMPERE86')
NVIDIAArch(family=<NVIDIAFamily.AMPERE: 'AMPERE'>, compute_capability=ComputeCapability(major=8, minor=6))
class reprospect.tools.architecture.NVIDIAFamily(*values)View on GitHub

Bases: StrEnum

Supported NVIDIA architecture families.

ADA = 'ADA'
AMPERE = 'AMPERE'
BLACKWELL = 'BLACKWELL'
HOPPER = 'HOPPER'
TURING = 'TURING'
VOLTA = 'VOLTA'
__str__()

Return str(self).

static from_compute_capability(cc: ComputeCapability | int) NVIDIAFamilyView on GitHub

Get the NVIDIA architecture family from a compute capability.

See [NVIg].