Source/Packages

Realization.Nvidia.SM86.StreamingAttentionSM86

packages/realizations/cooperative/nvidia-sm86/src/Realization/Nvidia/SM86/StreamingAttentionSM86.alpha

3,230 lines493 declarations193.3 KiBSHA-256 cc0366b3d857

def · lines 2513–2536

skEpilogue

Full file
dK = s (the sum), rows; dV^T, columns: element (key r + 8h, column 8 nt + 2 (lane % 4) + b) at (8 nt + b) seq + 8 h words past the thread's
2513def skEpilogue = (lambda unrestricted seq : Nat . (lambda unrestricted tail : (family SM86Program) .
2514  (saMovConst (skTmp 0) (saArgument 11)
2515  (saFor 32 (lambda unrestricted i : Nat .
2516    (saFmul (naturalAdd 116 i) (naturalAdd 116 i) (skTmp 0) (naturalSelect (naturalIsZero i) saWait3 saWaitNone)))
2517  (saWide skKeyGradientStorePointer saScratch saOne (saArgument 8)
2518  (saFor 16 (lambda unrestricted i : Nat .
2519    (let unrestricted nt = (naturalDivideUnchecked i 2) in (let unrestricted h = (naturalModuloUnchecked i 2) in
2520      (saOp (sbStore64 skKeyGradientStorePointer (saElem (skDK nt) h 0)
2521        (naturalAdd (naturalMultiply nt 32) (naturalMultiply h (naturalMultiply 8 (naturalMultiply saHeadWidth 4))))
2522        saWaitNone)))))
2523  -- dV^T's offset: head h's 64 x seq plane, the quad lane's first column,
2524  -- the key
2525  (saMovImm (skTmp 1) 0
2526  (saImad (skTmp 1) saQuadLane (naturalMultiply 8 seq) (skTmp 1)
2527  (saImad (skTmp 1) skHead (naturalMultiply saHeadWidth (naturalMultiply seq 4)) (skTmp 1)
2528  (saImad (skTmp 1) skRow 4 (skTmp 1)
2529  (saWide saPointer (skTmp 1) saOne (saArgument 9)
2530  (saFor 32 (lambda unrestricted i : Nat .
2531    (let unrestricted nt = (naturalDivideUnchecked i 4) in (let unrestricted h = (naturalDivideUnchecked (naturalModuloUnchecked i 4) 2) in
2532      (let unrestricted b = (naturalModuloUnchecked i 2) in
2533      (saOp (saStore saPointer (saElem (skDV nt) h b)
2534        (naturalAdd (naturalMultiply (naturalAdd (naturalMultiply 8 nt) b) (naturalMultiply seq 4)) (naturalMultiply h 32))
2535        saWaitNone))))))
2536    tail))))))))))))

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.