CN116028011B - 一种用于gpu数据库任意精度十进制数据的计算方法 - Google Patents
一种用于gpu数据库任意精度十进制数据的计算方法 Download PDFInfo
- Publication number
- CN116028011B CN116028011B CN202310322749.7A CN202310322749A CN116028011B CN 116028011 B CN116028011 B CN 116028011B CN 202310322749 A CN202310322749 A CN 202310322749A CN 116028011 B CN116028011 B CN 116028011B
- Authority
- CN
- China
- Prior art keywords
- decimal
- precision
- gpu
- database
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于数据库计算领域,公开了一种用于GPU数据库任意精度十进制数据的计算方法,包括以下内容:GPU数据库中任意精度十进制数据的表示和存储;GPU数据库中任意精度十进制数据间的加法、减法、乘法、除法和模运算,既可以选择多线程协同的计算模式,也可以选择单线程计算模式;GPU数据库中任意精度十进制数据运算的代码生成模板;GPU数据库中任意精度十进制数据运算中的对齐优化;GPU数据库中任意精度十进制数据运算中的常量优化;GPU数据库中利用多线程协同的方法完成十进制数据列的聚合操作。其优点在于,解决了十进制表达式计算过程中对齐操作和常量计算对表达式计算性能的影响,提高了计算并行性,提升了计算性能。
Description
技术领域
本发明属于数据库计算领域,特别涉及一种用于GPU数据库任意精度十进制数据的计算方法。
背景技术
在科学数据库、金融数据处理以及几何数据处理等领域中,需要具备任意精度运算能力的数据库越来越成为它们的需求。同时,GPU数据库作为当前数据库领域的主要分支,其通过依靠GPU强大的计算能力和并行性能够快速处理数据库中的查询请求,提升执行效率。在数据库中,即时编译技术通过以数据为中心的代码生成具有更少指令和更好缓存驻留性的代码来优化查询。
当前数据库中的十进制数据运算或为高性能的低精度运算或为低性能的任意精度计算。为了解决GPU数据库中的任意精度的高性能计算问题,本发明设计一系列的优化策略并结合即时编译技术提升GPU数据库中任意精度的十进制数据类型的计算性能。
发明内容
为了解决GPU数据库具有任意精度的高性能计算问题,本发明提出了一种用于GPU数据库任意精度十进制数据的计算方法。
为达到上述目的,本发明的技术方案如下:
一种用于GPU数据库任意精度十进制数据的计算方法,包括以下内容:
1)GPU数据库中任意精度十进制数据的表示和存储;
(2)GPU数据库中任意精度十进制数据间的加法、减法、乘法、除法和模运算,既可以选择多线程协同的计算模式,也可以选择单线程计算模式;
(3)GPU数据库中任意精度十进制数据运算的代码生成模板;
(4)GPU数据库中任意精度十进制数据运算中的对齐优化;
(5)GPU数据库中任意精度十进制数据运算中的常量优化;
(6)GPU数据库中利用多线程协同的方法完成十进制数据列的聚合操作。
优选的,实现GPU数据库中任意精度十进制数据的表示和存储方法如下:
(1.1)GPU数据库中任意精度十进制数据的表示包括属性部分和数值部分,定义形式为,属性部分包括符号信息/>,精度信息和运算中的报告信息;其中符号信息/>表示数字为正数还是负数,精度信息包括/>信息和/>信息,分别标记为和/>,/>表示数字去除小数点的十进制位数,/>表示数字小数点后的十进制位数;运算中的报告信息存储常见的除0错误;
(1.2)计算过程中,Decimal存储在寄存器中,将的数值部分/>存储在了一个以32-bits为单位的数组中,符号信息/>和精度信息部分单独存放在其他字节中;对于精度信息中/>的Decimal,计算其所需最短的数组长度,数组长度/>的计算方式为:
优选的,单线程计算模式下,实现GPU数据库中任意精度十进制数据间的加法、减法、乘法、除法、模运算的方法如下:
之后根据两个数字的符号信息决定对两个数字的数值部分进行相加或相减操作,如果数值部分相减则需要对两个数的数值部分进行比较从而确定结果的符号;
(2.2)对于Decimal数据类型间的乘法,则是将两个数字的数值部分进行相乘,遍历第一个因数的数值部分的数组和另一个因数的数值部分的数组/>,将数组/>的第/>个元素和数组/>的第/>个元素相乘得到结果/>,其中/>的低32-bits被累加到积的数值部分的数组/>的第/>个元素中,/>的高32-bits被累加到数组/>的第/>个元素中,积的符号由两个因数的符号进行异或操作得到;
(2.4)取模运算只针对于Decimal整数之间进行运算,根据两个数字的数值部分的最高比特位确定商的范围后,利用二分查找的方式找到精确的商,最后利用被除数减去商乘以除数得到的余数即为所求;
优选的,利用多线程协同的计算模式,实现GPU数据库中任意精度十进制数据间的加法、减法、乘法、除法和模运算,方法如下:
(3.2)通过使用CUDA Warp-Level 级原语完成线程间的进/借位以及共享值和交换值操作;
(3.3)计算结束后每个线程保留结果 Decimal 数字的部分数值信息和全部属性信息。
优选的,实现GPU数据库中任意精度十进制数据运算中的对齐优化,方法如下:
(4.1)将二叉树中减法节点转换为加法节点;层序遍历表达式二叉树,如果当前节点为减法且没有取反标志,那么当前节点变为加法节点其右孩子设置取反标志;若当前节点为除减法外的其他操作符节点且没有取反标志则无需改动;如果当前节点为加法,且具有取反标志则其孩子节点都设置取反标志;若当前节点为减法节点且具有取反标志,那么当前节点变为加法节点其左孩子节点设置取反标志;若当前节点为加法和减法以外的其他操作符节点且有取反标志,则对其左孩子节点设置取反标志;
(4.2)将修改后的表达式二叉树转变为表达式多叉树;若当前节点为加法节点或乘法节点,递归遍历其左右孩子节点,如果孩子节点的类型与当前节点的类型相同,则将孩子节点的子节点与当前节点直接相连;
优选的,实现GPU数据库中任意精度十进制数据运算中的常量优化,方法如下:
(5.1)利用(4.2)获取到表达式多叉树后,遍历表达式多叉树,如果当前节点的孩子节点中存在多个常量,可提前对多个常量进行计算获取最终常量;
(5.2)最终常量的结果若为特殊值,根据操作符节点的类型进行剪枝优化;若为当前为加法节点且最终常量为非特殊值,则按照当前节点的孩子节点中与常量的精度相同或稍大的精度进行构造,并放在相应位置。
优选的,实现GPU数据库中任意精度十进制数据运算的代码生成模板的方法如下:
(6.1)计算表达式的精度信息,进而确定计算中每个线程需要的数值部分的长度;利用表达式二叉树和节点所涉及的列信息,结合(2.5)中的公式自下而上的计算从而获得结果的精度信息;根据结果的精度信息利用(1.2)求出计算过程中所需数值部分最小的数组的长度;
(6.3)生成表达式计算的代码;前序遍历表达式二叉树,将表达式二叉树转换为中缀表达式,将其转化为CUDA C代码,表达式的计算模式根据系统的前期设置选择多线程协同/非多线程协同的计算模式;
(6.4)根据结果精度利用(1.2)求出结果以字节为单位存储的最小长度,生成数值部分数组长度为/>的Decimal类型数据的表示转换为以字节为单位存储的Decimal存储的代码。同样根据系统前期设置的多线程协同/非多线程协同的计算模式生成相应的转换代码。
优选的,实现GPU数据库中利用多线程协同的方法完成十进制数据列的聚合操作方法如下:
(7.2)对于个大小为/>个数组长度的Decimal类型数字,每个线程块处理的数字的数量为/>,每/>个线程处理的数字的数量为/>,在线程块中数字首先被快速读取到共享内存中,然后进行聚合,根据不同型号的GPU信息,一个线程块最大的线程数量为/>,共享内存的大小为/>,其中每个线程启动的组数/>计算为:
与现有技术相比,本申请优点如下:
(1)本发明构建了一种可以用于GPU数据库任意精度十进制数据的计算框架;
(2)本发明通过结合即时编译技术利用十进制数据类型的特点和GPU运算特点,解决了十进制表达式计算过程中对齐操作和常量计算对表达式计算性能的影响,提高了计算并行性,提升了计算性能;
(3)本发明通过GPU数据传输和高并行性的特点,实现了在完成任意精度计算的同时兼顾了高性能的需求。
附图说明
图1本申请模块图;
图2为本发明任意精度十进制数据计算表达式优化阶段的流程图;
图3为本发明任意精度十进制数据计算中代码生成阶段的流程图;
图4为本申请效果图。
具体实施方式
下面将结合本发明实施中的附图,对本发明实施中的技术方案进行清楚、完整地描述。
图1所述,一种用于GPU数据库任意精度十进制数据的计算方法,包括以下内容 :
(1)GPU数据库中任意精度十进制数据的表示和存储;
(2)GPU数据库中任意精度十进制数据间的加法、减法、乘法、除法和模运算;既可以选择多线程协同计算模式,也可以选择单线程计算模式;
(3)GPU数据库中利用多线程协同的方法完成任意精度十进制数据间的加法、减法、乘法、除法和模运算;
(4)GPU数据库中任意精度十进制数据运算中的对齐优化;
(5)GPU数据库中任意精度十进制数据运算中的常量优化;
(6)GPU数据库中任意精度十进制数据运算的代码生成模板;
(7)GPU数据库中利用多线程协同的方法完成十进制数据列的聚合操作。
GPU全称Graphics Processing Unit,为图形处理器。
为描述简单,后续描述中均采用数据库中的Decimal(十进制的)数据类型作为该方法的一种实现形式进行描述,实现内容(1)具体方法如下:
(1.1)GPU数据库中任意精度十进制数据的表示分为属性部分和数值部分,定义形式为;其属性部分包括符号信息、精度信息和运算中的报告信息。其数值部分存储数字去除小数点和正负号后的十进制数。属性部分中,符号信息/>表示数字为正数还是负数,精度信息中/>表示数字去除小数点的十进制位数,也被记作/>信息,/>表示数字小数点后的十进制位数,也被记作/>信息,(如十进制数据1.2 ,其/>等于2,/>等于1)运算中的报告信息存储常见的除0错误。数字/>的十进制表示为:
(1.2)计算过程中,Decimal存储在寄存器中,将的数值部分/>存储在了一个以 32-bits 为单位的数组中,符号和精度信息部分单独存放在其他字节中;对于精度信息中/>的Decimal,计算其所需最短的数组长度,数组长度/>的计算方式为:
单线程计算模式下,实现内容(2)具体方法如下:
之后根据两个数字的符号信息决定对两个数字的数值部分进行相加或相减操作。在数值部分的加/减法中,利用、/>(或/>、/>)处理进/借位。如果需要数值部分相减则需要对两个数的数值部分进行比较从而确定结果的符号。
(2.2)对于Decimal数据类型间的乘法,则是将两个数字的数值部分进行相乘。遍历第一个因数的数值部分的数组和另一个因数的数值部分的数组/>,将数组/>的第/>个元素和数组/>的第/>个元素相乘得到结果/>,其中/>的低32-bits被累加到积的数值部分的数组/>的第/>个元素中,/>的高32-bits被累加到数组/>的第/>个元素中。在数值部分的乘法计算中通过使用/>和/>处理进位。积的符号由两个因数的符号进行异或操作得到。
(2.3)对于 和 />类型间的除法,首先根据预先设置的精度需求,将被除数左移/>位(若想结果保留/>位小数则需要左移/>位,/>默认设置为/>)。之后利用/>指令寻找两个数字的数值部分最高比特位可以确定商的范围。最后利用二分查找的方式找到商的精确值。
(2.4)取模运算只针对于Decimal整数之间进行运算,根据两个数字的数值部分的最高比特位确定商的范围后,利用二分查找的方式找到精确的商,最后利用被除数减去商乘以除数得到的余数即为所求。
单线程计算模式下,实现内容(2)具体方法如下:
其中是在非计算过程中Decimal数字在内存或磁盘上以字节为单位进行存储的大小,/>是线程组的大小,最后的线程得到的字长度小于等于/>;此外对于符号位则需要每个线程都获取到/>个字节的最高字节的最高比特位,若为1则表示该值为负数,若为0则表示该值为正数。
(3.2)通过使用CUDA Warp-Level 级原语完成线程间的进/借位以及共享值和交换值等操作。
(3.3)计算结束后每个线程保留结果 Decimal 数字的部分数值信息和全部属性信息。
实现内容(4)具体方法如下:
(4.1)将二叉树中减法节点转换为加法节点。层序遍历表达式二叉树,如果当前节点为减法且没有取反标志,那么当前节点变为加法节点其右孩子设置取反标志。若当前节点为除减法外的其他操作符节点且没有取反标志则无需改动。如果当前节点为加法,且具有取反标志则其孩子节点都设置取反标志。若当前节点为减法节点且具有取反标志,那么当前节点变为加法节点其左孩子节点设置取反标志。若当前节点为加法和减法以外的其他操作符节点且有取反标志,则对其左孩子节点设置取反标志。
(4.2)将修改后的表达式二叉树转变为表达式多叉树。若当前节点为加法节点或乘法节点,递归遍历其左右孩子节点,如果孩子节点的类型与当前节点的类型相同,则将孩子节点的子节点与当前节点直接相连。
(4.4)将表达式多叉树转变为表达式二叉树。对于表达式多叉树的孩子节点,相邻的孩子节点重新构成一棵二叉树,最终将表达式多叉树转换为表达式二叉树。
图2所示,实现内容(5)具体方法如下:
(5.1)利用(4.2)获取到表达式多叉树后,遍历表达式多叉树,如果当前节点的孩子节点中存在多个常量,可提前对多个常量进行计算获取最终常量。
(5.2)最终常量的结果若为特殊值,如0,1等,根据操作符节点的类型进行剪枝优化。若为当前为加法节点且最终常量为非特殊值,则按照当前节点的孩子节点中与常量的精度相同或稍大的精度进行构造,并放在相应位置。
图2所示,表达式二叉树转表达式多叉树,包括(4.1)和(4.2),表达式优化包括(4.3)、(5.1)、(5.2),表达式多叉树转表达式二叉树包括(4.4)。
图3所示,实现内容(6)具体方法如下:
存储格式到表示格式的代码生成(6.1)-(6.2),内容如下,
(6.1)计算表达式的精度信息,进进而确定计算中每个线程需要的数值部分的长度。利用表达式二叉树和节点所涉及的列信息,结合(2.5)中的公式自下而上的计算从而获得结果的精度信息。根据结果的精度信息利用(1.2)求出计算过程中所需数值部分最小的数组的长度。
(6.3)表达式代码生成:生成表达式计算的代码。前序遍历表达式二叉树,将表达式二叉树转换为中缀表达式,将其转化为CUDA C代码。表达式的计算模式根据系统的前期设置选择多线程协同/非多线程协同的计算模式。
(6.4)表示格式到存储格式的代码生成:根据结果精度利用(1.2)求出结果以字节为单位存储的最小长度,生成数值部分数组长度为/>的Decimal类型数据的表示转换为以字节为单位存储的Decimal存储的代码。同样根据系统前期设置的多线程协同/非多线程协同的计算模式生成相应的转换代码。
实现内容(7)具体方法如下:
(7.2)对于个大小为/>个数组长度的Decimal类型数字。每个线程块处理的数字的数量为/>,每/>个线程作为一个线程组,每个线程组处理的数字的数量为/>。在线程块中数字首先被快速读取到共享内存中,然后进行聚合。根据不同型号的GPU信息,一个线程块最大的线程数量为/>,共享内存的大小为/>,其中每个线程启动的组数/>计算为:
Claims (6)
1.一种用于GPU数据库任意精度十进制数据的计算方法,其特征在于,包括以下内容:
(1)GPU数据库中任意精度十进制数据的表示和存储;
(2)GPU数据库中任意精度十进制数据间的加法、减法、乘法、除法和模运算,既可以选择多线程协同的计算模式,也可以选择单线程计算模式;
(3)GPU数据库中任意精度十进制数据运算的代码生成模板;
(4)GPU数据库中任意精度十进制数据运算中的对齐优化;
(4.1)将二叉树中减法节点转换为加法节点;层序遍历表达式二叉树,如果当前节点为减法且没有取反标志,那么当前节点变为加法节点其右孩子设置取反标志;若当前节点为除减法外的其他操作符节点且没有取反标志则无需改动;如果当前节点为加法,且具有取反标志则其孩子节点都设置取反标志;若当前节点为减法节点且具有取反标志,那么当前节点变为加法节点其左孩子节点设置取反标志;若当前节点为加法和减法以外的其他操作符节点且有取反标志,则对其左孩子节点设置取反标志;
(4.2)将修改后的表达式二叉树转变为表达式多叉树;若当前节点为加法节点或乘法节点,递归遍历其左右孩子节点,如果孩子节点的类型与当前节点的类型相同,则将孩子节点的子节点与当前节点直接相连;
(4.3)遍历表达式多叉树,对加法节点的孩子节点进行对齐调度;当遍历到加法节点时,将其孩子节点按照Decimal精度信息中的s从小到大的顺序进行排列;
(5)GPU数据库中任意精度十进制数据运算中的常量优化;
(5.1)利用(4.2)获取到表达式多叉树后,遍历表达式多叉树,如果当前节点的孩子节点中存在多个常量,可提前对多个常量进行计算获取最终常量;
(5.2)最终常量的结果若为特殊值,可根据操作符节点的类型进行剪枝优化;若为当前为加法节点且最终常量为非特殊值,则按照当前节点的孩子节点中与常量的精度相同或稍大的精度进行构造,并放在相应位置;
(6)GPU数据库中利用多线程协同的方法完成十进制数据列的聚合操作。
2.根据权利要求1所述的一种用于GPU数据库任意精度十进制数据的计算方法,其特征在于,实现GPU数据库中任意精度十进制数据的表示和存储方法如下:
(1.1)GPU数据库中任意精度十进制数据的表示包括属性部分和数值部分,定义形式为Decimal(p,s),
属性部分包括符号信息sign、精度信息和运算中的报告信息;其中符号信息sign表示数字为正数还是负数,精度信息包括precison信息和scale信息,分别标记为p和s,p表示数字去除小数点的十进制位数,s表示数字小数点后的十进制位数;运算中的报告信息存储常见的除0错误;
数值部分为存储数字去除小数点和正负号的十进制数;数字n的十进制表示为:
n=(-1)sign×v×10-s
其中v表示数字的数值部分;
(1.2)计算过程中,Decimal存储在寄存器中,将Decimal(p,s)的数值部分v存储在了一个以32-bits为单位的数组中,符号信息sign和精度信息部分单独存放在其他字节中;对于精度信息中p的Decimal,计算其所需最短的数组长度,数组长度Lw的计算方式为:
(1.3)在非计算过程中,Decimal以字节对齐的方式进行存储,数值部分占用字节的大小Lb的计算方式为:
每一列的精度信息都被存储在列的属性数据中,只存储一次即可;对于符号信息sign,如果Lb个字节的最高字节的最高比特无用的情况下则将符号放在最高字节的最高比特位,反之,字节数加1,将符号放在新加字节的最高位。
3.根据权利要求1所述的一种用于GPU数据库任意精度十进制数据的计算方法,其特征在于,单线程计算模式下,实现GPU数据库中任意精度十进制数据间的加法、减法、乘法、除法、模运算的方法如下:
(2.1)对于Decimal1(p1,s1)和Decimal2(p2,s2)类型间的加法或减法,首先根据精度信息中s大小判断是否需要对齐,如果s1和s2不相等,那么需要进行对齐操作,对齐的计算方式为:
之后根据两个数字的符号信息决定对两个数字的数值部分进行相加或相减操作,如果数值部分相减则需要对两个数的数值部分进行比较从而确定结果的符号;
(2.2)对于Decimal数据类型间的乘法,则是将两个数字的数值部分进行相乘,遍历第一个因数的数值部分的数组v1和另一个因数的数值部分的数组v2,将数组v1的第i个元素和数组v2的第j个元素相乘得到结果prod,其中prod的低32-bits被累加到积的数值部分的数组vans的第i+j个元素中,prod的高32-bits被累加到数组vans的第i+j+1个元素中,积的符号由两个因数的符号进行异或操作得到;
(2.3)对于Decimal1(p1,s1)和Decimal2(p2,s2)类型间的除法,首先根据预先设置的精度需求,将被除数左移t位;之后利用bfind指令寻找两个数字的数值部分最高比特位可以确定商的范围;最后利用二分查找的方式找到商的精确值;
(2.4)取模运算只针对于Decimal整数之间进行运算,根据两个数字的数值部分的最高比特位确定商的范围后,利用二分查找的方式找到精确的商,最后利用被除数减去商乘以除数得到的余数即为所求;
(2.5)在计算过程中为了防止溢出,方法中对运算结果的精度做了扩大处理,对于两个操作数Decimal1(p1,s1)和Decimal2(p2,s2)在满足s1≥s2来说,Decimalans(pans,sans)的精度计算方法为:
其中,除法中预设的精度需求默认设置为s2+4。
4.根据权利要求1所述的一种用于GPU数据库任意精度十进制数据的计算方法,其特征在于,利用多线程协同的计算模式,实现GPU数据库中任意精度十进制数据间的加法、减法、乘法、除法和模运算,方法如下:
(3.1)首先需要将Decimal数据类型的操作数协同加载到一个线程组中,每个线程最大得到的Decimal数字数值部分的字长度lt为:
其中Lb是在非计算过程中Decimal数字在内存或磁盘上以字节为单位进行存储的大小,TPI是线程组的大小,最后的线程得到的字长度小于等于lt;
此外对于符号位则需要每个线程都获取到Lb个字节的最高字节的最高比特位,若为1则表示该值为负数,若为0则表示该值为正数;
(3.2)通过使用CUDA Warp-Level级原语完成线程间的进/借位以及共享值和交换值操作;
(3.3)计算结束后每个线程保留结果Decimal数字的部分数值信息和全部属性信息。
5.根据权利要求3所述的一种用于GPU数据库任意精度十进制数据的计算方法,其特征在于,实现GPU数据库中任意精度十进制数据运算的代码生成模板的方法如下:
(6.1)计算表达式的精度信息,进而确定计算中每个线程需要的数值部分的长度;利用表达式二叉树和节点所涉及的列信息,结合(2.5)中的公式自下而上的计算从而获得结果的精度信息;根据结果的精度信息利用(1.2)求出计算过程中所需数值部分最小的数组的长度Lminw;
(6.2)生成将以字节为单位存储的Decimal数据构造为数值部分数组长度为Lminw的Decimal类型数据表示的代码;根据系统前期设置的多线程协同/非多线程协同的计算模式生成相应的转换代码;
(6.3)生成表达式计算的代码;前序遍历表达式二叉树,将表达式二叉树转换为中缀表达式,将其转化为CUDA C代码,表达式的计算模式根据系统的前期设置选择多线程协同/非多线程协同的计算模式;
(6.4)根据结果精度利用(1.2)求出结果以字节为单位存储的最小长度Lminb,生成数值部分数组长度为Lminw的Decimal类型数据的表示转换为以字节为单位存储的Decimal存储的代码,同样根据系统前期设置的多线程协同/非多线程协同的计算模式生成相应的转换代码。
6.根据权利要求2所述的一种用于GPU数据库任意精度十进制数据的计算方法,其特征在于,实现GPU数据库中利用多线程协同的方法完成十进制数据列的聚合操作方法如下:
(7.1)对于多线程聚合首先将数据分散到不同的块内,每个块内的每TPI个线程完成nt个数字的聚合,之后依次完成线程内的聚合、块内的聚合以及块间的聚合;
(7.2)对于N个大小为Lw个数组长度的Decimal类型数字,每个线程块处理的数字的数量为nT,每TPI个线程处理的数字的数量为nt,在线程块中数字首先被快速读取到共享内存中,然后进行聚合,根据不同型号的GPU信息,一个线程块最大的线程数量为Tmax,共享内存的大小为Mshare,其中每个线程启动的组数Ng计算为:
由于共享内存的限制每个线程组处理的数量nt计算为:
每个块处理的数量nT计算为:
nT=nt×Ng
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310322749.7A CN116028011B (zh) | 2023-03-30 | 2023-03-30 | 一种用于gpu数据库任意精度十进制数据的计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310322749.7A CN116028011B (zh) | 2023-03-30 | 2023-03-30 | 一种用于gpu数据库任意精度十进制数据的计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116028011A CN116028011A (zh) | 2023-04-28 |
CN116028011B true CN116028011B (zh) | 2023-06-16 |
Family
ID=86072666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310322749.7A Active CN116028011B (zh) | 2023-03-30 | 2023-03-30 | 一种用于gpu数据库任意精度十进制数据的计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028011B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699449A (zh) * | 2015-04-03 | 2015-06-10 | 中国科学院软件研究所 | 一种基于gmp的大整数加法和减法多核并行化实现方法 |
CN110569312A (zh) * | 2019-11-06 | 2019-12-13 | 创业慧康科技股份有限公司 | 一种基于gpu的大数据快速检索系统及其使用方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856759B2 (en) * | 2010-02-01 | 2014-10-07 | Bull Hn Information Systems Inc. | Method and apparatus providing COBOL decimal type arithmetic functions with improved performance |
JP2014056425A (ja) * | 2012-09-12 | 2014-03-27 | Nippon Telegr & Teleph Corp <Ntt> | データ管理装置、データ管理システム、処理割当方法および処理割当プログラム |
CN110069527B (zh) * | 2019-04-22 | 2021-05-14 | 电子科技大学 | 一种面向数据库的gpu和cpu异构加速方法 |
CN110120819B (zh) * | 2019-04-26 | 2023-07-21 | 矩阵元技术(深圳)有限公司 | 一种布尔电路编码方法、装置及系统 |
CN112506935B (zh) * | 2020-12-21 | 2023-08-29 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
-
2023
- 2023-03-30 CN CN202310322749.7A patent/CN116028011B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699449A (zh) * | 2015-04-03 | 2015-06-10 | 中国科学院软件研究所 | 一种基于gmp的大整数加法和减法多核并行化实现方法 |
CN110569312A (zh) * | 2019-11-06 | 2019-12-13 | 创业慧康科技股份有限公司 | 一种基于gpu的大数据快速检索系统及其使用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116028011A (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI784980B (zh) | 用於執行算術運算以累加浮點數的裝置及方法 | |
CN111213125B (zh) | 使用simd指令进行高效的直接卷积 | |
JP6540725B2 (ja) | 演算処理装置、方法、およびプログラム | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
US20160313976A1 (en) | High performance division and root computation unit | |
CN103180820A (zh) | 用于执行浮点除法的方法和装置 | |
JP2019057249A (ja) | 演算処理装置および演算処理方法 | |
EP3769208B1 (en) | Stochastic rounding logic | |
JPH06250823A (ja) | ポピュレーション・カウントの計算装置 | |
CN101295237A (zh) | 求商和余数的高速除法器 | |
JP2502836B2 (ja) | 除算回路の前処理装置 | |
CN116028011B (zh) | 一种用于gpu数据库任意精度十进制数据的计算方法 | |
CN112540946A (zh) | 可重构处理器及其上多种神经网络激活函数计算方法 | |
CN116795324A (zh) | 混合精度浮点乘法装置和混合精度浮点数处理方法 | |
WO2023116400A1 (zh) | 向量运算方法、向量运算器、电子设备和存储介质 | |
CN103559312B (zh) | 一种基于gpu的旋律匹配并行化方法 | |
CN115936965A (zh) | 应用于gpu的函数计算系统、方法和装置 | |
CN114090592A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
KR20080016803A (ko) | 큰 수 곱셈 방법 및 디바이스 | |
WO2019127480A1 (zh) | 用于处理数值数据的方法、设备和计算机可读存储介质 | |
Xu et al. | High-efficiency realization of SRT division on ternary optical computers | |
US20230393855A1 (en) | Register based simd lookup table operations | |
Santambrogio et al. | A new compact SD2 positive integer triangular array division circuit | |
CN115586922A (zh) | 一种存储与计算格式解耦的SpMV混合精度优化方法 | |
KR20230152414A (ko) | 페이지랭크 희소행렬 곱셈 연산을 위한 연산 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |