Learning FlashAttention the Hard Way

Part 2: Efficient CUDA Kernel Generation