无符号 8 位数字的除法

主要观点:介绍了多种 8 位无符号数的除法实现方法,包括使用浮点除法、长除法算法及向量化实现(SSE、AVX2、AVX-512),并通过实验对比了在不同 CPU 上的性能。
关键信息

  • 除法操作开销大,常用 SIMD ISAs 中仅 RISC-V Vector Extension 提供整数除法,其他都有浮点除法。
  • 介绍了浮点除法实现的步骤及不同情况下的优化(带舍入、不带舍入、使用近似倒数)。
  • 长除法算法的步骤及性质,向量化过程中各步骤的操作(更新余数、比较、条件操作)及不同指令集下的实现细节。
  • 实验结果显示 AVX-512 长除法在 Intel CPU 上最快,AVX2 近似倒数在 Ryzen 上最快,且 GCC 自动向量化代码性能较好。
    重要细节
  • SSE 中通过特定指令进行数据转换和运算,如cvtsi32_si128等。
  • AVX-512 可直接支持无符号字节比较,实现更便捷。
  • 不同 CPU 上各除法实现的具体性能数据,如 Ryzen 7、Skylake-X、IceLake 上不同程序的循环周期及加速比。
  • 提供了相关的参考资料和源代码链接,如Dividing 8-bit Uints with AVX-512VBMI等。
阅读 8
0 条评论