256位块的CRC计算

时间:2017-04-12 11:06:27

标签: x86 crc intrinsics

我在AVX2的新版程序中使用了256位变量(__m256i类型),我使用的是Intel内在函数。之前,64位块用于处理数据。因此, _mm_crc32_u64 函数用于CRC计算。

crc = _mm_crc32_u64(seed,*chunk_64bit);

但是现在,为了提高性能,我想分别计算每个256位块(至少128位块)的CRC。 一种方法可以是在每个块中具有64位值的循环中应用 _mm_crc32_u64 。但我认为它在性能方面没有益处。

计算总共超过 _mm_crc32_u64 操作的256位块(或128位)的CRC的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以交错使用三条crc32指令以获得更高的性能。有关执行此操作的代码,请参阅this answer。您可以通过在多个处理器上运行该代码并组合生成的CRC来更进一步。