【技术实现步骤摘要】
程序代码的并行性检测方法和装置
[0001]本说明书一个或多个实施例涉及计算机,尤其涉及一种程序代码的并行性检测方法和装置
。
技术介绍
[0002]并行技术是提升程序性能的重要解决方案之一
。
然而开发者可能对并行技术并不熟悉,导致开发者在采用高级编程语言编写程序代码的过程中,更加重视程序代码的正确性和可读性等特性,极易忽视程序代码中通过并行技术来提升程序性能的机会
。
[0003]希望有一种新的技术方案,以期高效发现程序代码中允许采用并行技术的机会
。
技术实现思路
[0004]本说明书一个或多个实施例中提供了一种程序代码的并行性检测方法和装置
。
[0005]第一方面,提供了一种程序代码的并行性检测方法,所述方法包括:将程序代码拆分为多个程序单元,并确定所述多个程序单元间的依赖关系;根据所述依赖关系构建依赖关系图,其中包括与所述多个程序单元对应的多个节点;当所述依赖关系图是有向无环图时,根据所述依赖关系图确定所述多个节点各自的深度编号;确定所述多个节点各自的深度范围,其中对于所述多个节点中任意的第一节点,所述第一节点的深度范围所对应的下限值是其深度编号,所述第一节点的深度范围所对应的上限值基于邻居节点的深度编号确定,所述邻居节点直接依赖于所述第一节点;根据所述多个节点各自的深度范围,确定允许并行执行的程序单元集合,所述程序单元集合中包括第一程序单元和第二程序单元,其各自对应的节点的深度范围存在重叠区域
。
[0006 ...
【技术保护点】
【技术特征摘要】
1.
一种程序代码的并行性检测方法,所述方法包括:将程序代码拆分为多个程序单元,并确定所述多个程序单元间的依赖关系;根据所述依赖关系构建依赖关系图,其中包括与所述多个程序单元对应的多个节点;当所述依赖关系图是有向无环图时,确定所述多个节点各自的深度编号;确定所述多个节点各自的深度范围,其中对于所述多个节点中任意的第一节点,所述第一节点的深度范围所对应的下限值是其深度编号,所述第一节点的深度范围所对应的上限值基于邻居节点的深度编号确定,所述邻居节点直接依赖于所述第一节点;根据所述多个节点各自的深度范围,确定允许并行执行的程序单元集合,所述程序单元集合中包括第一程序单元和第二程序单元,其各自对应的节点的深度范围存在重叠区域
。2.
根据权利要求1所述的方法,所述将程序代码拆分为多个程序单元,包括:将程序代码拆分为多个语句;对于所述多个语句中任意的第一语句,确定所述第一语句中是否存在函数调用;如果是,则从所述第一语句中确定出被调用函数,以及依赖所述被调用函数的函数调用原语,并将所述被调用函数和所述函数调用原语均作为程序单元;如果否,则将所述第一语句作为程序单元
。3.
根据权利要求1所述的方法,所述确定所述多个程序单元间的依赖关系包括,根据所述多个程序单元各自访问的数据对象,以及所述多个程序单元各自对对应的数据对象的访问类型,确定所述多个程序单元间的依赖关系
。4.
根据权利要求1所述的方法,所述确定所述多个节点各自的深度编号,包括:在所述依赖关系图中新增入口节点
、
出口节点
、
由所述入口节点指向第二节点的有向边以及由第三节点指向所述出口节点的有向边,获得目标有向无环图,其中所述第二节点在所述依赖关系图中的入度为0,所述第三节点在所述依赖关系图中的出度为0;对于所述目标有向无环图中的任意节点,确定所述节点的深度编号,其是所述入口节点与所述节点间的最长有向路径中所包括有向边的数量
。5.
根据权利要求4所述的方法,直接依赖于所述第一节点的至少一个邻居节点各自的深度编号中的最小值,与所述第一节点的深度范围所对应的上限值之间的差值为
1。6.
根据权利要求4所述的方法,所述根据所述多个节点各自的深度范围,确定允许并行执行的程序单元集合,包括:根据所述入口节点和所述出口节点的深度编号,确定待查询的深度区间;对位于所述深度区间内的任意第一深度编号,从所述多个节点中查询目标节点,其中所述目标节点的深度范围中包括所述第一深度编号;当所述目标节点的数量不小于1的情况下,将各个所述目标节点各自对应的程...
【专利技术属性】
技术研发人员:卫思为,
申请(专利权)人:支付宝杭州信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。