当前位置: 首页 > 专利查询>武汉大学专利>正文

一种针对大数据任务处理的基于CPU多线程与GPU多粒度并行及协同优化的方法技术

技术编号:15895070 阅读:45 留言:0更新日期:2017-07-28 19:42
本发明专利技术涉及一种针对大数据任务处理的基于CPU多线程与GPU多粒度并行及协同优化的方法,首先创建主线程,根据已知参数计算CPU_GPU最佳任务划分。启动n个线程,其中1个负责调度GPU,其余负责执行CPU计算任务。然后采用内存池技术降低数据从磁盘读入内存的通信开销;采用哈希表和信息摘要解决多线程访存中资源竞争的问题;采用流水线技术隐藏数据从内存读入CPU的通信时间。在主机端,CPU采用多核多线程方式执行分配到的任务;在设备端,GPU采用CUDA并行方式执行分配到的任务。全部任务完成后,主线程收回控制权直至退出。本发明专利技术可以在大数据任务处理中取得明显的加速效果,降低任务总的处理时间,提高处理效率。

A method based on CPU multithreading and GPU multi granularity parallel and collaborative optimization for large data task processing

The invention relates to a method based on CPU multi thread and GPU multi granularity parallel and cooperative optimization for large data task processing. First, a main thread is created, and a CPU_GPU optimum task division is calculated according to the known parameters. Start n threads, 1 of which are responsible for scheduling GPU, and the others responsible for executing CPU computing tasks. Then the memory pool technology to reduce the communication overhead of data from disk into memory; using the hash table and the multi thread access information to solve problems in resource competition; using pipelining technique to hide data from the communication time memory to read CPU. At the host side, CPU uses multi-core and multi-threaded methods to perform assigned tasks; at the device side, the GPU uses CUDA parallel mode to perform assigned tasks. When all tasks are completed, the main thread takes control until it exits. The invention can achieve obvious acceleration effect in large data task processing, reduce the total processing time of tasks and improve the processing efficiency.

