[发明专利]一种利用GPU协同计算实现实时数据并行压缩的方法在审
申请号: | 201210067508.4 | 申请日: | 2012-03-15 |
公开(公告)号: | CN103309889A | 公开(公告)日: | 2013-09-18 |
发明(设计)人: | 徐新国;朱廷劭;王玉 | 申请(专利权)人: | 华北计算机系统工程研究所 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100083 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 利用 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内置变量得到线程标识。每个线程单独处理一个测点的压缩计算。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华北计算机系统工程研究所,未经华北计算机系统工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210067508.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:磁浮马达
- 下一篇:一种工控系统主动防危的方法