pub enum SmVersion {
Sm75,
Sm80,
Sm86,
Sm89,
Sm90,
Sm90a,
Sm100,
Sm120,
}Expand description
NVIDIA GPU Streaming Multiprocessor version.
Each variant corresponds to a CUDA compute capability and determines the PTX ISA version, available instructions, and hardware features.
§Ordering
SmVersion derives Ord so that newer architectures compare greater
than older ones: Sm80 > Sm75.
Variants§
Sm75
Turing (compute capability 7.5).
Sm80
Ampere (compute capability 8.0).
Sm86
Ampere GA10x (compute capability 8.6).
Sm89
Ada Lovelace (compute capability 8.9).
Sm90
Hopper (compute capability 9.0).
Sm90a
Hopper with accelerated features (compute capability 9.0a).
Sm100
Blackwell (compute capability 10.0).
Sm120
Blackwell B200 / next-gen (compute capability 12.0).
Implementations§
Source§impl SmVersion
impl SmVersion
Sourcepub const fn as_ptx_str(self) -> &'static str
pub const fn as_ptx_str(self) -> &'static str
Returns the PTX target string (e.g. "sm_80", "sm_90a").
Sourcepub const fn ptx_version(self) -> &'static str
pub const fn ptx_version(self) -> &'static str
Returns the PTX ISA version string appropriate for this architecture.
The PTX version determines which instructions and features are available. Later architectures require higher PTX versions.
Sourcepub const fn ptx_isa_version(self) -> (u32, u32)
pub const fn ptx_isa_version(self) -> (u32, u32)
Returns the PTX ISA version as a (major, minor) pair.
This is useful for programmatic version comparisons rather than string parsing.
§Examples
use oxicuda_ptx::arch::SmVersion;
assert_eq!(SmVersion::Sm80.ptx_isa_version(), (7, 0));
assert_eq!(SmVersion::Sm90.ptx_isa_version(), (8, 0));
assert_eq!(SmVersion::Sm120.ptx_isa_version(), (8, 7));Sourcepub const fn capabilities(self) -> ArchCapabilities
pub const fn capabilities(self) -> ArchCapabilities
Returns the architecture capabilities for this SM version.
Sourcepub const fn from_compute_capability(major: i32, minor: i32) -> Option<Self>
pub const fn from_compute_capability(major: i32, minor: i32) -> Option<Self>
Converts a CUDA compute capability pair to an SmVersion.
Returns None if the compute capability is not recognized.
§Examples
use oxicuda_ptx::arch::SmVersion;
assert_eq!(SmVersion::from_compute_capability(8, 0), Some(SmVersion::Sm80));
assert_eq!(SmVersion::from_compute_capability(7, 5), Some(SmVersion::Sm75));
assert_eq!(SmVersion::from_compute_capability(6, 0), None);Sourcepub const fn max_threads_per_block(self) -> u32
pub const fn max_threads_per_block(self) -> u32
Returns the maximum number of threads per block for this architecture.
Sourcepub const fn max_threads_per_sm(self) -> u32
pub const fn max_threads_per_sm(self) -> u32
Returns the maximum number of threads per SM for this architecture.
Returns the maximum shared memory per block in bytes.