(滥用 gf2p8affineqb 将索引转换为位

主要观点:

  • 展示了如何将一段 C 代码向量化,从原始的reference_impl函数逐步转换为simd_impl函数,通过一系列的变换和优化来实现高效的向量化操作。
  • 介绍了gf2p8affineqb内在函数及其与matmul视图的关系,以及如何通过各种变换来接近最终的向量化实现。

关键信息和重要细节:

  • reference_impl函数通过循环遍历索引和有效位来构建结果掩码。
  • simd_impl函数通过一系列复杂的 SIMD 操作和内在函数调用来实现相同的功能,其中涉及到_mm512_gf2p8affine_epi64_epi8等内在函数。
  • gf2p8affineqb函数的两种视图,xor_selected视图更清晰地展示了操作过程,matmul视图则更便于进行高层次的转换和优化。
  • 通过一系列的代码变换,将reference_impl逐渐向matmul的形式靠近,最终得到与simd_impl相似的结构。
  • 在向量化过程中,通过各种技巧和操作,如位操作、循环变换、表查找等,来提高代码的效率和性能。
  • 对于有效索引假设为不同的情况,可以使用不同的方法来减少字节到位的操作,如_mm512_cmpneq_epi8_mask或自定义的xor_together_bits函数。
阅读 13
0 条评论