首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏奇点大数据

    话说量化4

    货币——也就是我们俗称的“钱”是世界上最可爱的东西之一,可以说没有它的刺激,也就没有我们现在这么繁荣的市场,也没有这么丰富的各类物质产品和幸福生活。

    71320发布于 2018-09-14
  • 来自专栏腾讯云数据库(TencentDB)

    查询执行效率低下?向量化执行来帮你

    以查询计划执行为例。 CPU的SIMD指令进行优化,从而造成查询执行效率低下的问题。 向量化执行就是解决上述问题的一种有效手段。 作为国内领先的数据库厂商,腾讯云数据库一直致力于推动国产数据库学术人才培养和技术创新生态建设发展。 在本期DB · 洞见直播中,我们邀请到了腾讯云数据库高级工程师胡翔,来为大家介绍向量化执行的最新技术创新、基本原理以及向量化引擎的相关实现。 专家介绍 胡翔 腾讯云数据库高级工程师 博士毕业于中国科学院软件研究所,加入华为高斯实验室工作多年,加入腾讯后主要负责TDSQL PG版数据库向量化执行引擎等相关特性的设计开发工作。

    68620编辑于 2022-07-19
  • 来自专栏利志分享

    浅析Clickhouse的向量化执行

    量化执行就是这种方式的典型代表,这项寄存器硬件层面的特性,为上层应用程序的性能带来了指数级的提升。 向量化执行,可以简单地看作一项消除程序中循环的优化。这里用一个形象的例子比喻。 为了制作n杯果汁,非向量化执行的方式是用1台榨汁机重复循环制作n次,而向量化执行的方式是用n台榨汁机只执行1次。 为了实现向量化执行,需要利用CPU的SIMD指令。 ClickHouse的向量化执行机制主要依赖于SSE指令集,下面简要介绍之。 SSE指令集 SSE指令集是MMX的继任者,其第一版早在Pentium III时代就被引入了。 随着新指令的扩充,又有了SSE2、SSE3、SSSE3、SSE4(包含4.1和4.2)等新版本。 一个XMM寄存器原本只能存储一种数据类型: 4个32位单精度浮点数 SSE2又扩展到能够存储以下类型: 2个64位双精度浮点数 2个64位/4个32位/8个16位整数 16个字节或字符 SSE的指令分为两大类

    94320编辑于 2022-04-25
  • 来自专栏大数据&分布式

    Spark Gluten 向量化执行框架

    背景 向量化执行模型已在现代数据库引擎被广泛应用,例如ClickHouse、TiDB、StarRocks等。 Photon向量化执行引擎取代了已有的Spark执行模式(JVM & Codegen)。 Gluten实现向量化计算的主要变更如下所示,在QueryExecution执行前优化过程中,通过注入规则对物理计划进行扩展处理,转为Gluten物理计划,使用向量化执行模式替换已有的JVM + CodeGen 在Task执行阶段,基于Gluten RDD,通过JNI调用Native引擎(默认Velox)实现向量化执行。 向量化执行引擎框架 Gluten 宣布正式开源,并亮相 Spark 技术峰会

    1.5K54编辑于 2025-01-21
  • 来自专栏量子化学

    利用MOKIT从PySCF其他量化程序传轨道

    近期笔者和另一开发者wsr在MOKIT程序中加入了fchk(),py2molpro,py2molcas,py2qchem等模块,可用于从PySCF程序其他量子化学程序传递分子轨道。 (为什么不用Gaussian算完了传轨道给其他程序:因为Gaussian是商业收费程序,有的课题组/机构没买) (3)自己基于PySCF开发新方法,无现有程序对应,但希望正确地传轨道至下一个量化程序进行后续计算 4. 注意到这个模块的名称与上述其他模块不同,这是因为PSI4程序里有个叫fchk()的模块能够在计算完后导出fch文件,因此我们沿用了这个模块名称,希望用过PSI4的人都能对这个名称感到熟悉。 注意Windows预编译版不支持本文功能,内含的是Gaussian与其他量化程序传轨道的小程序。

    1.9K20编辑于 2022-12-07
  • 来自专栏量子化学

    利用MOKIT从ORCA其他量化程序传轨道

    本文介绍如何使用MOKIT从ORCA其他量化程序传轨道,有以下可能的用途: (1)在ORCA中进行了RIJK或RIJCOSX加速的大体系HF/DFT计算,想传轨道给其他程序进行后续计算,或想产生fch (4)有些复杂体系可能ORCA可以收敛出特殊的SCF解,而目标程序难以得到,可以传轨道给目标程序。 4. ORCA传轨道给Dalton mkl2dal h2o.mkl 会产生h2o.dal和h2o.mol两个文件。 5. ORCA传轨道给PSI4 mkl2psi h2o.mkl 会产生h2o.A和h2o.inp文件。前者含Alpha轨道,后者含坐标,基组和关键词。 获得含赝势的fch文件和ORCA相关文件 执行 fch2mkl ZnMe2.chk 随即产生ZnMe2.fch,ZnMe2_o.inp和ZnMe2_o.mkl文件,现在我们就有了一个含赝势信息的fch

    1.6K20编辑于 2023-09-03
  • 来自专栏PostgreSQL研究与原理解析

    聊聊StarRocks向量化执行引擎-过滤操作

    聊聊StarRocks向量化执行引擎-过滤操作 StarRocks是开源的新一代极速MPP数据库,采用全面向量化技术,充分利用CPU单核资源,将单核执行性能做到极致。 本文,我们聊聊过滤操作是如何利用SIMD指令进行向量化操作。 过滤操作的SIMD向量化函数是filter_range,我们以binary类型的列为例: BinaryColumnBase<T>::filter_range 执行过程如下图所示: 1、通过1 2、AVX2指令集环境下:通过_mm256_loadu_si256封装的指令函数加载256位长度值到寄存器,也就是32字节值f 3、_mm256_setzero_si256生成256位的0值all0 44)将满足条件的值拷贝到结果集 memmove(data + _offsets[result_offset], data + _offsets[start_offset + i], size) 5)返回

    1.6K40编辑于 2023-05-25
  • 来自专栏PostgreSQL研究与原理解析

    openGauss-向量化执行引擎-VecUnique算子

    openGauss-向量化执行引擎系列-VecUnique算子 openGauss实现了向量化执行引擎,达到算子级别的并行。也就是说在执行器火山模型基础上,一次处理一批数据,而不是一次一个元组。 前期我们介绍了PgSQL Unique算子的实现机制,本文接着介绍openGauss是如何实现Unique算子向量化的。 简单来说,openGauss的VecUnique算子更多的是为了实现执行器整体性的向量化,减少算子之间因为向量化和非向量化算子之间的兼容而进行的VecToRow和RowToVec算子进行的行与向量之间的转换而完成的 2+1024,存储GUCell结构,即唯一值及其NULL标签 3)cap:即Encap结构,封装VectorBatch、cols和colIdx,减少传递参数个数 4)idx:container[]数组中存储的唯一值个数 第一行取出,作为唯一值存储到container[i],i=0; 3)后续的值和container[i]进行比较,若相等,则继续batch下一条进行比较,否则作为唯一值存入container[++i] 4

    60840编辑于 2023-11-05
  • 来自专栏PostgreSQL研究与原理解析

    聊聊ClickHouse向量化执行引擎-过滤操作

    4、上面代码耗时因素在于循环次数非常多,等于data数组的大小 5、如果可以降低循环次数,同时保证单次循环耗时变化不大,总体执行效率更高。 0xffff000000000000); #elif defined(__aarch64__) && defined(__ARM_NEON) const uint8x16_t bitmask = {0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80}; const auto * src = reinterpret_cast 另外一种操作方式:doFilterAligned即:模板函数 主要是通过_mm512_mask_compressstoreu_epi8类似函数分别对1、2、4、8字节长度类型针对掩码进行数据拷贝,这里不再赘述

    1.5K50编辑于 2023-05-25
  • 来自专栏PostgreSQL研究与原理解析

    聊聊Doris向量化执行引擎-过滤操作

    聊聊Doris向量化执行引擎-过滤操作 Doris是开源的新一代极速MPP数据库,和StarRocks同源,采用全面向量化技术,充分利用CPU单核资源,将单核执行性能做到极致。 本文,我们聊聊过滤操作是如何利用SIMD指令进行向量化操作。 执行过程如下图所示: 1、通过1个字节bool类型的ret_flags数组来表示是否满足过滤条件,1表示满足条件,0表示不满足 2、AVX2指令集环境下:通过_mm256_loadu_si256封装的指令函数加载 256位长度值到寄存器,也就是32字节值f 3、_mm256_setzero_si256生成256位的0值all0 4、_mm256_cmpgt_epi8函数将f和all0每个字节进行并行比较,也就是32 个字节并行比较,f中字节>all0中字节值时,对应结果位为1,否则为0 5、将第4步的值通过_mm256_movemask_epi8转换成int整数mask。

    1.3K40编辑于 2023-05-25
  • 来自专栏漫谈测试

    如何量化战略成效的执行情况

    量化战略成效的执行,就是将测试团队的日常工作与公司/部门的宏观战略(如加快上市时间、提升客户满意度、降低运营成本、增强品牌声誉)联系起来,并用数据来证明这种联系的强度和效果。 量化,就是从测试战略中分解出可衡量的关键结果。 成本维度(彰显管理的精细化)将质量成本(Cost of Quality)量化管理层展示投资回报。 外部失败成本(External): 线上故障导致的退款、客服压力、修复热补丁的紧急成本、品牌声誉损失(可尝试量化)。战略目标就是通过增加预防和评估成本,来显著降低尤其是外部失败成本。4. 作为测试管理者,量化战略成效的本质是搭建一座桥梁,将技术性的测试活动转化为商业语言,组织证明:我们在正确地做事(效率): 通过效能指标体现。

    34410编辑于 2025-09-12
  • 来自专栏Spark学习技巧

    一文了解 ClickHouse 的向量化执行

    它实现了单机多核并行、分布式计算、向量化执行与SIMD指令、代码生成等多种重要技术。 向量化执行与SIMD ClickHouse不仅将数据按列存储,而且按列进行计算。传统OLTP数据库通常采用按行计算,原因是事务处理中以点查为主,SQL计算量小,实现这些技术的收益不够明显。 向量执行引擎,通常能够带来数倍的性能提升。 What IS SIMD ? movaps xmm1, [b]; addps xmm0, xmm1; } 简要说明其中一种操作: addps XMM,XMM/m128 源存储器内容按双字对齐,共4个单精度浮点数与目的寄存器相加 $ grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" 如果你的机器支持SSE4.2

    7.2K31发布于 2021-07-02
  • 来自专栏PostgreSQL研究与原理解析

    openGauss-向量化执行引擎-索引扫描CStoreIndexScan

    openGauss-向量化执行引擎-索引扫描CStoreIndexScan openGauss实现了向量化执行引擎,达到算子级别的并行。 也就是说在执行器火山模型基础上,一次处理一批数据,而不是一次一个元组。这样可以充分利用SIMD指令进行优化,达到指令级别并行。 主要保存这个 page 左右方向指针、page所在 BTree 层级、以及当前页面的状态(叶子节点/内部节点/根节点/删除页面......) 4)通过索引查询时,先通过meta页定位到root页,然后通过 2、向量化索引扫描算子 openGauss通过CStoreIndexScan算子进行向量化索引扫描。 向量化索引扫描的优势:兼容向量化引擎其他算子,以达到全算子向量化,减少VecToRow和RowToVec的互相转换;同时减少底层算子函数的调用;因为增加了排序,可如同bitmap扫描一样减少heap页的随机访问

    76830编辑于 2023-11-05
  • 来自专栏GiantPandaCV

    INT4量化用于目标检测

    Int 4量化用于目标检测 【GiantPandaCV】文章2019 CVPR,讲的是Int 4量化用于目标检测,主要是工程化的一些trick。 感受:这篇文章主要是做了实践工作,可以看作是低bit量化(Int 4)用于目标检测的一些trick。 的Int算法即Int-4量化神经网络的过程:1、全精度训练 2、quantization-aware finetune(只在前传播) 3、fully-quantized inference,这里要fold BN,激活函数和模型参数都要量化到低 Int4量化与全精度对比 ? 消融实验 ? FreezeBN与不同bit的对比 ? 截断激活函数阈值的百分比 ? 与其他量化方法的对比图

    1.3K20发布于 2021-03-24
  • 来自专栏AI机器学习与深度学习算法

    机器学习入门 5-4量化

    本小节主要介绍使用向量化的方式提升性能。 简单线性回归 先来回归一下简单线性回归优化目标以及通过最小二乘的方式求得的参数a,b的解析解。 ? 在上一个小节中,我们是通过循环的方式来求解分子和分母,前面也说过,使用for循环的这种方式,性能相对是比较低的,如果有办法将for循环的计算变成向量之间的计算的话,得益于numpy模块性能就会大大的提升,这就是向量化运算含义 上面我们将对应元素相乘然后相加的操作看成是向量之间的点乘,这也是为什么在最小二乘求解a的解析解的时候要把式子写成相乘累加的形式,这样就可以将其转换成向量之间的运算,进行向量化运算提升性能。 使用向量化运算实现线性回归算法 前面使用sklearn的思想封装了一个名为"SimpleLinearRegression1"的类,在类中使用for循环的方式来求解参数a的值。 ? ? ? ? 实现向量化的代码只需将for循环部分改成向量点乘即可: ? ? ? ? 为了比较两者的性能,将两种方式导入jupyter中,通过魔法命令来验证性能。 ? ? ? ?

    89420发布于 2019-11-13
  • 来自专栏PostgreSQL研究与原理解析

    openGauss - 向量化执行引擎 - distinct分组聚合的实现

    openGauss - 向量化执行引擎 - distinct分组聚合的实现 openGauss向量化执行引擎中分组聚合有两种实现方式:排序和hash。 其中普通group by就是每次查询生成一个分组的聚合;而grouping sets、cube或者rollup分组集就是每次查询生成不同级别或者多个维度的聚合,详见: 下面我们看下openGauss向量化执行引擎中对这些分组聚合如何实现 它的聚合走另外分支: 2、原理 1)通过CStoreScan算子从磁盘上加载一批数据到内存,并通过VecSort向量化算子进行排序 2)从排好序的数据中(要么都在内存,要么溢出到磁盘)拿一批数据batch 进行聚合操作 3)先将batch存储到m_batchSortIn中用于后续阶段的聚合:因为后续阶段也需要在有序的基础上进行分组聚合,所以m_batchSortIn用于后续阶段的排序 4)计算当前阶段的分组值 组号为curr_set 8)当前阶段计算完后,切换阶段进入下一个阶段聚合计算 9)下一个阶段计算前,需要先对m_batchSortIn排序,然后进行4)、5)、6)7)操作,直到所有阶段的聚合都计算完。

    62610编辑于 2024-05-06
  • 来自专栏漏洞复现

    锐捷 EWEB auth 远程命令执行漏洞RCE(批量化

    checkNet","params":{"host":"`echo c149136B>666666.txt`"}}3、访问 http://XXXXXXXXXXXX:XXXX/cgi-bin/666666.txt4、 name: auth接口存在RCE漏洞 author: someone severity: critical description: auth接口存在RCE漏洞,恶意攻击者可能会利用该漏洞执行恶意命令

    3.4K10编辑于 2024-03-10
  • 来自专栏luozhiyun的技术学习

    4.深入TiDB:执行计划执行过程详解

    ,这篇我们继续往下看,在获取到执行优化结果之后如何执行整个计划。 接下来会调用 buildResp 构建 kv.Request,然后调用 SelectResult kv client 发送请求返回 SelectResult 结构体: func (e *TableReaderExecutor memTracker: kvReq.MemTracker, encodeType: encodetype, storeType: kvReq.StoreType, }, nil } 它提供了 需要注意的是在调用 open 执行 task 之前会校验 task 是不是有序的,如果是有序的,那么 worker 执行完 task 之后就不能直接放入到 response channel 中了,因为并发结果是无序的 Reference https://blog.minifish.org/posts/tidb4/ https://zhuanlan.zhihu.com/p/337939383 https://pingcap.com

    1.1K21发布于 2021-09-25
  • 来自专栏雪胖纸的玩蛇日常

    4.定义并执行方法

    1.定义并执行方法 <template>

    <! -- 执行自定义方法 --> <button v-on:click=run1()>执行方法的第一种写法</button> <button v-on:click=run2()>执行方法的第二种写法

    39420发布于 2019-09-27
  • 来自专栏又见苍岚

    Hexo -4- 文章添加图片的方法

    将_config.yml文件中的配置项post_asset_folder设为true后,执行命令$ hexo new post_name,在source/_posts中会生成文章post_name.md

    2.6K40编辑于 2022-08-04
领券