【技术实现步骤摘要】
一种针对大数据任务处理的基于CPU多线程与GPU多粒度并行及协同优化的方法
本专利技术涉及计算机学科中的CPU_GPU多粒度并行、负载均衡、存储与通信优化、CPU多线程和大数据处理等,尤其是一种大数据任务处理的基于CPU多线程与GPU多粒度并行及协同优化的方法。
技术介绍
在进行大数据任务处理时,由于大规模的密集型数据、处理时间长,有必要对大数据任务处理进行加速优化。近年来,随着硬件的发展,在计算机架构中,多核/众核处理器已成为提高计算速度的主要方式。自NVIDIA公司在1999年发布GeForce256图形处理芯片提出GPU的概念以来,GPU因其强大的计算能力、灵活的编程能力和低功耗的特点,成为当前高性能计算系统中加速部件的主要选择之一,被广泛应用于计算密集型程序。在众多高性能计算平台中,多核CPU与众核GPU组合形成的异构计算系统具有很大的发展潜力。现有的CPU_GPU异构平台主要采用主-从方式运行,即CPU作为主机端,负责执行控制逻辑和事务处理等串行计算;而GPU作为协处理器或设备端,负责执行计算密度高、逻辑分支简单的大规模数据并行计算。由于CPU和GPU执行特性的差异,某些任务可能在CPU上执行得快但在GPU上执行得慢,而另外一些任务可能在GPU上执行得快但在CPU上执行得慢,所以合理的任务划分策略和实现负载均衡显得尤为重要。CPU与GPU之间通过PCI-E总线连接,GPU仍然作为计算节点的外部设备,CPU和GPU之间的数据传输必须在CPU的控制下显式地进行。CPU和GPU之间的数据传输以及计算模块与存储模块的通信开销是制约性能的瓶颈,所以有必要对通信开销进行优化以提高CPU多线程与GPU协同工作的效率。针对大数据任务处理,由于待处理的任务数据量庞大,在CPU端对内存中大块数据的访问会消耗执行的时间,因此有必要采取相应的策略来优化主存储;而在GPU端,存储器的带宽利用率是制约GPU并行程序性能的重要因素,因此有必要进行GPU存储器访问优化。
技术实现思路
本专利技术主要是解决现有技术所存在的技术问题;提供了一种从任务划分和负载均衡、通信开销、主存储优化、GPU访存优化四个方面来实现CPU_GPU多粒度并行及协同优化,明显地缩短了大数据任务处理的执行时间的针对大数据任务处理的基于CPU多线程与GPU多粒度并行及协同优化的方法。本专利技术的上述技术问题主要是通过下述技术方案得以解决的:本专利技术基于以下定义:任务划分及负载均衡:根据获取的任务,假设CPU和GPU的单位任务计算时间,同时考虑CPU多线程的开销,计算CPU和GPU间的最优任务划分并实现负载均衡。通信开销优化:采用内存池技术减少数据从磁盘读入内存的通信时间,采用流水线技术隐藏CPU从内存读入数据的时间,以实现通信开销的优化。GPU访存优化:合理的全局存储器的合并访问策略以及合理的共享存储器、常量存储器、纹理存储器使用策略可以提高GPU访存效率。主存储优化:利用哈希表来标识每个数据块在内存中的位置以降低查找数据块的时间复杂度,利用更新数据块信息摘要的方式以避免多线程同时访问同一数据块造成资源冲突。一种针对大数据任务处理的基于CPU多线程与GPU多粒度并行及协同优化的方法,其特征在于,包括步骤1:程序创建主线程,计算CPU和GPU的单位任务计算时间,记为tcpu、tgpu,并计算GPU加速比rgpu=tcpu/tgpu;然后根据CPU核数p,GPU数q,CPU开辟的线程数k,多线程修正参数α(α>1),总任务量s,计算最佳任务划分{CPU任务数,GPU任务数,CPU线程数}为步骤2:CPU启动n个线程,按步骤1计算的最佳任务划分方案为CPU和GPU分配相应数量的任务,其中需要设置1个线程负责调度GPU,其余n-1个线程负责执行CPU任务。步骤3:采用内存池技术,在内存中划分特定的分区,采用一定的调度策略将数据从磁盘存入内存池当中,CPU定期从内存的数据存放区中获取数据,具体包括:步骤3.1:每个任务称为一个大块数据,在内存池中划分出n个内存区域。大块数据的总数超过n,开始阶段,每个大块数据被分为若干个大小固定的小块数据。步骤3.2:硬盘与内存池之间初始化n个通道,文件访问程序从硬盘中预读入部分数据块加入内存池,小块数据在内存池中进行缓存。步骤3.3:在内存池中,每个通道接口会设置一个标记为Pi,每个大块数据会设置一个计数器。当小块数据加入内存池时,计数器数目会加1,计数器计数达到大块数据的大小的时候,数据块会被转入数据存放区,等待处理程序获取。步骤3.4:Pi标记为可覆盖,计数器被置0,内存池中的通道接口接收新的数据块存放。步骤4:CPU从内存中读入数据时,采用哈希表和信息摘要标识每一个小块数据对象,具体包括以下定义:定义一:大块数据的信息摘要内容包括名称、类型、大小和MD5校验码。分割大块数据之后,生成每个小块数据的分块信息,并将小块数据的其他信息一同写到信息摘要当中。定义二:小块数据对象的信息包含对象大小、哈希表中的键和下一个分块主键。定义三:哈希表中保存了分块数据的主键,值为数据在内存中的地址信息,在数据块加载到内存的过程中,根据数据块名称,访问数据块信息摘要,获得数据块的主键获得数据块地址并定位到数据块。定义四:当线程读取数据块的时候,对数据块加读锁,当读取完成之后,需要更新小块数据中的摘要信息,标记为已读;当其他线程访问该数据时,如果检查到标记为1,则访问下一块数据。步骤5:采用流水线技术,使读入数据、预处理、数据处理在时间上重叠起来,附图4为流水线模式示意图。步骤6:CPU采用多核多线程方式执行任务的同时,1个线程负责调度GPU,GPU采用CUDA并行方式处理分配的任务,并将结果传回CPU。步骤7:由CPU根据从GPU传回的结果进行结果汇总。在上述的一种针对大数据任务处理的基于CPU多线程与GPU多粒度并行及协同优化的方法,所述的步骤6包括以下三个约束条件:约束条件1:在GPU中,每个线程块的每次访存都保证块内线程按线程号tid顺序访问连续的内存单元;对于多个线程块,要按线程块号bid进行访问。约束条件2:程序的函数局部变量应放入共享存储器中。约束条件3:常量存储器和纹理存储器则应对经常使用的只读数据进行存储。因此,本专利技术具有如下优点:本专利技术从任务划分和负载均衡、通信开销、主存储优化、GPU访存优化四个方面实现了CPU_GPU多粒度并行及协同优化。本专利技术可以实现CPU和GPU间的最优任务划分;减少CPU和GPU间的通信时间;提高存储带宽,提高GPU访存效率;减少资源冲突;可以明显地缩短大数据任务处理的执行时间。附图说明图1是本专利技术中的CPU多线程与GPU的多粒度并行流程图。图2是本专利技术中的CPU多线程与GPU的多粒度协同并行的优化策略示意图。图3是本专利技术中的内存池模型。图4是本专利技术中的流水线模式示意图。图5是本专利技术中以大块数据“picture.jpg”为例的信息摘要内容示意图。具体实施方式下面通过实施例,并结合附图,对本专利技术的技术方案作进一步具体的说明。实施例:一、首先介绍本专利技术的方法流程,具体包括:步骤1:程序创建主线程,计算CPU和GPU的单位任务计算时间,记为tcpu、tgpu,并计算GPU加速比rgpu=tcpu/tgp本文档来自技高网
...
一种针对大数据任务处理的基于CPU多线程与GPU多粒度并行及协同优化的方法

