一种基于Kahn进程网络的程序并行框架提取技术的制作方法

文档序号:6641016阅读:244来源:国知局
一种基于Kahn进程网络的程序并行框架提取技术的制作方法
【专利摘要】本发明公开了一种基于Kahn进程网络的程序并行框架提取技术,其特征在于:基于局部化控制和分散内存的思想,从3个步骤应用程序转化成为进程网络完成程序并行框架提取:步骤1、预处理;步骤2、消费者进程重构;步骤3、生产者进程重构。本发明针对嵌入式系统中一类典型的计算密集程序——静态仿射嵌套循环程序,提出一种并行性发现技术,并且将其表示为Kahn进程网络。
【专利说明】-种基于Kahn进程网络的程序并行框架提取技术

【技术领域】
[0001] 本发明属于一种基于K址n进程网络的程序并行框架提取技术。

【背景技术】
[0002] 多核或者多处理架构已经成为当前各类信息系统的主要技术。从高性能计算到嵌 入式系统,多核(包括异构多核)处理器可W有效地满足计算性能要求,降低能耗。但是, 多核计算机系统的内在的并行性利用通常需要并行的程序设计。现有的并行程序设计基于 特定的并行库,编程人员手工分析程序的可并行性,给出并行化策略和方法。现有的并行库 包括MPI、化enMP、化da等,该些并行库通常支持高性能的计算环境,自身的开销也较大,无 法满足嵌入式环境多核并行编程的需求。


【发明内容】

[0003] 本发明要解决的技术问题是克服上述缺陷,提供一种基于K址n进程网络的程序 并行框架提取技术,针对嵌入式系统中一类典型的计算密集程序一一静态仿射嵌套循环程 序,提出一种并行性发现技术,并且将其表示为K址n进程网络。
[0004] 为解决上述问题,本发明所采用的技术方案是:
[0005] 一种基于K址n进程网络的程序并行框架提取技术,其特征在于:基于局部化控制 和分散内存的思想,从3个步骤应用程序转化成为进程网络完成程序并行框架提取:
[0006] 步骤1、预处理:预处理过程首先将每条赋值语句的所有执行压缩成为一个进程, 从而形成一个初始的进程网络;
[0007] 步骤2、消费者进程重构:消费者进程重构是根据K址n进程网络之间的通信是 FIFO的基本要求,将生产者进程共同具有写操作的内存数组分解为独立的内存区域,然后 调整、或者新增新的消费者进程的一个过程;
[000引步骤3、生产者进程重构;生产者进程重构是指将多个消费者进程访问的内存数 组替换为独立的内存数组,然后调整生产者进程结构的过程。
[0009] 作为一种优化的技术方案,所述步骤2中,消费者进程重构过程将考虑每个进程 的数据消耗,并且给出独立的内存数组,使得生产者进程可W存储数据;对于每个数组,确 保只有一个生产者进程;
[0010] 具体的实现过程如下:
[0011] 1)、识别对相同内存数据具有写操作的生产者进程组;设Sf是对内存数组r写入 数据的所有生产者进程的集合,町是所有从内存数组r读数据的消费者进程集合;
[0012] 2)、拆分内存数组;对于每个进程IVG S t,利用独立的内存数组替代r来支持 其写操作;
[0013] 3)、建立起消费进程和生产进程的有效链接;为了确保程序的逻辑正确性,消费进 程q G C,.也必须从新的内存r,中读取数据;将r i与每个r的消费者连接;但是该样的链接 中,存在许多无效链接;为了消除无效链接,执行IV与消费进程间的数据依赖分析,对于没 有数据依赖的链接,则删除之,留下确实有数据依赖的链接;
[0014] 4)、确定r,的范围;根据数据依赖分析,建立起一个仿射依赖函数,该函数在输入 端口域上有效;一般地说,假如每个输入端口域可W利用一个k维的综合参数化多面体表 示,即/PD = C(N )〇. %对于每个生产者对P/C,它可W由一个唯一的多面体C(N)和一个 仿射依赖函数f表示;一个仿射依赖函数f表示为一个积分矩阵M和一个偏移向量0: f (X) =Mx+0 ;通过该依赖函数,可W确定对于每个生产者/消费者对在内存上的输入范围;
[0015] 5)、重构消费者进程;根据每个r;及其输入端口域的范围,为消费者进程巧eQ 声称一个新进程(',,其循环上下界根据输入端口的范围确定。
[0016] 作为一种优化的技术方案,所述步骤3中,步骤如下:
[0017] 1)、对于每一内存数组,识别出相应的消费者进程集合,设町是读取内存数组r的 所有消费者进程的集合;
[0018] 2)、为每个消费者进程G设立独立的内存数组ri来替代队r的访问;
[0019] 3)、确定每个的输入域;由于消费者进程重构过程已经完成,对于每个内存数组 r仅有一个进程F输入数据;那么就仅需确定P t在每个r i上的输出;其输出为
[0020] OPD = /( Q N ) n '') = {p\p= fix), X e (C( N ) n *) j .
[002U 4)、确定生产者c满足r,的输入域y ;该需要根据生产者和消费者之间的逆向数 据流分析,求解数据流函数获得;
[0022] 5)、根据每个独立的内存数组的输入范围重构生产者代码。
[0023] 由于采用了上述技术方案,与现有技术相比,本发明设计了 一种技术从串行程序 中提取并行性的技术,支持自动化的程序并行化。由于不同类型的串行程序特征不同,并行 化的效果也不尽相同。本发明针对嵌入式系统中一类典型的计算密集程序一一静态仿射嵌 套循环程序,提出一种并行性发现技术,并且将其表示为Kahn进程网络。

