当前位置: 首页 > news >正文

专利研读-SIMD系列-向量化引擎

专利研读-SIMD系列-向量化引擎

1、专利内容

阿里巴巴的专利:向量化处理数据的方法及装置,主要思想为:对于行存表或行、列存混合存储的查询场景,需要手工将行存表转换成列存表再在列存表基础上进行向量化处理,这种方式代价较高。阿里提供了一种方法从查询计划树中识别出数据不支持向量化操作的子树节点,将数据转换成支持向量化操作的数据。理解其实就是在不支持向量化的算子上再挂一个转换算子,将行存数据转换成向量化执行需要的列存形式。openGauss就是这么干的,针对行存的算子,在其上再挂个RowToVec即行转向量的算子,以支持整个执行计划树执行时能够向量化执行。当然,若输出需要行的形式,那再挂一个VecToRow的算子,即将向量再转成行。

StarRocks的专利:一种基于向量化执行引擎的数据库表达式,主要思想:传统数据库大多是火山模型,火山模型的算子和表达式都是按行执行。和传统数据库相比,向量化执行引擎具有更少的虚函数调用,更少的分支判断,CPU缓存更友好,易于SIMD指令优化等优点。针对表达式向计算向量化执行,提出了一种表达式计算的复用方法,当然主要创新点还是表达式复用的思想。比如一个SQL语句:SELECT a+b,a+d,a+b+c,a+b+c+d FROM table;提供一种方式找出4个表达式计算中的公用表达式部分,这里的公用表达式:a+b,a+b+c。将a+b作为一个逻辑投影,命名为tmp1,然后将tmp1带入a+b+c表达式中,即tmp1+c;接着将a+b+c作为一个逻辑投影,当作tmp2,并将tmp2带入a+b+c+d。最后表达式:tmp1,a+d,tmp1+c,tmp2+d。也就是减少表达式的冗余计算。

东方国信的专利:向量化数据库的查询方法及装置:对于数据库中存在NULL值和溢出,现有CPU利用分支判断对数据进行处理,一旦分支判断错误会产生时钟周期的损害,而且存在分支判断的循环导致处理NULL值和溢出的效率低下。比如判断NULL并进行相加的流程:

For i=0 to N{if(!(c1_isNull[i] & c2_isNull(i)))result[i] = C1[i]+C2[i];
}

其中,N为数据总行数,c1和c2为数据库中的两列数据,c1_isNull和c2_isNull分别为对应c1和c2的空标识,result为查询结果。在循环内,对于每一行都要先执行一个if判断,通过c1_isNull和c2_isNull的按位与运算,在其运算结果不满足c1和c2其中至少存在一个NULL的情况下,使c1和c2执行加法运算。直至循环结束,处理的行数为N,却执行了2N次操作,其中有N次在执行if的分支判断,另外N次根据分支判断结果执行对应的操作。

创新点:流程如下,去掉了分支判断

For i=0 to N{result_isNull[i] = c1_isNull[i] & c2_isNull[i];tmp_c1[i]=result_isNull[i]&c1[i];tmp_c2[i]=result_isNull[i]&c2[i];result[i]=tmp_c1[i]+tmp_c2[i];
}

其中,N为数据总行数,c1和c2为数据库中的两列数据,tmp_c1和tmp_c2分别为对应c1和c2的空值处理结果,c1_isNull、c2_isNull和result_isNull分别为对应c1、c2和result的空标识,result为查询结果。在循环内,对于每一行,先通过c1_isNull和c2_isNull的按位与运算获取result_isNull,用于指示result是否为空。其中,c1_isNull、c2_isNull和result_isNull对应的标识规则为,若对应的数据为空,则全为0;若对应的数据不为空,则全为1。直至循环结束,处理的行数为N,对应执行了N次操作,相较于传统的查询流程操作次数降低一半。

再将上述思想扩展到SIMD向量化中。For循环一次处理一批数据。其实主要思想还是去掉分支判断。

2、参考

https://www.modb.pro/doc/55436

https://www.modb.pro/doc/49941

https://www.modb.pro/doc/50225

相关文章:

专利研读-SIMD系列-向量化引擎

专利研读-SIMD系列-向量化引擎 1、专利内容 阿里巴巴的专利:向量化处理数据的方法及装置,主要思想为:对于行存表或行、列存混合存储的查询场景,需要手工将行存表转换成列存表再在列存表基础上进行向量化处理,这种方式代…...

C#--设计模式之单例模式

单例模式大概是所有设计模式中最简单的一种,如果在面试时被问及熟悉哪些设计模式,你可能第一个答的就是单例模式。 单例模式的实现分为两种: 饿汉式:在静态构造函数执行时就立即实例化。懒汉式:在程序执行过程中第一…...

RWEQ风蚀方程模型与ArcGIS数据处理Python代码库添加结合理论研究和科研实践

RWEQ模型是应用比较普遍的能适应大区域定量估算风蚀量的模型。该模型是基于大量野外实验的一种经验模型,在实际测定风力导致的土壤侵蚀量以及当地的气象、地表植被、土壤湿度、地表的结皮和地表的可蚀性等因子的基础上得出的一个经验方程。 1、掌握土壤风蚀模型的原…...

基于STM32微控制器的物联网(IoT)节点设计与实现

基于STM32微控制器的物联网(IoT)节点的设计和实现。我们讨论物联网节点的基本概念和功能,并详细介绍了STM32微控制器的特点和优势。然后,我们将探讨如何使用STM32开发环境和相关的硬件模块来设计和实现一个完整的物联网节点。最后,我们将提供一个示例代码,展示如何在STM3…...

篇二十一:中介者模式:解耦对象之间的交互

篇二十一:"中介者模式:解耦对象之间的交互" 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 另外有2本不错的关于设计模式…...

tomcat的多实例,动静分离(web服务基础结束)

多实例 多实例就是在一台服务器上有多个tomcat的服务(核心是改端口) 实验:多实例 安装步骤 1.安装好 jdk 2.安装 tomcat cd /opt tar zxvf apache-tomcat-9.0.16.tar.gz mkdir /usr/local/tomcat mv apache-tomcat-9.0.16 /usr/local/tomca…...

LeetCode150道面试经典题--判断子序列(简单)

1.题目 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序…...

kubeadml 安装 k8s

目录 一:kubeadml 安装 k8s 1、网络环境 2、 环境准备 3、 所有节点安装docker 4、所有节点安装kubeadm,kubelet和kubectl ​5、部署K8S集群 6、测试 二: 部署 Dashboard 一:kubeadml 安装 k8s 1、网络环境 master&am…...

考研C语言进阶题库——更新16-20题

目录 16计算t11/2...1/n-11/n 17计算1997! 18计算t1-122-133-...-1nn 19相传国际象棋是古印度舍罕王的宰相达依尔发明的.舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐. 这位聪明的宰相指着8*8共64格的象棋说:陛下,请您赏给我一些麦子吧. 就在棋盘的第1格放1粒…...

【变形金刚01】attention和transformer所有信息

图1.来源:Arseny Togulev在Unsplash上的照片 一、说明 这是一篇 长文 ,几乎讨论了人们需要了解的有关注意力机制的所有信息,包括自我注意、查询、键、值、多头注意力、屏蔽多头注意力和转换器,包括有关 BERT 和 GPT 的一些细节。因…...

面试热题(路径总和II)

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 在这里给大家提供两种方法进行思考,第一种方法是递归,第二种方式使用回溯的方式进行爆…...

测试 tensorflow 1.x 的一个demo 01

