CN103309889A - 一种利用gpu协同计算实现实时数据并行压缩的方法 - Google Patents

一种利用gpu协同计算实现实时数据并行压缩的方法 Download PDF

Info

Publication number
CN103309889A
CN103309889A CN2012100675084A CN201210067508A CN103309889A CN 103309889 A CN103309889 A CN 103309889A CN 2012100675084 A CN2012100675084 A CN 2012100675084A CN 201210067508 A CN201210067508 A CN 201210067508A CN 103309889 A CN103309889 A CN 103309889A
Authority
CN
China
Prior art keywords
gpu
compression
data
real
algorithm
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.)
Pending
Application number
CN2012100675084A
Other languages
English (en)
Inventor
徐新国
朱廷劭
王玉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NATIONAL COMPUTER SYSTEM ENGINEERING RESEARCH INSTITUTE
Original Assignee
NATIONAL COMPUTER SYSTEM ENGINEERING RESEARCH INSTITUTE
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NATIONAL COMPUTER SYSTEM ENGINEERING RESEARCH INSTITUTE filed Critical NATIONAL COMPUTER SYSTEM ENGINEERING RESEARCH INSTITUTE
Priority to CN2012100675084A priority Critical patent/CN103309889A/zh
Publication of CN103309889A publication Critical patent/CN103309889A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种利用GPU协同计算实现实时数据并行压缩的方法。为了提高实时数据库处理大规模数据压缩的效率,提高系统数据处理能力,本发明采用CUDA技术将数据压缩用GPU协同计算方式实现,压缩算法采用工业实时数据库常见的旋转门压缩算法。根据GPU并行方法修改后的压缩算法流程见摘要附图。通过本发明公开的将数据压缩计算采用GPU并行化的方法,压缩效率提高了70%左右。这意味着本发明可以在一定程度上减轻CPU运算负荷,可以提高整个实时数据库系统的性能。

Description