【技术保护点】
一种针对大数据任务处理的基于CPU多线程与GPU多粒度并行及协同优化的方法,其特征在于,包括步骤1:程序创建主线程,计算CPU和GPU的单位任务计算时间,记为tcpu、tgpu,并计算GPU加速比rgpu=tcpu/tgpu;然后根据CPU核数p,GPU数q,CPU开辟的线程数k,多线程修正参数α(α>1),总任务量s,计算最佳任务划分{CPU任务数,GPU任务数,CPU线程数}为

【技术特征摘要】
1.一种针对大数据任务处理的基于CPU多线程与GPU多粒度并行及协同优化的方法,其特征在于,包括步骤1:程序创建主线程,计算CPU和GPU的单位任务计算时间,记为tcpu、tgpu,并计算GPU加速比rgpu=tcpu/tgpu;然后根据CPU核数p,GPU数q,CPU开辟的线程数k,多线程修正参数α(α>1),总任务量s,计算最佳任务划分{CPU任务数,GPU任务数,CPU线程数}为步骤2:CPU启动n个线程,按步骤1计算的最佳任务划分方案为CPU和GPU分配相应数量的任务,其中需要设置1个线程负责调度GPU,其余n-1个线程负责执行CPU任务;步骤3:采用内存池技术,在内存中划分特定的分区,采用一定的调度策略将数据从磁盘存入内存池当中,CPU定期从内存的数据存放区中获取数据,具体包括:步骤3.1:每个任务称为一个大块数据,在内存池中划分出n个内存区域;大块数据的总数超过n,开始阶段,每个大块数据被分为若干个大小固定的小块数据;步骤3.2:硬盘与内存池之间初始化n个通道,文件访问程序从硬盘中预读入部分数据块加入内存池,小块数据在内存池中进行缓存;步骤3.3:在内存池中,每个通道接口会设置一个标记为Pi,每个大块数据会设置一个计数器;当小块数据加入内存池时,计数器数目会加1,计数器计数达到大块数据的大小的时候,数据块会被转入数据存放区,等待处理程序获取;步骤3.4:Pi标记为可覆盖,计数器被置0,内存池中的通道接口接收新的数据块存放;步骤4:CPU从内存中读入数据时,采用哈希表和...

【专利技术属性】
技术研发人员:刘金硕李扬眉江庄毅章岚昕邓娟陈煜森杨广益李晨曦
申请(专利权)人:武汉大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1