【具体实施方式】 [0024] 实施例;
[0025] 一种基于K址n进程网络的程序并行框架提取技术,基于局部化控制和分散内存 的思想,从3个步骤应用程序转化成为进程网络完成程序并行框架提取:
[0026] 步骤1、预处理:预处理过程首先将每条赋值语句的所有执行压缩成为一个进程, 从而形成一个初始的进程网络。
[0027] 步骤2、消费者进程重构:消费者进程重构是根据K址n进程网络之间的通信是 FIFO的基本要求,将生产者进程共同具有写操作的内存数组分解为独立的内存区域,然后 调整、或者新增新的消费者进程的一个过程。
[002引步骤3、生产者进程重构;生产者进程重构是指将多个消费者进程访问的内存数 组替换为独立的内存数组,然后调整生产者进程结构的过程。
[0029] 所述步骤2中,消费者进程重构过程将考虑每个进程的数据消耗,并且给出独立 的内存数组,使得生产者进程可W存储数据;对于每个数组,确保只有一个生产者进程;
[0030] 具体的实现过程如下:
[0031] 1)、识别对相同内存数据具有写操作的生产者进程组;设Sf是对内存数组r写入 数据的所有生产者进程的集合,町是所有从内存数组r读数据的消费者进程集合。
[0032] 2)、拆分内存数组;对于每个进程IVG Sf,利用独立的内存数组替代r来支持 其写操作。
[0033] 3)、建立起消费进程和生产进程的有效链接;为了确保程序的逻辑正确性,消费进 程q e C,.也必须从新的内存中读取数据;将r i与每个r的消费者连接;但是该样的链接 中,存在许多无效链接;为了消除无效链接,执行IV与消费进程间的数据依赖分析,对于没 有数据依赖的链接,则删除之,留下确实有数据依赖的链接。
[0034] 4)、确定的范围;根据数据依赖分析,建立起一个仿射依赖函数,该函数在输入 端口域上有效;一般地说,假如每个输入端口域可W利用一个k维的综合参数化多面体表 示,即//>D = C(N )〇□%对于每个生产者对P/C,它可W由一个唯一的多面体C(N)和一个 仿射依赖函数f表示;一个仿射依赖函数f表示为一个积分矩阵M和一个偏移向量0: f (X) =Mx+0 ;通过该依赖函数,可W确定对于每个生产者/消费者对在内存上的输入范围。
[0035] 5)、重构消费者进程;根据每个r,及其输入端口域的范围,为消费者进程巧eCr 声称一个新进程.巧,其循环上下界根据输入端口的范围确定。
[0036] 所述步骤3中,步骤如下:
[0037] 1)、对于每一内存数组,识别出相应的消费者进程集合,设D,是读取内存数组r的 所有消费者进程的集合。
[003引 2)、为每个消费者进程G设立独立的内存数组来替代队r的访问。
[0039] 3)、确定每个的输入域;由于消费者进程重构过程已经完成,对于每个内存数组 r仅有一个进程F输入数据;那么就仅需确定P t在每个r i上的输出;其输出为
[0040]