一种利用GPU协同计算实现实时数据并行压缩的方法
技术领域
本发明专利属于计算机工程应用软件,应用于工业控制中实时数据库系统的数据压缩。
背景技术
实时数据库是数据库技术与实时系统结合的产物。实时数据库在流程行业(石化,电力,钢铁)有着广泛的应用。它可用于生产过程的自动采集、存储和监视,也可在线存储每个工艺过程点的多年数据,是企业MES的核心。由于实时数据库主要应用于流程行业,而流程行业通常点数规模比较大,在要求的实时性的同时还要完成对于大量历史数据的存储,因此如何高效的对实时数据库的历史数据进行组织管理,就成了决定实时数据库性能好坏的关键因素。而压缩又是决定历史数据存储效率的关键因素。
实时数据库中的数据都是基于时间序列的数据,具有时间属性,并且其时间是序列化的。旋转门压缩算法的原理是通过查看当前数据点与前一个被保留的数据点所构成的压缩偏移覆盖区来决定数据的取舍。如果偏移覆盖区可以覆盖两者之间的所有点,则不保留该数据点;如果有数据点落在压缩偏移覆盖区之外,则保留当前数据点的前一个点,并以最新保留的数据点作为新的起点。
CUDA是一种将GPU作为数据并行计算设备的软硬件体系,采用了比较容易掌握的类C语言进行开发。它是一个SIMD(single instruction multiple data)系统,即一个程序编译一次以后,CUDA将计算任务映射为大量的可以并行执行的线程,并由拥有大量内核的硬件动态调度和执行这些线程,从而显著提高运算速度。
随着电子技术和计算机技术的发展,目前主流台式计算机已经采用了CPU与GPU协作的技术,它实际上是一个具有很强计算能力的并行系统,在诸多领域里能使程序性能提高好几个数量级,对未来信息社会处理海量数据的需求具有很强的适应性。除了并行化程度高、速度快的优点以外,GPU与CPU协作的模式还具有开发周期短、易于掌握、无须设计和调试复杂板卡、便于移植等众多优势,使开发人员能把主要精力放在系统建模和算法优化等方面。
由于在性能、成本和开发周期上的显著优势,通用GPU计算的推出在学术界和产业界引起了热烈反响。然而,目前国内将通用GPU计算应用到实时数据库的案例还很少。
我们对于利用GPU并行化提高实时数据库性能进行了尝试。将实时数据库中压缩部分移植到GPU上进行运算,并通过测试证明优化后压缩效率提高了70%左右。
发明内容
为了解决实时数据库系统对实时性的要求和大规模点数据压缩处理的矛盾,本发明提出一种使用GPU协同计算的方法来提高压缩计算的效率。实时数据库的数据流为一组具有相同计算和操作的数据记录,即测点数据,这样提供了数据并行处理的可能性。对数据流中每个元素进行相似操作的函数,例:旋转门压缩算法,而各个元素之间没有依赖关系,因此可以进行GPU并行化以提高压缩效率,减轻CPU计算负荷。
本发明的技术方案为将实时数据库中数据压缩部分使用CUDA技术移植到GPU上,利用GPU协同CPU完成实时数据库的计算任务。
GPU并行化可以分为如下三个阶段:(1)预评估;(2)基于GPU的算法设计;(3)基于GPU体系结构的性能优化。预评估为在GPU上运算的数据精度能否满足需要和能否获得预期的性能提升两方面考察算法是否适合使用GPU优化。CPU+GPU异构计算属于“CPU生产数据,GPU消费数据”模型,待移植算法的执行时间越短,CPU和GPU通信延迟的影响就越不可忽略,极端情况是GPU对性能的提升反而无法抵消通信代价,造成性能不升反降。本发明针对实时数据库中常用的旋转门压缩算法进行优化,理论和实际测试结果都表明适合使用GPU进行优化。
算法设计部分主要是任务划分和线程映射。目标是使移植到GPU上的旋转门压缩算法和CUDA的并行特性相适应。由于实时数据压缩属于数据密集类算法且每个测点的数据相对独是立,因此我们采用数据划分并行的粒度。鉴于实时数据库中各个测点的压缩可以独立进行,我们将每个测点的压缩作为最小并行粒度,分配一个GPU线程处理一个测点的压缩。不同于CPU上的粗粒度多指令流多数据流线程,GPU线程的执行模型是单指令流多线程的,同样的指令作用在不同的数据上。因此本发明编写的在GPU上运行的kernel函数是对所有GPU线程通用的计算步骤,线程内使用threadIdx.x,blockIdx.x,blockDim.x等GPU内置变量得到线程标识。每个线程单独处理一个测点的压缩计算。
GPU并行化算法实现后,还需要根据CUDA特性进行一些性能优化。存储器带宽是性能的最重要的瓶颈。GPU通用计算无法避免频繁地访问全局存储器,首地址对齐和访问地址连续是全局存储器访问首先要考虑满足的条件,尤其是在1.071.1的设备上,测试结果表明是否满足合并访问通常会对算法效率产生数倍的影响。此外,为向通用计算倾斜,GPU提供了多层次存储器,其中对通用计算加速较明显的是共享存储器、纹理存储器和常数存储器,因此,我们对于压缩精度等数据在显存中用常量存储,存储压缩结果和采集数据的数据结构使用数组,做到了首地址对齐。用GPU内置变量为每一线程指定线程标识,来控制该线程处理的点ID,这样可以做到同时发射的GPU线程访问地址连续。
目前大多数GPU都通过PCI-E总线与CPU连接。PCI-E 2.0×16通道的理论带宽是双向每向8GB s,远小于GPU片外存储器和GPU片内存储器带宽。因而我们采用在显存中缓存一部分压缩结果的方法来减少GPU和CPU的通信次数,以降低通信开销。
GPU流多处理器首先为Warp里的每个线程读取指令操作数,执行指令,最后为Warp里的每个线程写入计算结果。因此,有效的指令吞吐量不仅取决于理论指令吞吐量,还取决于内存延迟和带宽。可以采取以下手段增大指令吞吐量:避免使用低吞吐量指令;对每种类型的存储器进行优化,有效利用带宽;尽量用多的数学计算来覆盖访问延迟,同时每个流多处理器有足够的活动线程。
利用基于CUDA的GPU协同计算优化后,经过多次分别测试从1000到5000批测点规模为65536的float型数据压缩实验,采用本发明可以明显提高压缩效率。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1是实时数据库系统数据流图。
图2是旋转门压缩算法流程图(S1,S2为根据压缩算法计算出的斜率)。
图3是GPU并行化后重新设计的压缩算法流程图。
图4是实际测试优化结果展示。测试用数据点规模为65536,float型数据。其中横坐标为测试时实时数据库压缩处理的数据批次数。计算方法;同样数据规模,采集频率,采集时间的条件下,GPU并行化后程序运行减少的时间,除以原串行程序运行时间。运行环境:Linux Ubuntu 10.04(32位),cudatoolkit 3.2,Intel(R)Core (TM)1 Duo CPU E7400 2.8GHz,内存DDR2 2GB,GPU:NVIDIA GeForce GT220。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面举具体实例,对本发明作进一步详细的说明。
通常,实时数据通过现场设备(PLC、DCS)的采集接口被采集上来后,经过例外处理,就会被送入实时数据库当中,例外处理是PI数据库中提出的概念,通过对数据记录的时间,数值进行简单的评估,舍弃掉那些明显错误的数据记录,通过这样的数据预处理,可以有效的降低实时数据库端的负担,保证实时数据库的高效运转。实时数据进入数据库中之后,会分成两个流向,一个方向是更新测点的实时数据,如果在组态的过程中,测点同某一组态画面进行了连接(如报警灯,仪表),实时数据的更新也会同时传递到组态画面上,形成动画效应,方便管理人员的监控。另外实时数据在更新的时候,实时数据库还会自动根据现有的数据进行实时的计算,统计,控制,这些任务的截止期都是比较短的,实时数据库必须优先考虑。另一个方向是对现场数据进行压缩存储,这也是现场数据由实时数据转变为历史数据的过程,经过压缩,符合要求的数据被留下,写入历史数据文件当中。通过实时数据库提供的接口,用户可以很方便的查询计算、统计数据和历史数据,如果需要对历史数据进行更为复杂的分析,可以通过特定的接口,将历史数据导入到关系数据库当中,然后再利用关系数据库的高级语言进行查询分析。
在实例中我们采用socket通信来模拟数据的采集与接收。使用的测试用数据点规模为65536,float型数据,采集频率和数据质量可以通过数据模拟程序的接口设置。数据库内核接收数据后,更新到内存中的测点信息,之后将数据送入压缩处理流程。压缩逻辑采用GPU并行优化的旋转门压缩算法实现。
普通旋转门压缩算法流程如下:(S1,S2为根据压缩算法计算出的斜率)
(1)进入压缩流程,计算旧S1和旧S2;
旧S1=(压缩队列第二值-(压缩队列第一值+压缩偏差))/两值之间的时间差;
旧S2=(压缩队列第二值-(压缩队列第一值-压缩偏差))/两值之间的时间差;压缩从第三值开始进行;
(2)当考察当前测量值时,计算下面三个斜率:
新S1=(当前测量值-(上一个存储测量值+压缩偏差))/两测量值之间的时间差;
新S2=(当前测量值-(上一个存储测量值-压缩偏差))/两测量值之间的时间差;
S=(当前测量值-(上一个存储测量值)/两测量值之间的时间差;
(3)对于新算的S1,当大于原有的S1时,用新值取代旧值;
(4)对于新算的S2,当小于原有的S2时,用新值取代旧值;
(5)当
Figure BSA00000684435400031
时,当前测量值不用存储,继续测试下一采样时刻得到的测量值,否则,系统将当前测量值的前一个采样时刻采样得到的测量值存储起来;
(6)当新采样测量值到来时,重复以上(2)~(5)过程。
我们用数据划分并行的粒度,将并行粒度设置为单一测点的数据压缩并行执行。以上(2)~(5)过程计算过程重复进行,符合GPU线程单指令流多数据流的要求。因此将以上(2)~(5)过程改为GPU上kernel核函数处理。根据CUDA的语法规则编写完成相应功能的kernel函数。之后根据GPU存储设备特点,设计显存数据结构,存储压缩过程中间变量及压缩结果。并在内存申请对应的主存数据结构。运行过程中调用特定CUDA函数完成CPU-GPU之间的通信。
本实例有65536组测点,因此设备函数调用启动256*256组线程并行计算,线程内部通过tid=threadIdx.x+blockIdx.x*blockDim.x;得到线程标识。每个线程处理一个测点的压缩计算。
设计GPU上的数据结构,包括测点数据,斜率及缓存在内共需申请14个设备上的数组。
由于GPU协同计算属于“CPU生产数据,GPU消费数据”模型,计算过程中需要进行CPU-GPU间的数据传递,根据旋转门压缩算法,第三次采集的数据处理之后,每采集一组数据,向GPU传递当前采集的值和时间。计算完后,将压缩结果传回主存。
经比较压缩结果,利用GPU并行优化后压缩结果与之前相同,压缩比为3∶1。本实例时间优化的测试结果如图3所示,表明利用GPU计算实现实时数据库并行压缩后,压缩效率提高了70%左右。这意味着本发明可以在一定程度上减轻CPU运算负荷,可以提高整个系统的性能。

Claims (4)

1.一种利用GPU协同计算实现实时数据并行压缩的方法,其特征是利用CUDA技术,将工业实时数据库中常用的旋转门压缩算法用CPU-GPU异构协同计算模式实现。
2.根据权利要求1所述的方法,其特征是根据“CPU生产数据,GPU消费数据”模型,为了减少CPU-GPU间的通信开销,提高并行算法的效率。我们设计了适合于GPU协同计算模式的数据存储方法。将斜率,压缩精度,上一采集值,上一保存值等压缩过程中的中间变量保存到GPU显存中,并在主存设计了相应的数据结构来满足算法的计算需要,数据库接收到一批数据后,只传输当前采集值到GPU进行计算,压缩结果也暂时缓存在显存中,压缩结果积累到一定量时传回主存,并存入硬盘。
3.根据权利要求1所述的方法,其特征是我们设计了适合于在GPU上运行的算法流程,将旋转门压缩算法中斜率计算和更新等计算量较大且不同点的数据计算步骤都相同的过程,都用GPU上运行的kernel函数实现。计算过程充分利用了GPU的并行计算能力。
4.根据权利要求1所述的方法,其特征是根据实时数据库中点数据的特点,将计算并行粒度划为单个测点的数据压缩单独由一个GPU线程完成。
CN2012100675084A 2012-03-15 2012-03-15 一种利用gpu协同计算实现实时数据并行压缩的方法 Pending CN103309889A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012100675084A CN103309889A (zh) 2012-03-15 2012-03-15 一种利用gpu协同计算实现实时数据并行压缩的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012100675084A CN103309889A (zh) 2012-03-15 2012-03-15 一种利用gpu协同计算实现实时数据并行压缩的方法

Publications (1)

Publication Number Publication Date
CN103309889A true CN103309889A (zh) 2013-09-18

Family

ID=49135126

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012100675084A Pending CN103309889A (zh) 2012-03-15 2012-03-15 一种利用gpu协同计算实现实时数据并行压缩的方法

Country Status (1)

Country Link
CN (1) CN103309889A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104485967A (zh) * 2015-01-08 2015-04-01 中山大学 由序列通项表达式驱动的并行计算传输列表实时压缩方法
CN104952088A (zh) * 2015-05-25 2015-09-30 常州北大众志网络计算机有限公司 一种对显示数据进行压缩和解压缩的方法
CN105279917A (zh) * 2015-09-25 2016-01-27 卡斯柯信号有限公司 一种基于旋转门算法的实时预警方法
CN105637482A (zh) * 2014-09-15 2016-06-01 华为技术有限公司 基于gpu的数据流处理方法和装置
CN105700821A (zh) * 2014-12-10 2016-06-22 三星电子株式会社 半导体装置及其压缩/解压缩方法
CN106354774A (zh) * 2016-08-22 2017-01-25 东北大学 一种实时工业过程大数据压缩存储系统及方法
CN106911526A (zh) * 2015-12-22 2017-06-30 中国电信股份有限公司 用于实现压力测试的方法和系统
CN109447262A (zh) * 2018-11-01 2019-03-08 郑州云海信息技术有限公司 一种cpu与gpu协同执行算法优化的方法和相关装置
CN112269769A (zh) * 2020-11-18 2021-01-26 远景智能国际私人投资有限公司 数据压缩方法、装置、计算机设备及存储介质
US10949746B2 (en) 2016-10-27 2021-03-16 International Business Machines Corporation Efficient parallel training of a network model on multiple graphics processing units

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1786939A (zh) * 2005-11-10 2006-06-14 浙江中控技术有限公司 实时数据压缩方法
US20100013843A1 (en) * 2008-07-18 2010-01-21 Ian Ameline Method For Performing Undo And Redo Operations On A Graphics Processing Unit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1786939A (zh) * 2005-11-10 2006-06-14 浙江中控技术有限公司 实时数据压缩方法
US20100013843A1 (en) * 2008-07-18 2010-01-21 Ian Ameline Method For Performing Undo And Redo Operations On A Graphics Processing Unit

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
嵇月强: "工业历史数据库的研究", 《中国优秀硕士学位论文全文数据库》 *
程思远等: "CUDA并行数据压缩技术研究", 《电脑知识与技术》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105637482A (zh) * 2014-09-15 2016-06-01 华为技术有限公司 基于gpu的数据流处理方法和装置
CN105700821A (zh) * 2014-12-10 2016-06-22 三星电子株式会社 半导体装置及其压缩/解压缩方法
CN105700821B (zh) * 2014-12-10 2021-07-06 三星电子株式会社 半导体装置及其压缩/解压缩方法
CN104485967A (zh) * 2015-01-08 2015-04-01 中山大学 由序列通项表达式驱动的并行计算传输列表实时压缩方法
CN104485967B (zh) * 2015-01-08 2017-10-03 中山大学 由序列通项表达式驱动的并行计算传输列表实时压缩方法
CN104952088B (zh) * 2015-05-25 2018-05-29 常州北大众志网络计算机有限公司 一种对显示数据进行压缩和解压缩的方法
CN104952088A (zh) * 2015-05-25 2015-09-30 常州北大众志网络计算机有限公司 一种对显示数据进行压缩和解压缩的方法
CN105279917A (zh) * 2015-09-25 2016-01-27 卡斯柯信号有限公司 一种基于旋转门算法的实时预警方法
CN106911526A (zh) * 2015-12-22 2017-06-30 中国电信股份有限公司 用于实现压力测试的方法和系统
CN106354774A (zh) * 2016-08-22 2017-01-25 东北大学 一种实时工业过程大数据压缩存储系统及方法
US10949746B2 (en) 2016-10-27 2021-03-16 International Business Machines Corporation Efficient parallel training of a network model on multiple graphics processing units
CN109447262A (zh) * 2018-11-01 2019-03-08 郑州云海信息技术有限公司 一种cpu与gpu协同执行算法优化的方法和相关装置
CN112269769A (zh) * 2020-11-18 2021-01-26 远景智能国际私人投资有限公司 数据压缩方法、装置、计算机设备及存储介质
CN112269769B (zh) * 2020-11-18 2023-12-05 远景智能国际私人投资有限公司 数据压缩方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
CN103309889A (zh) 一种利用gpu协同计算实现实时数据并行压缩的方法
CN101901042B (zh) 多gpu系统中基于动态任务迁移技术的降功耗方法
Hong-Tao et al. K-means on commodity GPUs with CUDA
Zhang et al. {FineStream}:{Fine-Grained}{Window-Based} stream processing on {CPU-GPU} integrated architectures
Diener et al. Evaluating thread placement based on memory access patterns for multi-core processors
Balaji et al. CPMIP: measurements of real computational performance of Earth system models in CMIP6
Melab et al. A GPU-accelerated branch-and-bound algorithm for the flow-shop scheduling problem
CN102880509A (zh) 基于cuda的格网数字高程模型邻域分析的系统和方法
Rui et al. Join algorithms on GPUs: A revisit after seven years
Rafique et al. A capabilities-aware framework for using computational accelerators in data-intensive computing
CN102902657A (zh) 一种利用gpu加速fft的方法
Zhang et al. Comparison and analysis of GPGPU and parallel computing on multi-core CPU
Wu et al. Utilizing hardware performance counters to model and optimize the energy and performance of large scale scientific applications on power-aware supercomputers
CN103049329A (zh) 一种基于cpu/mic异构体系结构的高效能系统
Booth et al. Phase detection with hidden markov models for dvfs on many-core processors
DE112020004315T5 (de) Geräteverbindungsverwaltung
Wu et al. A vectorized k-means algorithm for intel many integrated core architecture
CN103530132A (zh) 一种cpu串行程序移植到mic平台的方法
Ciobanu et al. Scalability evaluation of a Polymorphic Register File: a CG case study
Nazir Accelerated Anticor Online portfolio selection on multi-core CPUs and GPU with OpenCL
Li et al. A GPU-based parallel algorithm for large scale linear programming problem
CN112784435A (zh) 一种基于性能事件计数和温度的gpu实时功率建模方法
Dudnik et al. Cuda architecture analysis as the driving force Of parallel calculation organization
Wen et al. EdgeCloudBenchmark: A Benchmark Driven by Real Trace to Generate Cloud-Edge Workloads
El Zein et al. From sparse matrix to optimal gpu cuda sparse matrix vector product implementation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130918