[发明专利]一种基于小内存处理大规模数据的并行程序开发方法在审

专利信息
申请号: 201510013613.3 申请日: 2015-01-12
公开(公告)号: CN104572106A 公开(公告)日: 2015-04-29
发明(设计)人: 高永虎;张清;张广勇;沈铂 申请(专利权)人: 浪潮电子信息产业股份有限公司
主分类号: G06F9/44 分类号: G06F9/44;G06F9/38
代理公司: 济南信达专利事务所有限公司 37100 代理人: 姜明
地址: 250101 山东*** 国省代码: 山东;37
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 内存 处理 大规模 数据 并行 程序 开发 方法
【权利要求书】:

1.一种基于小内存处理大规模数据的并行程序开发方法,其特征在于,其具体实现过程为:

在内存和外存开辟数据空间,并划分成若干数据块,将任务数据读入到划分的外存数据块中,计算与I/O线程操作不同的内存数据块与外存数据块交互,使得计算该数据块所需时间与I/O的时间相等;

设置读线程、计算线程、写线程,主线程根据CPU的计算核心数量启动计算线程和I/O线程,主线程初始化队列和各个缓存区,然后启动上述各个线程;

当需要计算划分到外存中的数据块时,读线程从内存中获取空的数据块缓冲区,然后将外存数据块中的数据读入到内存中;

计算线程从内存中获取已经读入的数据块,再从内存中获取一个空的数据块缓存区,计算结果存入到空的数据块缓冲区中,将源数据的数据块缓存区清空;

写线程获取计算线程计算完成后目的数据块缓存区中数据,将此数据写到外存中的缓冲区中,输出完毕后将目的数据块缓存区清空。

2.根据权利要求1所述的一种基于小内存处理大规模数据的并行程序开发方法,其特征在于,所述读线程、计算线程、写线程异步并行,需要源缓冲SR_BUF和目标缓冲DR_BUF,DR-BUF、SR_BUF均为由主线程开辟的内存缓冲空间;BUF是一个连续的存储空间,被分割成多份,每份称为一个缓冲块BUF_BLOCK,缓冲块对应一个基本数据块的作业单位;读线程与计算线程共同操作SR_BUF缓冲,计算线程与写线程共同操作DR_BUF缓冲。

3.根据权利要求2所述的一种基于小内存处理大规模数据的并行程序开发方法,其特征在于,每个缓冲或队列可容纳至少两个缓冲对象。

4.根据权利要求2所述的一种基于小内存处理大规模数据的并行程序开发方法,其特征在于,还包括环形队列,该环形队列存储缓冲区的ID,各线程从队列中获取要操作的缓冲区对应的ID,上述环形队列包括下述四个队列:

SR_BUF_FULL_QUEUE:新的计算任务队列,存放新读入的等待计算的源数据块的ID号SR_BUF_ID、数据块的大小信息,由读线程写入,计算线程弹出,当读线程向SR_BUF_ID对应的缓存区中读入新的数据时,将SR_BUF_ID入队,计算线程弹出SR_BUF_ID时,计算SR_BUF_ID对应的源数据;

SR_BUF_FREE_QUEUE:空闲源缓冲队列,存放当前空闲SR_BUF_ID号,由计算线程写入,读线程弹出,当SR_BUF_ID对应的源数据计算完毕时,释放SR_BUF_ID,告知读线程可对其更新数据;

DR_BUF_FREE_QUEUE:空闲目标缓冲队列,存放当前空闲数据块的ID号DR_BUF_ID,记录DR_BUF_ID号,由写线程写入,计算线程弹出;当写线程对DR_BUF_ID对应的缓存区数据输出完毕时,将DR_BUF_ID入队,告知计算线程,该DR_BUF_ID输出完毕可重新用于计算,计算线程弹出DR_BUF_ID时,启动计算,并将结果写入DR_BUF_ID对应的目标缓冲区中;

DR_BUF_FULL_QUEUE:新的写任务队列,存放计算完毕等待写回的目标数据块的ID号DR_BUF_ID,由计算线程写入,写线程弹出;当计算线程向DR_BUF_ID所对应的缓冲区中读入新数据时,将DR_BUF_ID入队,写线程弹出DR_BUF_ID时,对DR_BUF_ID对应的目标数据进行输出。

5.根据权利要求4所述的一种基于小内存处理大规模数据的并行程序开发方法,其特征在于,基于上述队列,该并行程序开发的具体过程为:

主线程根据CPU的计算核心数启动nThreads个计算线程和同等数量的I/O线程,将计算数据划分为合适的基本数据块,并在外存开辟同样数量大小的内存,将数据库中的数据读入到外存中;

在内存中开辟内存块,其内存块的数量是线程数量的倍数;

创建四个队列SR_BUF_FULL_QUEUE、SR_BUF_FREE_QUEUE、DR_BUF_FREE_QUEUE、DR_BUF_FREE_QUEUE,并初始化队列,即将内存块的ID存入FREE队列中,最后主线启动所有线程;

读线程从SR_BUF_FREE_QUEUE队列中获取一个空的数据块ID,将一个外存数据块读入到此ID对应的数据块中,然后将此数据块的ID入队到队列SR_BUF_FULL_QUEUE中;

计算线程分别从SR_BUF_FULL_QUEUE和DR_BUF_FREE_QUEUE获取数据块的ID,计算源数据并将结果存入到目的数据块中,计算完成将源数据块清空并将其ID入队到SR_BUF_FREE_QUEUE对列中,将目的数据块的ID入队到DR_BUF_FULL_QUEUE对列中;

写线程中DR_BUF_FULL_QUEUE中获取待写的数据块的ID,将ID对应的数据块写入到外存中,写完成后将数据块中数据清空并将其ID入队到DR_BUF_FREE_QUEUE队列中;

计算线程与读写线程异步并行执行,直到系统结束。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮电子信息产业股份有限公司,未经浪潮电子信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201510013613.3/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top