Source/Packages

Accelerator.SM86.Capability

packages/hardware/architectures/nvidia-sm86/src/Accelerator/SM86/Capability.alpha

203 lines55 declarations8.1 KiBSHA-256 bc5d1e28b0a1

Complete file · line 62

Capability.alpha

Definition view
1module Accelerator.SM86.Capability
2
3import Model.Parameter
4import Model.Word64
5import Std.Natural
6
7-- Capability admission is deliberately independent of marketing product names.
8-- A caller supplies measured device/runtime facts; a system supplies the exact
9-- minimums it needs.  Product name, UUID, PCI identity and driver version belong
10-- in the physical receipt that accompanies these facts, not in admission.
11family SM86DeviceCapabilities : Type 0
12constructor SM86DeviceCapabilitiesValue
13field unrestricted sm86CapabilityComputeMajor : Nat
14field unrestricted sm86CapabilityComputeMinor : Nat
15field unrestricted sm86CapabilityTotalVideoMemoryBytes : (family ModelWord64)
16field unrestricted sm86CapabilityAvailableVideoMemoryBytes : (family ModelWord64)
17field unrestricted sm86CapabilityMappedAddressEnd : (family ModelWord64)
18field unrestricted sm86CapabilityMaximumGridX : Nat
19field unrestricted sm86CapabilityUVMSupported : Nat
20field unrestricted sm86CapabilityResourceManagerSupported : Nat
21field unrestricted sm86CapabilityQMDSupported : Nat
22field unrestricted sm86CapabilityPushbufferSupported : Nat
23field unrestricted sm86CapabilityGPFIFOSupported : Nat
24field unrestricted sm86CapabilityDeviceTimestampsSupported : Nat
25field unrestricted sm86CapabilityHostFallbacks : Nat
26
27end-family
28
29family SM86CapabilityRequirements : Type 0
30constructor SM86CapabilityRequirementsValue
31field unrestricted sm86RequirementComputeMajor : Nat
32field unrestricted sm86RequirementComputeMinor : Nat
33field unrestricted sm86RequirementAvailableVideoMemoryBytes : (family ModelWord64)
34field unrestricted sm86RequirementMappedAddressEnd : (family ModelWord64)
35field unrestricted sm86RequirementMaximumGridX : Nat
36field unrestricted sm86RequirementUVM : Nat
37field unrestricted sm86RequirementResourceManager : Nat
38field unrestricted sm86RequirementQMD : Nat
39field unrestricted sm86RequirementPushbuffer : Nat
40field unrestricted sm86RequirementGPFIFO : Nat
41field unrestricted sm86RequirementDeviceTimestamps : Nat
42field unrestricted sm86RequirementNoHostFallback : Nat
43
44end-family
45
46family SM86CapabilityChecks : Type 0
47constructor SM86CapabilityChecksValue
48field unrestricted sm86CapabilityArchitectureAccepted : Nat
49field unrestricted sm86CapabilityMemoryAccepted : Nat
50field unrestricted sm86CapabilityAddressExtentAccepted : Nat
51field unrestricted sm86CapabilityGridAccepted : Nat
52field unrestricted sm86CapabilityUVMAccepted : Nat
53field unrestricted sm86CapabilityResourceManagerAccepted : Nat
54field unrestricted sm86CapabilityQMDAccepted : Nat
55field unrestricted sm86CapabilityPushbufferAccepted : Nat
56field unrestricted sm86CapabilityGPFIFOAccepted : Nat
57field unrestricted sm86CapabilityDeviceTimestampsAccepted : Nat
58field unrestricted sm86CapabilityNoHostFallbackAccepted : Nat
59
60end-family
61
62family SM86CapabilityAdmission : Type 0
63constructor SM86CapabilityAccepted
64field unrestricted sm86CapabilityAcceptedChecks : (family SM86CapabilityChecks)
65constructor SM86CapabilityRejected
66field unrestricted sm86CapabilityRejectedChecks : (family SM86CapabilityChecks)
67
68end-family
69
70def sm86CapabilityOne : Nat =
71  (succ zero)
72
73-- Static shared memory needs no per-kernel opt-in QMD setting on SM86. A
74-- planner that wants more must establish and encode the dynamic allocation.
75def sm86StaticSharedBytesPerBlock : Nat = (naturalMultiply 48 1024)
76
77def sm86CapabilityFlagAccepted =
78  (lambda unrestricted value : Nat . (naturalEqual value sm86CapabilityOne))
79
80def sm86CapabilityWord64AtLeast =
81  (lambda unrestricted observed : (family ModelWord64) .
82    (lambda unrestricted required : (family ModelWord64) .
83      (naturalIsZero (modelWord64LessThan observed required))))
84
85def sm86CapabilityChecks =
86  (lambda unrestricted requirements : (family SM86CapabilityRequirements) .
87    (lambda unrestricted observed : (family SM86DeviceCapabilities) .
88      (eliminate
89        SM86CapabilityRequirements
90        (lambda unrestricted current : (family SM86CapabilityRequirements) .
91          (family SM86CapabilityChecks))
92        requirements
93        (branch
94          SM86CapabilityRequirementsValue
95          requiredMajor
96          requiredMinor
97          requiredMemory
98          requiredAddressEnd
99          requiredGridX
100          requiredUVM
101          requiredRM
102          requiredQMD
103          requiredPushbuffer
104          requiredGPFIFO
105          requiredTimestamps
106          requiredNoFallback
107          .
108          (eliminate
109            SM86DeviceCapabilities
110            (lambda unrestricted current : (family SM86DeviceCapabilities) .
111              (family SM86CapabilityChecks))
112            observed
113            (branch
114              SM86DeviceCapabilitiesValue
115              observedMajor
116              observedMinor
117              observedTotalMemory
118              observedAvailableMemory
119              observedAddressEnd
120              observedGridX
121              observedUVM
122              observedRM
123              observedQMD
124              observedPushbuffer
125              observedGPFIFO
126              observedTimestamps
127              observedFallbacks
128              .
129              (constructor
130                SM86CapabilityChecks
131                SM86CapabilityChecksValue
132                (naturalAnd
133                  (naturalEqual observedMajor requiredMajor)
134                  (naturalEqual observedMinor requiredMinor))
135                (sm86CapabilityWord64AtLeast observedAvailableMemory requiredMemory)
136                (sm86CapabilityWord64AtLeast observedAddressEnd requiredAddressEnd)
137                (naturalLessOrEqual requiredGridX observedGridX)
138                (naturalEqual (sm86CapabilityFlagAccepted observedUVM) requiredUVM)
139                (naturalEqual (sm86CapabilityFlagAccepted observedRM) requiredRM)
140                (naturalEqual (sm86CapabilityFlagAccepted observedQMD) requiredQMD)
141                (naturalEqual (sm86CapabilityFlagAccepted observedPushbuffer) requiredPushbuffer)
142                (naturalEqual (sm86CapabilityFlagAccepted observedGPFIFO) requiredGPFIFO)
143                (naturalEqual (sm86CapabilityFlagAccepted observedTimestamps) requiredTimestamps)
144                (naturalEqual (naturalIsZero observedFallbacks) requiredNoFallback))))))))
145
146def sm86CapabilityChecksAccepted =
147  (lambda unrestricted checks : (family SM86CapabilityChecks) .
148    (eliminate
149      SM86CapabilityChecks
150      (lambda unrestricted current : (family SM86CapabilityChecks) . Nat)
151      checks
152      (branch
153        SM86CapabilityChecksValue
154        architecture
155        memory
156        addressExtent
157        grid
158        uvm
159        resourceManager
160        qmd
161        pushbuffer
162        gpfifo
163        timestamps
164        noFallback
165        .
166        (naturalAnd
167          architecture
168          (naturalAnd
169            memory
170            (naturalAnd
171              addressExtent
172              (naturalAnd
173                grid
174                (naturalAnd
175                  uvm
176                  (naturalAnd
177                    resourceManager
178                    (naturalAnd
179                      qmd
180                      (naturalAnd pushbuffer (naturalAnd gpfifo (naturalAnd timestamps noFallback)))))))))))))
181
182def sm86CapabilityAdmit =
183  (lambda unrestricted requirements : (family SM86CapabilityRequirements) .
184    (lambda unrestricted observed : (family SM86DeviceCapabilities) .
185      (app
186        (lambda unrestricted checks : (family SM86CapabilityChecks) .
187          (nat-eliminate
188            (lambda unrestricted accepted : Nat . (family SM86CapabilityAdmission))
189            (constructor SM86CapabilityAdmission SM86CapabilityRejected checks)
190            (lambda unrestricted predecessor : Nat .
191              (lambda unrestricted induction : (family SM86CapabilityAdmission) .
192                (constructor SM86CapabilityAdmission SM86CapabilityAccepted checks)))
193            (sm86CapabilityChecksAccepted checks)))
194        (sm86CapabilityChecks requirements observed))))
195
196def sm86CapabilityAdmissionAccepted =
197  (lambda unrestricted admission : (family SM86CapabilityAdmission) .
198    (eliminate
199      SM86CapabilityAdmission
200      (lambda unrestricted current : (family SM86CapabilityAdmission) . Nat)
201      admission
202      (branch SM86CapabilityAccepted checks . sm86CapabilityOne)
203      (branch SM86CapabilityRejected checks . zero)))

The compiler supplied declaration spans and resolved links from this source snapshot. This page does not assert that this file belongs to a checked closure.