Doris版本:1.2.3:GitHub - apache/doris: Apache Doris is an easy-to-use, high performance and unified analytics database.
我想请教一下这个版本的Doris在实现Hash_join的时候有使用到SIMD指令集向量化的技术吗?如果有的话,是在哪一个阶段使用到了呢?我在Hash_join的源码部分中没有找到相关的向量化优化?所有想请教一下是没有使用向量化优化还是我没有找到呢?请指教,万分感谢~
请参考be/src/vec/exec/join/vhash_join_node.cpp
您好,vhash_join_node.cpp我已经大致看过一遍,但是没有看到有关于手动使用SIMD指令的函数定义来进行优化的部分,是不是因为这一块的向量化实现都是依靠编译器自动向量化的方式来实现的呢?如果是,能不能在这个hash_join的实现中举例哪些地方的for或者loop等是有自动向量化的效果?
ps:有没有一个文档是对doris的所有向量化进行实现进行介绍的呢?
向量化其实不单纯是simd的逻辑哈。没看到simd的部分不代表没有向量化。
向量化从字面上理解就是一次对一个值的计算变成一次对一组值的计算。详情可以参考该分享:【Apache Doris 向量化技术实现与后续规划-哔哩哔哩】 Apache Doris 向量化技术实现与后续规划_哔哩哔哩_bilibili
有两个问题希望您能解答一下:
1.对一组向量的计算也是需要类似SIMD指令等进行以组为单位的计算,如果既不使用手动实现SIMD函数定义,那就只能依赖编译器的自动向量化的能力。除了这两个方法可以达到以block为处理单位,doris还有其他方法做到这样的向量化处理吗?
2.希望能给我在hash_join的实现上,举一个向量化实现的代码片段,无论是自动向量化还是其他的向量化实现的具体体现,能够让我参考学习。
万分感谢。