能否融合shuffle(tbl)+cvt+add实现与AVX/NEON MAD SIMD指令同吞吐量?
AVX指令融合优化:LUT-based GEMV吞吐量提升问题
在Raptor Lake架构的酷睿i5处理器上,我对_mm256_shuffle_epi8和_mm256_maddubs_epi16指令做了基准测试,结果显示二者吞吐量几乎一致,与AVX官方文档描述相符。
当前边缘计算领域存在用查找表(LUT)实现通用矩阵向量乘法(GEMV)的趋势。在AVX环境下,该操作需要三条指令完成,示例代码如下:
__m256i res = _mm256_shuffle_epi8(lut); c = _mm256_add_epi16(c, _mm256_cvtepi8_epi16(_mm256_castsi256_si128(res)));
但这套指令序列相比_mm256_maddubs_epi16要复杂得多——后者在单个执行单元中融合了乘法、转换与加法操作,这直接导致LUT方案的吞吐量比后者低约30%。我希望找到相关技术依据,确认是否能将_mm256_shuffle_epi8 + _mm256_cvtepi8_epi16 + _mm256_add_epi8这三条指令进行融合,使LUT方案的吞吐量达到_mm256_maddubs_epi16的水平。目前仅能找到如LUTMUL这类实现了FPGA版本的相关论文,但其中的技术细节不够明确。
内容的提问来源于stack exchange,提问作者namea hang
相关产品推荐
相关产品推荐

