CN113553266A - 一种基于并行性检测模型的串行程序的并行性检测方法、***、终端及可读存储介质 - Google Patents
一种基于并行性检测模型的串行程序的并行性检测方法、***、终端及可读存储介质 Download PDFInfo
- Publication number
- CN113553266A CN113553266A CN202110838961.XA CN202110838961A CN113553266A CN 113553266 A CN113553266 A CN 113553266A CN 202110838961 A CN202110838961 A CN 202110838961A CN 113553266 A CN113553266 A CN 113553266A
- Authority
- CN
- China
- Prior art keywords
- program
- parallelism detection
- classification
- detection model
- sample
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Biomedical Technology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于并行性检测模型的串行程序的并行性检测方法、***、终端及可读存储介质,该方法包括:获取程序样本及其分类标签,每个程序样本包含唯一的循环片段,分类标签表示程序样本能否被并行化;构建每个程序样本的图结构,优选使用上下文流程图表征程序样本;基于程序样本的图结构及分类标签训练分类模型或神经网络得到并行性检测模型;所述并行性检测模型用于检测目标程序是否能被并行化。本发明所述方法利用基于数据驱动的深度学习方法从数据集中自动学习代码潜在的特征,并选用图结构表征并行程序特点,以其为基础提取学习特征训练出并行性检测模型,解决了现有并行性检测技术中存在时间开销大、程序分析局限性、专业性强的问题。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种基于并行性检测模型的串行程序的并行性检测方法、***、终端及可读存储介质。
背景技术
虽然微处理器促进了计算机应用的性能和成本的降低,但是这一过程由于能耗等问题而停滞不前。因此,处理器开发商将微处理器模式转变为多核、多核处理器模式。如今,并行计算机越来越普及。在传统编程过程中引入并使用并行编程技术,其目的是为了充分利用现有的计算机软硬件资源,更多、更快、更高效的处理串行任务。即通过并行编程使得计算机同时正确的处理多个任务或快速高效的处理庞大数据。(相当于一件事由一人做变为多人做,或多件事一个人由按顺序做变为同时做),从而实现时间成本、设备成本以及金钱成本的多重节约。随着计算能力的不断提高,并行编程在实际工程应用中占有着举足轻重的位置。尤其在地震数据处理、物理模型计算等科学计算领域(这些领域的程序具有数据量庞大、运行时间超长、稳定性要求极高的特点)具备着巨大的应用潜力。
然而,充分发挥多核处理器的潜在威力还面临着挑战,程序性能的扩展与并行计算机的扩展不相匹配。在对顺序程序进行并行处理时,判断程序是否存在并行目标,即程序中是否含有并行性是一项首要任务。自动并行化工具的产生帮助编程者去发现这样的并行目标,但是这些工具在分析具备复杂程序结构、计算密集型及数据密集型特点的串行程序时存在局限性。因此,由于专业知识的局限性,并行性分析工具的局限性,以及多种并行编程方法缺乏统一的编程接口等原因,编程的负担仍然很重,特别是当顺序程序由非经验的程序员编写时。
对于计算机程序而言,控制依赖和数据依赖是否存在决定了程序能否被并行化。因控制依赖通常可以通过预测执行技术来消除,所以数据依赖最终决定了程序的并行性。串行程序的并行性识别仍然具有很大的挑战,原因在于不能准确、高效地得到程序中的数据依赖关系。在识别串行程序中潜在的并行性方面。
为此现有并行性研究主要集中在以下三个方面:
1.基于规则的静态方法。由于静态分析方法不需要执行程序,并且不需要考虑执行环境,因此静态分析被认为是偏保守的。该种方法不能动态地获取分配内存以及序列索引的信息。主要的静态分析手段包括:词法分析,语法分析,语义分析,数据以及控制流分析。静态分析方法通常通过人为制定特定的数据依赖分析算法去分析程序中潜在的依赖关系。这种会存在两个问题:一个是对从业人员的要求较高,需要具备丰富的计算机知识、对并行编程理论技术的深入理解和对计算机程序特征的准确把握等。对跨专业领域的人员很不友好。二是专业的从业人员同样要付出很大的时间代价去有针对性的分析程序。
2.动态分析方法。动态分析需要执行程序并且捕捉运行时实际发生的依赖关系。该种方法容易引起较高的运行时开销。插桩技术是取程序运行时信息的常用方法之一。插桩技术的实现手段是通过在代码中***自定义的代码,将***的自定义代码编译到可执行文件中,得到程序运行时的各种依赖信息。该种方法同样需要专业人员对程序编程技术非常了解,能将插桩技术运用得当。同时,因为要执行程序,会引发较大的编译和执行时间开销。
3.程序并行性分析工具。现有的并行性分析工具可以分为数据依赖性能评测器、半自动并行化工具以及自动并行化工具。其中,数据依赖性能评测器分析程序中的数据依赖关系,不提供并行化指导;半自动化工具分析程序的并行性位置并在该位置给出并行化提示;自动并行化工具直接将串行程序转化为并行程序。尽管基于规则的静态分析方法偏为保守,程序并行性分析工具仍然广泛地使用静态分析方法作为它们的主体部分。部分工具结合了运行时的信息。可以说,程序并行化工具的内核其实就是静态分析算法,动态分析方法或者两者的结合。专业开发人员将具体的算法包装成完整的工具来帮助编程人员自动识别程序的并行性。但是目前表现较好的程序并行化工具仍然面临着两个问题:一是程序分析的范围较窄。尽管有很多分析工具存在,但是都只是针对特定的程序进行分析。当分析超出工具本身限制的程序时会得不到结果。二是分析程序结构比较复杂、规模较大的程序时,会引发较大的分析时间开销。
综上所述,现有并行性检测存在时间开销大、程序分析局限性、专业性强的技术缺陷,因此,亟需一种可以克服其技术缺陷的新型并行性检测的技术手段。
发明内容
本发明的目的是针对现有并行性检测技术中存在时间开销大、程序分析局限性、专业性强的技术问题,提供一种基于并行性检测模型的串行程序的并行性检测方法、***、终端及可读存储介质予以克服。本发明所述方法利用基于数据驱动的深度学习方法从数据集中自动学习代码潜在的特征,并选用图结构表征并行程序特点,以其为基础提取学习特征训练出并行性检测模型,从而不需要人工设置具体的程序分析规则和算法,不再有程序分析限制,冲破了程序并行性分析工具在分析结构复杂、规模较大程序时存在的局限性,且实现过程避免了因为执行程序进行动态分析而引发的运行开销。
一方面,本发明提供的一种基于并行性检测模型的串行程序的并行性检测方法,包括以下步骤:
步骤1:获取程序样本及其分类标签,其中,每个程序样本包含唯一的循环片段,所述分类标签表示所述程序样本能否被并行化;
步骤2:构建每个程序样本的图结构;
步骤3:基于程序样本的图结构及其分类标签训练分类模型或神经网络得到并行性检测模型;
步骤4:基于所述并行性检测模型检测目标程序是否能被并行化,所述目标程序为待并行化鉴别的程序。
本发明所述方法选择包含唯一循环片段的程序作为样本,这是基于一份代码中若含有多个循环片段,且不同的循环片段可能有不同的并行性属性,当使用数据驱动的方式对该程序进行识别时,容易混淆该程序的并行性分类的考量;此外,本发明还创造性的选择图结构表征程序的并行特征,进而训练分类模型或神经网络得到并行性检测模型,用于实现任一程序的并行性检测,克服了现有并行性检测存在的时间开销大、程序分析局限性、专业性强的技术问题。其中,本发明选用图结构表征程序特征,充分考虑到了图结构中节点和节点之间的边可以更加有效表征程序中的依赖关系,而控制依赖和数据依赖是否存在决定了程序能否被并行化,因此,本发明创造性的选择图结构表征并行特征,利用其提取的学习特征训练出的并行性检测模型的分类精度高。
可选地,步骤2中构建每个程序样本的上下文流程图,以所述上下文流程图作为程序样本的图结构。
可选地,步骤3中基于程序样本的图结构及其分类标签训练分类模型或神经网络得到并行性检测模型的过程,如下:
步骤3-1:基于程序样本的上下文流程图,采用类比测试方法获取节点类型以及基于inst2vec向量空间获取节点特征向量;
步骤3-2:将程序样本对应的上下文流程图、节点类型、节点特征向量中的任意一个或者组合作为学习特征,以所述学习特征和程序样本的分类标签作为分类模型或神经网络的输入数据,进行分类模型或神经网络训练得到并行性检测模型,训练后的并行性检测模型的输入数据为所述学习特征,输出数据对应分类标签。
其中,上下文流程图中包含节点与边。通过对所有节点使用类比测试评估相似度,将节点类型分为数据种类、操作、转换和数据结构四个大类,每个大类再细分为不同的小类。每个节点通过匹配正则表达式的方式对应唯一的一个细分类,构成该节点的节点类型。inst2vec是一个包含丰富节点种类的向量空间,通过使用查表的方式,从该向量空间中获取每个节点的唯一特征向量表示。
可选地,步骤3-2中所述上下文流程图中包含节点与边;
节点类型的获取过程为:对所有节点使用类比测试评估相似度,基于相似度将节点类型分为数据种类、操作、转换和数据结构四个大类,每个大类再细分为不同的小类;然后,每个节点再通过匹配正则表达式的方式对应唯一的一个小分类,构成该节点的节点类型;
节点的特征向量的获取过程为:从inst2vec向量空间中获取每个节点的唯一特征向量表示;
所述inst2vec向量空间是一个包含若干节点种类的向量空间。
可选地,步骤1中程序样本的获取过程如下:
步骤1-1:获取源代码;
步骤1-2:识别所述源代码中的循环片段,若循环片段的数量为两个或两个以上,提取源代码中的每个循环片段,并保留剩余片段,执行步骤1-3,否则,将所述源代码作为程序样本;
步骤1-3:针对每个循环片段,将循环片段以原位置***剩余片段中重构程序得到程序样本。
可选地,步骤4中基于所述并行性检测模型检测目标程序是否能被并行化的过程为:
步骤4-1:获取目标程序的源代码;
步骤4-2:识别所述目标程序的源代码中的循环片段,若循环片段的数量为两个或两个以上,执行步骤4-3;否则,执行步骤4-5;
步骤4-3:提取所述目标程序的源代码中的每个循环片段,并保留剩余片段;
步骤4-4:针对步骤4-3中的每个循环片段,将循环片段以原位置***步骤4-3的剩余片段中重构程序,再执行步骤4-5;
步骤4-5:构建每个程序的图结构;
步骤4-6:基于程序的图结构,输入对应学习特征至所述并行性检测模型得到检测结果;其中,所述检测结果为分类标签,表示所述程序是否能被并行化,所述学习特征是基于图结构生成。
第二方面,本发明提供的一种基于上述方法的***,其包括:
程序样本获取模块:用于获取程序样本;
分类模块,用于确定程序样本的分类标签;
图结构生成模块,用于构建每个程序样本的图结构;
并行性检测模型生成模块,用于基于程序样本的图结构及其分类标签训练分类模型或神经网络得到并行性检测模型;
检测模块,用于基于所述并行性检测模型检测目标程序是否能被并行化。
可选地,所述***还包括:源代码获取模块、提取模块;
其中,所述源代码获取模块,用于获取源代码;
所述提取模块,用于提取源代码中的每个循环片段,并保留剩余片段;
所述程序样本获取模块针对每个循环片段,将循环片段以原位置***剩余片段中重构程序得到程序样本。
第三方面,本发明提供一种终端,其包括一个或多个处理器和存储器,所述存储器存储了计算机程序,所述计算机程序被处理器调用以实现:
一种基于并行性检测模型的串行程序的并行性检测方法的步骤。
第四方面,本发明提供一种可读存储介质,其存储了计算机程序,所述计算机程序被处理器调用以实现:
一种基于并行性检测模型的串行程序的并行性检测方法的步骤。
有益效果
本发明提供的一种基于并行性检测模型的串行程序的并行性检测方法,以包含唯一循环片段的程序为样本,创造性地选择用图结构表征程序的并行特征,进而训练分类模型或神经网络得到并行性检测模型,用于实现任一程序的并行性检测。其中,图结构中节点和节点之间的边可以更加有效表征程序中的依赖关系,而控制依赖和数据依赖是否存在决定了程序能否被并行化,因此,本发明创造性的选择图结构表征并行特征,并进行模型训练可以得到用于程序并行性检测的高精度分类模型。
本发明进一步的优选方案中选择上下文流程图的图结构,这是考虑到对于计算机程序而言,控制依赖和数据依赖是否存在决定了程序能否被并行化。一般而言,控制依赖通过分析控制流程图得出,同时数据依赖通过分析数据流程图得出。上下文流程图基于数据流程图和控制流程图而构建,其相较于其他图结构具有更强大的程序依赖性表示能力,更加符合并行性特征的特性。
此外,本发明相较于现有的并行性检测具有如下优势:
1.相对于基于规则的静态分析而言,本发明通过使用源程序到并行性识别结果的端到端处理,使得任何人员都不再需要了解具体的并行编程模型理论以及计算机底层知识。同时,将识别过程交给机器处理,很大程度的减少了人工成本。
2.相对于动态分析而言,本发明通过将源程序静态地构建为抽象的图表示,不需要获取运行时信息,不需要执行程序,因此除了降低并行编程的难度,还降低了程序分析的编译以及执行时间开销。
3.相对于程序并行化工具而言,本发明可以使用训练好的神经网络模型对程序的图结构进行预测。模型构建所需的时间远少于并行化工具分析的时间,效率较高,而且不再有程序分析限制。因为本发明冲破了工具在分析结构复杂、规模较大程序时导致的局限性,消除了条件约束,增强了对不同规模以及执行模式的程序的分析范围。
附图说明
图1是本发明实施例1提供的所述并行性检测方法的流程示意图;
图2是本发明实施例提供的数据集生成器的生成架构图;
图3是本发明实施例提供的提取程序流程图;
图4是本发明实施例提供的重构程序流程图;
图5是本发明实施例提供的预处理流程图;
图6是本发明实施例1提供的基于图神经网络学习的主要框架图。
具体实施方式
本发明提供的一种基于并行性检测模型的串行程序的并行性检测方法,用于实现程序的并行性检测。其中,引入神经网络/分类模型构建并行性检测模型,使用端到端的基于数据驱动的深度学习方法从数据集中自动学习代码潜在的特征,具体以图结构来表征程序的并行性特征,即将源程序构建为图结构来表示,最终实现从源程序到并行性识别结果的端到端处理。下面将结合实施例对本发明做进一步的说明。
实施例1:
如图1所示,本实施例提供的一种基于并行性检测模型的串行程序的并行性检测方法,其主要分为两个阶段,第一阶段是源程序数据集到源程序嵌入表示的处理。该阶段接收源代码为输入,并将其转换为上下文流程图,包括重构、分类、编译以及构建四个步骤。第二个阶段是对从第一个阶段构建的图结构进行预处理,得到一个名为inst2vec的向量表示空间以及使用类比测试得到的节点分类信息,并结合第一阶段构建的图结构、分类标签协同输入图神经网络,经过图神经网络模型的自动学习,得到并行性检测模型。具体的,本实施例提供的所述方法包括以下步骤:
S1:获取源代码。其中,本发明为了训练出并行性检测模型,获取的各类源代码中存在可被并行性的程序和不可被并行性的程序。
在一些实现方式中,面向程序并行性以及深度学习所需数据集的特点,采取借助现有自动并行化工具的方式设计数据生成器,最后使用该数据生成器生成所需的数据集,本实施例中最终生成基于上下流程图表示的新数据集。
S2:识别所述源代码中的循环片段,若循环片段的数量为两个或两个以上,提取源代码中的每个循环片段,并保留剩余片段,执行步骤S3;否则,将源代码作为程序样本。
其中,本发明将每个循环片段提取出来进行后续重构,使得重构后的程序仅仅存在唯一一个循环片段。参照如图3所示的提取流程,具体为:
A1:基于源码文件读取源文件中所有行,生成列表文lines_list,进一步生成字符串文件lines_str;
A2:基于所述列表文件lines_list提取含有函数信息,生成函数信息列表fun_list;
A3:基于所述函数信息列表fun_list读取函数对象,更新字符串文件lines_str;
A4:基于字符串文件lines_str提取循环片段,生成循环片段列表for_list;其中,循环片段为for循环;
A5:基于函数信息列表fun_list判断是否已经完全遍历所有函数,若没有,返回步骤A3,读取下一个函数对象。
至此,本发明利用上述过程可以将源代码中所有的循环片段提取出来。
S3:针对每个循环片段,将循环片段以原位置***剩余片段中重构程序得到程序样本,并识别每个程序样本的类别。
其中,本步骤的目的在于重构程序,使得重构后的程序仅仅包含一个循环片段,如图4所示,重构过程如下:
B1:基于字符串文件lines_str,更新头文件搜索路径;
B2:基于循环片段列表for_list,提取一个循环片段;
B3:使用“#pragma scop”和“#pragma endscop”标注循环片段;
B4:基于所述函数信息列表fun_list将循环片段还原至对应函数;
B5:将函数还原至源代码中;
B6:获取新的文件名称,并存储新文件。至此,针对一个循环片段重构了一个程序,重构后的程序仅仅包含一个循环片段。
B7:基于所述循环片段列表for_list判断是否已经遍历了所有循环片段,若没有,返回步骤B2,处理下一个循环片段。
本实施例中待重构程序后,采用Pluto分析多面体依赖工具识别重构程序是否可以被并行,进而完成分类,设定分类标签,具体是通过检测程序中是否包含OpenMP-标注。应当理解,其他可行的实施例中,可以采用其他现有识别工具识别程序是否可以被并行,其根据程序样本来选择,本发明对此不进行具体的限定。
S4:构建每个程序样本的图结构。
本实施例中,实质上为构建每个程序样本的上下文流程图。其他可行的实施例中,可以选择其他类型图结构表征程序特点,譬如,控制流程图、数据流程图、抽象语法树等。
其中,本实施例具体是提取每个程序样本文件的控制流和数据流,再基于IR构建上下文流程图。由于构建程序的上下文流程图的实现过程是现有技术,因此,本发明对此不进行具体的陈述。其中,上下文流程图中包含节点和边,通过对所有节点使用类比测试评估相似度,将节点类型分为数据种类、操作、转换和数据结构四个大类,每个大类再细分为不同的小类。每个节点通过匹配正则表达式的方式对应唯一的一个细分类,构成该节点的节点类型。inst2vec是一个包含丰富节点种类的向量空间,通过使用查表的方式,从该向量空间中获取每个节点的唯一特征向量表示。
至此,本发明将程序样本以上下文流程图表示,构建出新数据集,充分利用图的强大表达能力,构建最适配的并行性程序的图结构,将源代码数据集映射到向量空间。
S5:对每个程序的上下文流程图进行预处理。其中,如图5所示,预处理的过程如下:
C1:从数据集中读取一个XFG图(上下文流程图),获得其节点列表;
C2:基于节点列表,确定每个节点的类型,存储在node_tag列表中;
C3:通过查表的方式,确定每个节点的特征向量,存储在node_feature列表中;
C4:将XFG(上下文流程图)的节点和边用数字的形式表示,其中,边由其连接的两个节点组成的有序对表示。
应当理解,本步骤对上下文流程图进行预处理后,得到包含上下文流程图、节点分类、节点特征,并协同原数据的分类标签构成新数据结构。
S6:基于程序样本的上下文流程图及其分类标签训练图神经网络得到并行性检测模型。本实施例中将上下文流程图、节点分类、节点特征、程序样本的分类标签作为输入数据,训练后的并行性检测模型的输入数据为上下文流程图、节点分类、节点特征,输出数据为预测数据,对应分类标签。应当理解,网络训练过程为现有技术实现过程,因此,对其不进行具体的陈述。其他可行的实施例中,可以选择上下文流程图、节点分类、节点特征的部分组合,作为图神经网络的训练输入数据(学习特征)。甚至,其他可行的实施例中,若利用其他类型图结构,还可以选用其他图特征、或直接将图作为图神经网络的训练输入数据。以及可以选用其他深度学习、机器学习的网络模型构建并行性检测模型。
S7:基于所述并行性检测模型检测目标程序是否能被并行化,所述目标程序为待并行化鉴别的程序。
其中,若目标程序就是仅包含一个循环片段的程序,则按照前述方法提取其图结构、节点类型、节点特征输入至训练好的并行性检测模型,即可得到识别结果,即是否可以被并行性的分类结果。若目标程序是包含多个循环片段的程序,则按照前述方法提取、重构程序,再生成重构程序的上下文流程图,将上下文流程图、节点类型、节点特征输入训练好的并行性检测模型,即可得到检测结果。
需要说明的是,本实施例中程序样本是从源代码中提取重构的,其他可行的实施例中,并不局限于此方式,只要其满足包含唯一的循环片段。实施例2:
基于实施例1提供的一种基于并行性检测模型的串行程序的并行性检测方法,本实施例提供一种基于所述方法的***,包括:源代码获取模块、提取模块、程序样本获取模块、分类模块、图结构生成模块、并行性检测模型生成模块。
其中,所述源代码获取模块用于获取源代码;所述提取模块用于提取源代码中的每个循环片段,并保留剩余片段;程序样本获取模块针对每个循环片段,将循环片段以原位置***剩余片段中重构程序得到程序样本。分类模块用于确定程序样本的分类标签;图结构生成模块用于构建每个程序样本的图结构;并行性检测模型生成模块用于基于程序样本的图结构及其分类标签训练分类模型或神经网络得到并行性检测模型;检测模块,用于基于所述并行性检测模型检测目标程序是否能被并行化。
其他可行的实施例中,程序样本获取模块若可以采用其他方式得到,则该***可以不包含源代码获取模块和提取模块。
需要说明的是,各个模块的实现过程可以参照实施例1中对应步骤实现过程,在此不再赘述。应当理解,上述单元模块的具体实现过程参照方法内容,本发明在此不进行具体的赘述,且上述功能模块单元的划分仅仅是一种逻辑功能的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。同时,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
实施例3:
本实施例提供一种终端,其包括一个或多个处理器;存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现:一种基于并行性检测模型的串行程序的并行性检测方法的步骤。
该终端还包括:通信接口,用于与外界设备进行通信,进行数据交互传输。
其中,存储器可能包含高速RAM存储器,也可能还包括非易失性除颤器,例如至少一个磁盘存储器。
如果存储器、处理器和通信接口独立实现,则存储器、处理器和通信接口可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构总线,外部设备互联总线或扩展工业标准体系结构总线等。所述总线可以分为地址总线、数据总线、控制总线等。
可选的,在具体实现上,如果存储器、处理器和通信接口集成在一块芯片上,则存储器、处理器即通信接口可以通过内部接口完成相互之间的通信。
应当理解,在本发明实施例中,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
实施例4:
本实施例提供一种可读存储介质,其存储了计算机程序,所述计算机程序被处理器调用以实现:一种基于并行性检测模型的串行程序的并行性检测方法的步骤。
所述可读存储介质为计算机可读存储介质,其可以是前述任一实施例所述的控制器的内部存储单元,例如控制器的硬盘或内存。所述可读存储介质也可以是所述控制器的外部存储设备,例如所述控制器上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述可读存储介质还可以既包括所述控制器的内部存储单元也包括外部存储设备。所述可读存储介质用于存储所述计算机程序以及所述控制器所需的其他程序和数据。所述可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,本发明提供的所述方法以“数据驱动方法”为出发点,为了弥补现有并行计算领域内数据集不适配机器学习方法数据集的问题,构建数据集生成器,生成统一标准的用于串行程序并行性检测的程序数据集。以端到端、不需人为制造算法规则为出发点,基于串行程序的图结构,利用图神经网络进行并行性检测。
需要强调的是,本发明所述的实例是说明性的,而不是限定性的,因此本发明不限于具体实施方式中所述的实例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,不脱离本发明宗旨和范围的,不论是修改还是替换,同样属于本发明的保护范围。
Claims (10)
1.一种基于并行性检测模型的串行程序的并行性检测方法,其特征在于:包括以下步骤:
步骤1:获取程序样本及其分类标签,其中,每个程序样本包含唯一的循环片段,所述分类标签表示所述程序样本能否被并行化;
步骤2:构建每个程序样本的图结构;
步骤3:基于程序样本的图结构及其分类标签训练分类模型或神经网络得到并行性检测模型;
步骤4:基于所述并行性检测模型检测目标程序是否能被并行化,所述目标程序为待并行化鉴别的程序。
2.根据权利要求1所述的方法,其特征在于:步骤2中构建每个程序样本的上下文流程图,以所述上下文流程图作为程序样本的图结构。
3.根据权利要求2所述的方法,其特征在于:步骤3中基于程序样本的图结构及其分类标签训练分类模型或神经网络得到并行性检测模型的过程,如下:
步骤3-1:基于程序样本的上下文流程图,采用类比测试方法获取节点类型以及基于inst2vec向量空间获取节点特征向量;
步骤3-2:将程序样本对应的上下文流程图、节点类型、节点特征向量中的任意一个或者组合作为学习特征,以所述学习特征和程序样本的分类标签作为分类模型或神经网络的输入数据,进行分类模型或神经网络训练得到并行性检测模型,训练后的并行性检测模型的输入数据为所述学习特征,输出数据对应分类标签。
4.根据权利要求1所述的方法,其特征在于:步骤3-2中所述上下文流程图中包含节点与边;
节点类型的获取过程为:对所有节点使用类比测试评估相似度,基于相似度将节点类型分为数据种类、操作、转换和数据结构四个大类,每个大类再细分为不同的小类;然后,每个节点再通过匹配正则表达式的方式对应唯一的一个小分类,构成该节点的节点类型;
节点的特征向量的获取过程为:从inst2vec向量空间中获取每个节点的唯一特征向量表示;
所述inst2vec向量空间是一个包含若干节点种类的向量空间。
5.根据权利要求1所述的方法,其特征在于:步骤1中程序样本的获取过程如下:
步骤1-1:获取源代码;
步骤1-2:识别所述源代码中的循环片段,若循环片段的数量为两个或两个以上,提取源代码中的每个循环片段,并保留剩余片段,执行步骤1-3,否则,将所述源代码作为程序样本;
步骤1-3:针对每个循环片段,将循环片段以原位置***剩余片段中重构程序得到程序样本。
6.根据权利要求5所述的方法,其特征在于:步骤4中基于所述并行性检测模型检测目标程序是否能被并行化的过程为:
步骤4-1:获取目标程序的源代码;
步骤4-2:识别所述目标程序的源代码中的循环片段,若循环片段的数量为两个或两个以上,执行步骤4-3;否则,执行步骤4-5;
步骤4-3:提取所述目标程序的源代码中的每个循环片段,并保留剩余片段;
步骤4-4:针对步骤4-3中的每个循环片段,将循环片段以原位置***步骤4-3的剩余片段中重构程序,再执行步骤4-5;
步骤4-5:构建每个程序的图结构;
步骤4-6:基于程序的图结构,输入对应学习特征至所述并行性检测模型得到检测结果;其中,所述检测结果为分类标签,表示所述程序是否能被并行化,所述学习特征是基于图结构生成。
7.一种基于权利要求1-6任一项所述方法的***,其特征在于:包括:
程序样本获取模块,用于获取程序样本;
分类模块,用于确定程序样本的分类标签;
图结构生成模块,用于构建每个程序样本的图结构;
并行性检测模型生成模块,用于基于程序样本的图结构及其分类标签训练分类模型或神经网络得到并行性检测模型;
检测模块,用于基于所述并行性检测模型检测目标程序是否能被并行化。
8.根据权利要求7所述的***,其特征在于:还包括:源代码获取模块、提取模块;
其中,所述源代码获取模块,用于获取源代码;
所述提取模块,用于提取源代码中的每个循环片段,并保留剩余片段;
所述程序样本获取模块针对每个循环片段,将循环片段以原位置***剩余片段中重构程序得到程序样本。
9.一种终端,其特征在于:包括一个或多个处理器和存储器,所述存储器存储了计算机程序,所述计算机程序被处理器调用以实现:
权利要求1-6任一项所述方法的步骤。
10.一种可读存储介质,其特征在于:存储了计算机程序,所述计算机程序被处理器调用以实现:
权利要求1-6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110838961.XA CN113553266A (zh) | 2021-07-23 | 2021-07-23 | 一种基于并行性检测模型的串行程序的并行性检测方法、***、终端及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110838961.XA CN113553266A (zh) | 2021-07-23 | 2021-07-23 | 一种基于并行性检测模型的串行程序的并行性检测方法、***、终端及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113553266A true CN113553266A (zh) | 2021-10-26 |
Family
ID=78132658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110838961.XA Pending CN113553266A (zh) | 2021-07-23 | 2021-07-23 | 一种基于并行性检测模型的串行程序的并行性检测方法、***、终端及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113553266A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120131309A1 (en) * | 2010-11-18 | 2012-05-24 | Texas Instruments Incorporated | High-performance, scalable mutlicore hardware and software system |
CN102707955A (zh) * | 2012-05-18 | 2012-10-03 | 天津大学 | 采用MPI和OpenMP编程实现支持向量机方法 |
CN110377525A (zh) * | 2019-07-25 | 2019-10-25 | 哈尔滨工业大学 | 一种基于运行时特征和机器学习的并行程序性能预测*** |
CN110806897A (zh) * | 2019-10-29 | 2020-02-18 | 中国人民解放军战略支援部队信息工程大学 | 面向多代码粒度的向量并行性发掘方法 |
-
2021
- 2021-07-23 CN CN202110838961.XA patent/CN113553266A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120131309A1 (en) * | 2010-11-18 | 2012-05-24 | Texas Instruments Incorporated | High-performance, scalable mutlicore hardware and software system |
CN102707955A (zh) * | 2012-05-18 | 2012-10-03 | 天津大学 | 采用MPI和OpenMP编程实现支持向量机方法 |
CN110377525A (zh) * | 2019-07-25 | 2019-10-25 | 哈尔滨工业大学 | 一种基于运行时特征和机器学习的并行程序性能预测*** |
CN110806897A (zh) * | 2019-10-29 | 2020-02-18 | 中国人民解放军战略支援部队信息工程大学 | 面向多代码粒度的向量并行性发掘方法 |
Non-Patent Citations (1)
Title |
---|
YUANYUAN SHEN, MANMAN PENG ∗, SHILING WANG, QIANG WU: "Towards parallelism detection of sequential programs with graph", 《FUTURE GENERATION COMPUTER SYSTEMS》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111488174B (zh) | 应用程序接口文档的生成方法、装置、计算机设备及介质 | |
US7340475B2 (en) | Evaluating dynamic expressions in a modeling application | |
US20130291113A1 (en) | Process flow optimized directed graph traversal | |
WO2018226598A1 (en) | Method and system for arbitrary-granularity execution clone detection | |
EP2912548B1 (en) | Partial vectorization compilation system | |
US8959646B2 (en) | Automated detection and validation of sanitizers | |
US20050246353A1 (en) | Automated transformation of unstructured data | |
EP4120068A1 (en) | Intent-based machine programming | |
US11327722B1 (en) | Programming language corpus generation | |
CN116400901B (zh) | 一种Python代码自动生成方法及*** | |
Rau et al. | Transferring tests across web applications | |
Abdurazik et al. | Using coupling-based weights for the class integration and test order problem | |
CN110750297B (zh) | 一种基于程序分析和文本分析的Python代码参考信息生成方法 | |
Mendonça et al. | Automatic insertion of copy annotation in data-parallel programs | |
Cummins | Deep learning for compilers | |
CN114692600A (zh) | 使用子例程图谱进行形式语言处理的方法和*** | |
Cristiá et al. | A language for test case refinement in the Test Template Framework | |
CN112965838B (zh) | 并发程序的数据竞争检查方法及装置 | |
Jiang et al. | Elevating jupyter notebook maintenance tooling by identifying and extracting notebook structures | |
CN113553266A (zh) | 一种基于并行性检测模型的串行程序的并行性检测方法、***、终端及可读存储介质 | |
CN113076089B (zh) | 一种基于对象类型的api补全方法 | |
EP3965024A1 (en) | Automatically labeling functional blocks in pipelines of existing machine learning projects in a corpus adaptable for use in new machine learning projects | |
Agarwal et al. | Structured Code Representations Enable Data-Efficient Adaptation of Code Language Models | |
US11514267B2 (en) | System and method for performing test data management | |
Robinson et al. | APRT–Another Pattern Recognition Tool |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20211026 |
|
WD01 | Invention patent application deemed withdrawn after publication |