【发布时间】:2020-03-10 12:26:55
【问题描述】:
Cascade Lake Intel CPU 中有新的AVX-512 VNNI 指令,可以加速 CPU 上的神经网络推理。 我将它们集成到Simd Library 以加速Synet(我的神经网络推理小框架)并获得显着的性能提升。
事实上,我只使用了一条指令_mm512_dpbusd_epi32 (vpdpbusd),它允许执行 8 位有符号和无符号整数的乘法,然后将它们累加到 32 位整数累加器中。
为 NEON(ARM 平台)执行模拟优化会很棒。
所以有一个问题:
是否存在任何类似 NEON 指令的模拟 vpdpbusd?如果没有类似物,模拟指令的最佳方法是什么?
下面有一个标量实现(为了更好地理解函数必须做什么):
inline void pdpbusd(int32x4_t& sum, uint8x16_t input, int8x16_t weight)
{
for (size_t i = 0; i < 4; ++i)
for (size_t j = 0; j < 4; ++j)
sum[i] += int32_t(input[i * 4 + j]) * int32_t(weight[i * 4 + j]);
}
【问题讨论】:
-
Ermig,请披露您与 synet 项目的隶属关系。另外,请改写项目描述,“推理”不是动词,我觉得你正在使用它作为一个动词。松散相关的推荐阅读:stackoverflow.com/help/promotion
标签: c++ simd neon simd-library synet