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:
https://docs.nvidia.com/cuda/archive/12.8.0/cuda-compiler-driver-nvcc/index.html#gpu-feature-list
https://docs.nvidia.com/cuda/archive/12.9.1/cuda-compiler-driver-nvcc/index.html#gpu-feature-list
https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#gpu-feature-list
Note
It is declared at module scope because of https://github.com/mypyc/mypyc/issues/1122, though it should be declared as
typing.FinalwithinComputeCapability.
- class reprospect.tools.architecture.ComputeCapability(*, major: int, minor: int)View on GitHub
Bases:
objectCompute 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.
- __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)
- 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:
objectNVIDIA 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:
StrEnumSupported 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].