【权利要求】
1. 一种基于Kahn进程网络的程序并行框架提取技术,其特征在于:基于局部化控制和 分散内存的思想,从3个步骤应用程序转化成为进程网络完成程序并行框架提取: 步骤1、预处理:预处理过程首先将每条赋值语句的所有执行压缩成为一个进程,从而 形成一个初始的进程网络; 步骤2、消费者进程重构:消费者进程重构是根据Kahn进程网络之间的通信是FIFO的 基本要求,将生产者进程共同具有写操作的内存数组分解为独立的内存区域,然后调整、或 者新增新的消费者进程的一个过程; 步骤3、生产者进程重构:生产者进程重构是指将多个消费者进程访问的内存数组替 换为独立的内存数组,然后调整生产者进程结构的过程。
2. 根据权利要求1所述的基于Kahn进程网络的程序并行框架提取技术,其特征在于: 所述步骤2中,消费者进程重构过程将考虑每个进程的数据消耗,并且给出独立的内存数 组,使得生产者进程可以存储数据;对于每个数组,确保只有一个生产者进程; 具体的实现过程如下: 1) 、识别对相同内存数据具有写操作的生产者进程组;设&是对内存数组r写入数据 的所有生产者进程的集合,W是所有从内存数组r读数据的消费者进程集合; 2) 、拆分内存数组;对于每个进程/fe^,利用独立的内存数组ri替代r来支持其写 操作; 3) 、建立起消费进程和生产进程的有效链接;为了确保程序的逻辑正确性,消费进程 C)eC,也必须从新的内存A中读取数据;将ri与每个r的消费者连接;但是这样的链接 中,存在许多无效链接;为了消除无效链接,执行与消费进程间的数据依赖分析,对于没 有数据依赖的链接,则删除之,留下确实有数据依赖的链接; 4) 、确定1^的范围;根据数据依赖分析,建立起一个仿射依赖函数,该函数在输入端口 域上有效;一般地说,假如每个输入端口域可以利用一个k维的综合参数化多面体表示,即 //>D=C(N)n'对于每个生产者对p/C,它可以由一个唯一的多面体C(N)和一个仿射 依赖函数f表不;一个仿射依赖函数f表不为一个积分矩阵M和一个偏移向量0:f(X)=Mx+0 ;通过该依赖函数,可以确定对于每个生产者/消费者对在内存巧上的输入范围; 5) 、重构消费者进程;根据每个ri及其输入端口域的范围,为消费者进程C;eC,.声称 一个新进程(',,其循环上下界根据输入端口的范围确定。
3. 根据权利要求2所述的基于Kahn进程网络的程序并行框架提取技术,其特征在于: 所述步骤3中,步骤如下: 1) 、对于每一内存数组,识别出相应的消费者进程集合,设1\是读取内存数组r的所有 消费者进程的集合; 2) 、为每个消费者进程CT设立独立的内存数组&来替代队r的访问; 3) 、确定每个&的输入域;由于消费者进程重构过程已经完成,对于每个内存数组r仅 有一个进程F输入数据;那么就仅需确定P在每个ri上的输出;其输出为 OPD =/(QN ) nk)^\p\p = ,f\x\xe (QN )nDfr)}. 9 4)、确定生产者G满足巧的输入域y;这需要根据生产者和消费者之间的逆向数据流 分析,求解数据流函数获得; 5)、根据每个独立的内存数组的输入范围重构生产者代码。
【文档编号】G06F9/38GK104503734SQ201410855804
【公开日】2015年4月8日 申请日期:2014年12月31日 优先权日:2014年12月31日
【发明者】李尚杰, 程胜, 周志军, 魏明, 卓保特 申请人:北京神舟航天软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1