We write the instruction schedule in assembly so two groups of threads take turns: one computes the softmax (attention weights) while the other performs matrix multiplications.
With lean P, the matrix unit is busy for 86% of steady-state cycles, up from 60% using exponentials.
