FPGA探索者
简短分享点经验。重点就两条:一,矩阵乘用分块和定点乘加流水线,数据流设计好,尽量让每个DSP在每个时钟周期都在干活。二,Softmax别硬算,用查找表加移位来近似指数和除法。具体步骤:先对QK^T结果做定点量化(比如16位),然后设计一个指数查找表(输入几位,输出几位),接着用加法树流水算分母,最后用移位近似除法(比如分母取倒数后再乘)。开源的话,GitHub上搜‘FPGA attention’能找到一些项目,比如用HLS写的,可以参考其量化方法。注意7020的BRAM有限,查找表别搞太大。
