开发者社区 > 大数据与机器学习 > 实时数仓 Hologres > 正文

holo的向量化执行这块都在哪些地方使用了simd指令了啊,这个有文档介绍吗

holo的向量化执行这块都在哪些地方使用了simd指令了啊,这个有文档介绍吗

展开
收起
游客3oewgrzrf6o5c 2022-08-31 13:51:06 1971 0
3 条回答
写回答
取消 提交回答
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    Hologres支持毫秒级的写入可见性,Druid和ClickHouse支持的是秒级。同时Hologres支持写入更新。在计算方面,Hologres同Druid和ClickHouse都采用了向量化/SIMD执行器,值得一提的是,因Hologres底层技术原理可以支持联邦查询和高QPS的点查,这些都是Druid和ClickHouse无法做到的。

    SIMD (Single Instruction Multiple Data) 即单条指令操作多条数据——原理即在CPU 寄存器层面实现数据的并行操作。

    向量化计算vectorization 向量化计算(vectorization),也叫vectorized operation,也叫array programming,说的是一个事情:将多次for循环计算变成一次计算。

    简单来说,向量化计算就是将一个loop——处理一个array的时候每次处理1个数据共处理N次,转化为vectorization——处理一个array的时候每次同时处理8个数据共处理N/8次。

    每列的数据存储在一起,可以认为这些数据是以数组的方式存储的,基于这样的特征,当该列数据需要进行某一同样操作,可以使用SIMD进一步提升计算效率,即便运算的机器上不支持SIMD, 也可以通过一个循环来高效完成对这个数据块各个值的计算。

    可以参考下面这篇文章:

    https://m.toutiao.com/is/rsd2Vjj/ - 向量化代码实践与思考:如何借助向量化技术给代码提速 - 今日头条

    2022-11-26 19:25:58
    赞同 展开评论 打赏
  • Hologres高性能的查询:基于 MPP 架构的分布式 ROLAP (Relational OLAP)分析引擎,各节点职责对等,各自负责一部分数据的处理(Shared Nothing),开发了向量化执行引擎,利用日志合并树、bitmap索引与 CPU 的 SIMD(单指令多数据 ,Single Instruction Multiple Data)等特性,充分发挥硬件优势,即使面对大数据量计算的场景,通常也能达到 CPU 性能的极限,达到高效计算的目的。具备同时支持PointQuery,Ad-hoc,OLAP,实时离线联邦分析等多业务场景的能力,让对外服务统一引擎成为可能。

    2022-11-25 07:57:28
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    SIMD可以让计算变并行,既然要用SIMD,我们的执行模型就不能再是一次读一个tuple,而是需要一次读一批tuple,不然SIMD中的multiple data从何而来。一个执行向量化执行的引擎首先就需要将数据按照batch做读取,这似乎不是一个太困难的事情,我们并没有改变volcano的设计,依然可以迭代执行,只不过读取的数据量做了些变化,我们需要让每个算子可以执行一批数据并返回。 在ClickHouse中,每种类型都有基于这种类型的序列化函数来完成序列化,因此可以基于不同类型做特定的向量化。在数据比较和过滤的时候,ClickHouse在内存中每种不同的列都有自己单独的filter和compare函数。

    2022-11-22 21:04:39
    赞同 1 展开评论 打赏

本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975

相关电子书

更多
JS 语言在引擎级别的执行过程 立即下载
JavaScript 语言在引擎级别的执行过程 立即下载
动态、高效,蚂蚁动态卡片的内核逻辑 立即下载