tensorflow 1.0的示例代码 demo_01.py import tensorflow as tf import os os.environ[TF_CPP_MIN_LOG_LEVEL]2def tf114_demo():a 3b 4c a bprint("a b in py ",c)a_t tf.constant(3)b_t tf.constant(4)c_t a_t b_tprint("TensorFlow add a_t b_t &…...

达蒙DM数据库使用经验

DM表/字段注释 注:dm数据库无法在建表的同时为字段名添加注释 //为表添加注释 comment on table 库名.表名 is 表注释; //为表字段添加注释 comment on column 库名.表名.列名 is 列注释;DM查询错误:无效的表或视图 1,确认表一定存在 2&am…...

Redis—集群

目录标题 主从复制第一次同步命令传播分担主服务器压力增量复制总结面试题什么是Redis主从复制Redis主从复制的原理Redis主从复制的优点Redis主从复制的缺点Redis主从复制的配置步骤Redis主从复制的同步策略主从节点是长还是短连接判断某个节点是否正常工作主从复制架构中&…...

【C语言】数据在内存中的存储详解

文章目录 一、什么是数据类型二、类型的基本归类三、 整型在内存中的存储1.原码、反码、补码2.大小端(1)什么是大小端(2)为什么会有大小端 四、浮点型在内存中的存储1. 浮点数存储规则 五、练习1.2.3.4.5.6.7. 一、什么是数据类型 我们可以把数据类型想象为一个矩形盒子&#x…...

PIC单片机配置字的设置

PIC单片机配置字的设置 PIC系列单片机,其芯片内部大都设置有一个特殊的程序存储单元,地址根据不同的单片机而定,此存储单元用来由单片机用户自由配置或定义单片机内部的一些功能电路单元的性能选项,所以被称之为系统配置字。目前PIC单片机系统配置字的方法有两种,一种是利…...

JavaWeb-Servlet服务连接器(一)

目录 1.Servlet生命周期 2.Servlet的配置 3.Servlet的常用方法 4.Servlet体系结构 5.HTTP请求报文 6.HTTP响应报文 1.Servlet生命周期 Servlet(Server Applet)是Java Servlet的简称。其主要的功能是交互式地浏览和修改数据,生成一些动态…...

新华三超融合态势感知标准版

产品概述: H3C SecCenter CSAP-XS 超融合态势感知一体机产品集合了态势感知和安全流量分析探针设备能无需复杂配置;态势感知平台具备强大的安全分析和可视化呈现功能;同时具备远程专家会诊功能,通过云端协同实现外部安全服务资源的…...

AutoSAR系列讲解(深入篇)13.2-Mcal Port配置

目录 一、配置界面 二、通用配置 1、ConfigVariant 2、PortSafety 3、PortGeneral 三、Port配置集合...

Java旋转数组中的最小数字(图文详解版)

目录 1.题目描述 2.题解 分析 具体实现 方法一(遍历): 方法二(排序): 方法三(二分查找): 1.题目描述 有一个长度为 n 的非降序数组,比如[1,2,3,4,5]&a…...

跟进一下目前最新的大数据技术

搭建最新平台 40C64G服务器,搭建3节点kvm,8C12G。 apache-hive-4.0.1-bin apache-tez-0.10.4-bin flink-1.20.1 hadoop-3.4.1 hbase-2.6.2 jdk-11.0.276 jdk8u452-b09 jdk8终于可以不用了 spark-3.5.5-bin-hadoop3 zookeeper-3.9.3 trino…...

vue3-andsign 中实现实物电商列表的页面

这里自己做一个代码整理 做了一个实物电商 选品中心的页面 看里面有些效果挺好 这里记录一下 直接粘贴代码了 我自己能看懂 做了一个列表显示 骨架屏等 效果 使用了grid 布局 比媒体查询好使 <script setup lang"ts"> import { ref, onMounted, watch } fro…...

MySQL从入门到DBA深度学习指南

目录 引言 MySQL基础入门 数据库基础概念 MySQL安装与配置 SQL语言进阶 数据库设计与规范化 数据库设计原则 表结构设计 MySQL核心管理 用户权限管理 备份与恢复 性能优化基础 高级管理与高可用 高可用与集群 故障诊断与监控 安全与审计 DBA实战与运维 性能调…...

Orthanc:轻量级PACS服务器与DICOMweb支持的技术详解

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...

Kafka 快速上手:安装部署与 HelloWorld 实践(二)

四、Kafka 的 HelloWorld 实践 完成 Kafka 的安装部署后&#xff0c;我们就可以进行一些简单的操作来体验 Kafka 的功能了。下面通过一个 HelloWorld 示例&#xff0c;展示如何在 Kafka 中创建主题、发送消息和消费消息。 &#xff08;一&#xff09;创建主题&#xff08;Top…...

【生活】程序员防猝si指南

note 一、定期体检二、均衡饮食&#xff0c;多食用对心脏有保护作用的食物三、每周运动四、减压五、保证睡眠六、戒烟限酒7、控制血压8、警惕流感攻击心脏9、关注牙齿健康10、不要抵触吃药 文章目录 note一、定期体检二、均衡饮食&#xff0c;多食用对心脏有保护作用的食物三、…...

agent基础概念

agent是什么 我个人认为agent并没有一个所谓完美的定义,它是一个比较活的概念,就像是你眼中的一个机器人你希望它做什么事,和我眼中的机器人它解决事情的流程,其实是可以完全不同的,没有必要非得搞一个统一的概念或流程来概况它。但我们依然可以概况几个通用的词来描述它…...

【C/C++】EBO空基类优化介绍

空对象优化&#xff08;Empty Base Optimization&#xff0c;简称 EBO&#xff09;是 C 编译器的一种 优化技术&#xff0c;用于消除空类作为基类时占用的内存空间&#xff0c;从而避免浪费空间、提升结构体或类的存储效率。 1 什么是“空对象”&#xff1f; 一个**空类&#…...

多标签多分类 用什么函数激活

在多标签多分类任务中&#xff0c;激活函数的选择需要根据任务特性和输出层的设计来决定。以下是常见的激活函数及其适用场景&#xff1a; 一、多标签分类任务的特点 每个样本可以属于多个类别&#xff08;标签之间非互斥&#xff0c;例如一篇文章可能同时属于 “科技” 和 “…...

深入浅出Spring Security

一、Spring Security基本组件 Spring Security的设计理念是提供一种可插拔的、高度可定制的安全服务。其核心功能依赖于以下几个关键组件&#xff1a; Authentication (认证): 概念: 确认用户身份的过程&#xff0c;即验证“你是谁”。核心类: Authentication 接口&#xff0c…...