Populære emner
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Endelig, etter dager med enten å lese dokumenter eller feilsøke trådindekser, var jeg i stand til å implementere flash-oppmerksomhet fra bunnen av i DSC på MI300X!
Den første versjonen (oransje) er den grunnleggende skalarversjonen fra det originale flash-oppmerksomhetspapiret.
Den andre versjonen (grønn) er den samme algoritmen, men bruker matrisekjerner (AMD tensorkjerner), og som du kan se er denne *betydelig* raskere enn skalaren.
Jeg brukte matrisekjernene til å beregne både Sij = Qi @ Kj^T og Pij @ Vj.
Noen "gotchas" av AMD-matrisekjerner:
- De fungerer per bølgefront og en bølgefront er 64 tråder på AMD, dette betyr at du må holde styr på både ID-en til gjeldende bølge og også ID-en til tråden i den bølgen.
- Utdataoppsettet vil bli stokket i registre på grunn av det faktum at kjerneoperasjonen til en matrisekjerne er et 4x1 ytre produkt, så et ombestillingstrinn er nødvendig.
- (Så vidt jeg vet) er hipcc-intrinsics for matrisekjerner ikke dokumentert noe sted. Det er en repo med en haug med eksempler fra AMD, men bortsett fra det må du grep LLVM-kodebase.
Jeg kommer til å polere koden min nå og da vil jeg sannsynligvis skrive et mer dyptgående innlegg om flash-oppmerksomhet på AMD.
Og forresten, rop til @HotAisle for å gjøre dette mulig!

Topp
Rangering
Favoritter

