StartRocks向量化过滤

2022-09-06 15:20:36 浏览数 (1)

如何通过SIMD指令快速过滤?

比如上图的例子,有atrr_A列,有8个值。TID:0-7,过滤小于45的列值。

1)通过SIMD COMPARE指令可以一次性比较一批数据。比如上例,满足条件的标记到bitmask中。

2)通过SIMD permute压缩,将满足条件的移动到前面,满足条件的都在一起。

3)通过SIMD masked store将TID输出。

这样就批量快速过滤出来小于45的列值。opengauss向量化比较后,也会将值进行压缩,也就是将满足条件的都放到前面在一起,但它没有显式使用SIMD指令进行加速,这个地方同样可以应用SIMD permute指令。

0 人点赞