CN110795106B - 程序向量化过程中动静结合的内存别名分析处理方法及装置 - Google Patents

程序向量化过程中动静结合的内存别名分析处理方法及装置 Download PDF

Info

Publication number
CN110795106B
CN110795106B CN201911040673.9A CN201911040673A CN110795106B CN 110795106 B CN110795106 B CN 110795106B CN 201911040673 A CN201911040673 A CN 201911040673A CN 110795106 B CN110795106 B CN 110795106B
Authority
CN
China
Prior art keywords
memory
alias
state
memory reference
program
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.)
Active
Application number
CN201911040673.9A
Other languages
English (en)
Other versions
CN110795106A (zh
Inventor
徐金龙
陶小涵
刘晓楠
李亚朋
李颖颖
黄亮明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Information Engineering University of PLA Strategic Support Force
Original Assignee
Information Engineering University of PLA Strategic Support Force
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Information Engineering University of PLA Strategic Support Force filed Critical Information Engineering University of PLA Strategic Support Force
Priority to CN201911040673.9A priority Critical patent/CN110795106B/zh
Publication of CN110795106A publication Critical patent/CN110795106A/zh
Application granted granted Critical
Publication of CN110795106B publication Critical patent/CN110795106B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明属于高性能计算并行化处理技术领域,特别涉及一种程序向量化过程中动静结合的内存别名分析处理方法及装置,包含:针对向量化过程中循环体内的所有内存引用,构建待测内存引用对集合;程序编译阶段,通过静态分析确定待测内存引用对别名状态,该待测内存引用对别名状态分为别名状态、非别名状态和不确定状态;针对不确定状态,在程序运行过程中动态检测内存引用对的别名状态,进而判定内存引用对是否存在依赖关系。本发明通过动静结合的别名分析和处理,实现向量化过程中对别名的有效预处理,并进一步通过代码多版本等生成不存在别名的多代码版本,降低依赖分析的复杂度,为程序的向量并行化提供支撑,具有较好的应用前景。

Description

程序向量化过程中动静结合的内存别名分析处理方法及装置
技术领域
本发明属于高性能计算并行化处理技术领域,特别涉及一种程序向量化过程中动静结合的内存别名分析处理方法及装置。
背景技术
并行程序是提高程序性能的有效手段,它通过多个执行部件同时执行任务来加快程序运行速度。程序并行优化是指将串行程序通过分析变换生成更高效的并行程序,是一种语句的重排序变换,程序变换需要保证其合法性,这个合法性是由依赖关系来保证的。指针是一种常用的语法特征,指针参数传递、堆空间的使用等指针操作增加了程序设计的灵活性和处理能力。同时,也给程序分析带来了困难,即,指针的指向位置难以精确确定。多个指针指向同一块内存,可以互相称之为内存的别名。当程序中存在大量的指针时,如果无法确定指针指向的内存块是否有重叠,会保守地将指针作为别名来处理。别名引起了程序语句间的大量依赖,而依赖关系决定了程序是否能够并行执行。程序开发手段的多样化,编程技巧的多样化和实际应用的复杂化,导致我们实际得到的程序往往存在大量的别名,向量化作为一种语句重排序变换,其并行性发掘不希望受别名影响,因此,精确分析别名和尽量消除别名对于程序的向量并行优化是非常重要的。
发明内容
为此,本发明提供一种程序向量化过程中动静结合的内存别名分析处理方法及装置,以实现简化或消除别名对向量并行性发掘的影响。
按照本发明所提供的设计方案,一种程序向量化过程中动静结合的内存别名分析处理方法,包含:
针对向量化过程中循环体内的所有内存引用,构建待测内存引用对集合;
程序编译阶段,通过静态分析确定待测内存引用对别名状态,该待测内存引用对别名状态分为别名状态、非别名状态和不确定状态;
针对不确定状态,在程序运行过程中动态检测内存引用对的别名状态;并针对程序编译阶段和运行过程中别名状态的内存引用对,判定该内存引用对存在依赖关系,针对非别名状态的内存引用对,则判定该内存引用对无依赖关系。
作为本发明内存别名分析处理方法,进一步地,收集向量化过程中循环体内的所有内存引用,将其两两组合,得到待测内存引用对,其中,两两组合中,至少包含指针引用和内存写操作。
作为本发明内存别名分析处理方法,进一步地,收集循环体内的内存引用,该内存引用包含指针和内存写操作。
作为本发明内存别名分析处理方法,进一步地,动态检测内存引用对的别名状态中,通过判定内存引用指针对应内存块是否重叠,以实现在程序运行过程中对待测内存引用对的别名状态检测。
作为本发明内存别名分析处理方法,进一步地,动态检测中,针对别名状态和非别名状态生成对应的代码版本;针对别名版本和别名状态的内存引用对,判定该内存引用对存在依赖关系,针对非别名版本和非别名状态的内存引用对,则判定该内存引用对无依赖关系。
作为本发明内存别名分析处理方法,进一步地,向量化框架中,通过设定是否满足迭代空间访存的最大跨度的判定条件,以检测内存引用指针对应内存块是否重叠。
作为本发明内存别名分析处理方法,进一步地,动态检测中若存在多个待测内存引用对时,则将每个待测内存引用对的判定条件通过逻辑与运算进行连接,以实现动态检测中多个待测内存引用对别名状态的判定。
更进一步地,本发明还提供一种程序向量化过程中动静结合的内存别名分析处理装置,包含:数据收集模块、静态分析模块和动态分析模块,其中,
数据收集模块,用于针对向量化过程中循环体内的所有内存引用,构建待测内存引用对集合;
静态分析模块,用于在程序编译阶段,通过静态分析确定待测内存引用对别名状态,该待测内存引用对别名状态分为别名状态、非别名状态和不确定状态;
动态分析模块,用于针对静态分析模块中的不确定状态,在程序运行过程中动态检测内存引用对的别名状态;并针对程序编译阶段和运行过程中别名状态的内存引用对,判定该内存引用对存在依赖关系,针对非别名状态的内存引用对,则判定该内存引用对无依赖关系。
更进一步地,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的程序向量化过程中动静结合的内存别名分析处理的步骤。
更进一步地,本发明还提供服务器,包含存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上述的程序向量化过程中动静结合的内存别名分析处理的步骤。
本发明的有益效果:
本发明通过动静结合的别名分析和处理,实现向量化过程中对别名的有效预处理,通过静态别名检测、运行时别名动态检测以及代码多版本等生成不存在别名的代码版本,从而降低依赖分析的复杂度,为程序的向量并行化提供支撑;可以有效提升程序代码编译器的向量并行识别能力,有利于编译器自动生成更高效的SIMD向量并行代码,能够提升CPU中SIMD部件的并行优势,进而提高程序的运行性能,保证程序的运行效率,具有较好的应用前景。
附图说明:
图1为本发明实施例中内存别名分析处理方法流程图;
图2为本发明实施例中内存别名示意图;
图3为本发明实施例中动静结合内存别名检测原理示意;
图4为本发明实施例中内存别名分析处理装置示意图。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
指针参数传递、堆空间的使用等指针操作中,指针的指向位置难以精确确定。多个指针指向同一块内存,可以互相称之为内存的别名,如图2所示。当程序中存在大量的指针时,如果无法确定指针指向的内存块是否有重叠,会保守地将指针作为别名来处理。别名引起程序语句间的大量依赖,而依赖关系决定程序是否能够并行执行。为提升SIMD程序向量并行化效率,本发明实施例,参见图1所示,提供一种程序向量化过程中动静结合的内存别名分析处理方法,包含如下内容:
S101)针对向量化过程中循环体内的所有内存引用,构建待测内存引用对集合;
S102)程序编译阶段,通过静态分析确定待测内存引用对别名状态,该待测内存引用对别名状态分为别名状态、非别名状态和不确定状态;
S103)针对不确定状态,在程序运行过程中动态检测内存引用对的别名状态;并针对程序编译阶段和运行过程中别名状态的内存引用对,判定该内存引用对存在依赖关系,针对非别名状态的内存引用对,则判定该内存引用对无依赖关系。
静态别名检测技术,是指在编译阶段进行静态的别名分析,该阶段仅能分析出确定的非别名引用。运行时动态别名检测技术,是指在程序运行时刻自动检测内存引用的别名情况。通过动静结合的别名分析和处理,实现向量化过程中对别名的有效预处理,通过静态别名检测及运行时别名动态检测,降低依赖分析的复杂度,为程序的向量并行化提供支撑。
作为本发明实施例中的内存别名分析处理方法,进一步地,收集向量化过程中循环体内的所有内存引用,将其两两组合,得到待测内存引用对,其中,两两组合中,至少包含指针引用和内存写操作。
作为本发明实施例中的内存别名分析处理方法,进一步地,收集循环体内的内存引用,该内存引用包含指针和内存写操作。
循环体中收集所有的内存引用,包括数组和指针,将收集到的内存引用两两组合(至少包含一个指针引用,同时至少包含一个内存写操作),得到待测内存引用对。如代码示例1中的程序段,其待测内存引用对为{ptrA-ptrB,ptrA-C,ptrA-ptrC,ptrB-ptrC,ptrB-C,ptrC-C}
Figure BDA0002252734880000051
通过静态分析访存重叠情况,将待测内存引用对分为三种情况:别名、非别名、不确定。代码示例1中互为别名的内存引用对有:ptrC-C,非别名的内存引用对有:ptrA-C,ptrA-ptrC,ptrB-ptrC,ptrB-C,不确定的内存引用对有:ptrA-ptrB。对于确定为别名的情况,需要进一步分析别名指向的距离等信息,对于非别名的情况可直接判定该内存引用对不存在依赖。
作为本发明实施例中的内存别名分析处理方法,进一步地,动态检测内存引用对的别名状态中,通过判定内存引用指针对应内存块是否重叠,以实现在程序运行过程中对待测内存引用对的别名状态检测。
对于静态分析难以给出结果的内存引用对,生成运行时检测代码,即在运行时检测两个指针对应地内存块是否有重叠。如代码示例2,其中的A和B可能是别名,实际上只需要保证在循环的迭代空间内A和B无访存重叠即可保证它们不是别名。
Figure BDA0002252734880000061
作为本发明实施例中的内存别名分析处理方法,进一步地,动态检测中,针对别名状态和非别名状态生成对应的代码版本;针对别名版本和别名状态的内存引用对,判定该内存引用对存在依赖关系,针对非别名版本和非别名状态的内存引用对,则判定该内存引用对无依赖关系。
参见图3所示,针对动态别名检测结果,实施代码多版本,即针对别名或非别名的情况分别生成对应的代码版本。别名版本中的相应内存引用对存在依赖,需要进一步分析其依赖距离;非别名版本中的相应内存引用对不存在依赖,可简化依赖图,利于进一步向量化。
作为本发明实施例中的内存别名分析处理方法,进一步地,向量化框架中,通过设定是否满足迭代空间访存的最大跨度的判定条件,以检测内存引用指针对应内存块是否重叠。
如代码示例2,其中的A和B可能是别名,实际上只需要保证在循环的迭代空间内A和B无访存重叠即可保证它们不是别名。迭代空间内A和B访存的最大跨度为16*4,因此无访存重叠的条件,即运行时检测条件为(|A-B|>=16*4)。在实际程序中,可能存在大量的指针引用,每个指针对之间都可能存在别名,插入的运行时检测代码较多,可能会抵消掉向量化的性能提升。对于迭代次数小的循环,可不做处理。
作为本发明实施例中的内存别名分析处理方法,进一步地,动态检测中若存在多个待测内存引用对时,则将每个待测内存引用对的判定条件通过逻辑与运算进行连接,以实现动态检测中多个待测内存引用对别名状态的判定。
更进一步地,本发明实施例还提供一种程序向量化过程中动静结合的内存别名分析处理装置,参见图4所示,包含:数据收集模块101、静态分析模块102和动态分析模块103,其中,
数据收集模块101,用于针对向量化过程中循环体内的所有内存引用,构建待测内存引用对集合;
静态分析模块102,用于在程序编译阶段,通过静态分析确定待测内存引用对别名状态,该待测内存引用对别名状态分为别名状态、非别名状态和不确定状态;
动态分析模块103,用于针对静态分析模块中的不确定状态,在程序运行过程中动态检测内存引用对的别名状态;并针对程序编译阶段和运行过程中别名状态的内存引用对,判定该内存引用对存在依赖关系,针对非别名状态的内存引用对,则判定该内存引用对无依赖关系。
更进一步地,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的程序向量化过程中动静结合的内存别名分析处理的步骤。
更进一步地,本发明还提供服务器,包含存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上述的程序向量化过程中动静结合的内存别名分析处理的步骤。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (8)

1.一种程序向量化过程中动静结合的内存别名分析处理方法,其特征在于,包含:
针对向量化过程中循环体内的所有内存引用,构建待测内存引用对集合;其中,收集向量化过程中循环体内的所有内存引用,将其两两组合,得到待测内存引用对,两两组合中至少包含指针引用和内存写操作;
程序编译阶段,通过静态分析确定待测内存引用对别名状态,该待测内存引用对别名状态分为别名状态、非别名状态和不确定状态;
针对不确定状态,在程序运行过程中动态检测内存引用对的别名状态;并针对程序编译阶段和运行过程中别名状态的内存引用对,判定该内存引用对存在依赖关系,针对非别名状态的内存引用对,则判定该内存引用对无依赖关系。
2.根据权利要求1所述的程序向量化过程中动静结合的内存别名分析处理方法,其特征在于,动态检测内存引用对的别名状态中,通过判定内存引用指针对应内存块是否重叠,以实现在程序运行过程中对待测内存引用对的别名状态检测。
3.根据权利要求2所述的程序向量化过程中动静结合的内存别名分析处理方法,其特征在于,动态检测中,针对别名状态和非别名状态生成对应的代码版本;针对别名版本和别名状态的内存引用对,判定该内存引用对存在依赖关系,针对非别名版本和非别名状态的内存引用对,则判定该内存引用对无依赖关系。
4.根据权利要求2所述的程序向量化过程中动静结合的内存别名分析处理方法,其特征在于,通过设定是否满足迭代空间访存的最大跨度的判定条件,以检测内存引用指针对应内存块是否重叠。
5.根据权利要求4所述的程序向量化过程中动静结合的内存别名分析处理方法,其特征在于,动态检测中若存在多个待测内存引用对时,则将每个待测内存引用对的判定条件通过逻辑与运算进行连接,以实现动态检测中多个待测内存引用对别名状态的判定。
6.一种程序向量化过程中动静结合的内存别名分析处理装置,其特征在于,包含:数据收集模块、静态分析模块和动态分析模块,其中,
数据收集模块,用于针对向量化过程中循环体内的所有内存引用,构建待测内存引用对集合;其中,收集向量化过程中循环体内的所有内存引用,将其两两组合,得到待测内存引用对,两两组合中至少包含指针引用和内存写操作;
静态分析模块,用于在程序编译阶段,通过静态分析确定待测内存引用对别名状态,该待测内存引用对别名状态分为别名状态、非别名状态和不确定状态;
动态分析模块,用于针对静态分析模块中的不确定状态,在程序运行过程中动态检测内存引用对的别名状态;并针对程序编译阶段和运行过程中别名状态的内存引用对,判定该内存引用对存在依赖关系,针对非别名状态的内存引用对,则判定该内存引用对无依赖关系。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1~5任一项所述的程序向量化过程中动静结合的内存别名分析处理的步骤。
8.一种服务器,其特征在于,包含存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1~5任一项所述的程序向量化过程中动静结合的内存别名分析处理的步骤。
CN201911040673.9A 2019-10-30 2019-10-30 程序向量化过程中动静结合的内存别名分析处理方法及装置 Active CN110795106B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911040673.9A CN110795106B (zh) 2019-10-30 2019-10-30 程序向量化过程中动静结合的内存别名分析处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911040673.9A CN110795106B (zh) 2019-10-30 2019-10-30 程序向量化过程中动静结合的内存别名分析处理方法及装置

Publications (2)

Publication Number Publication Date
CN110795106A CN110795106A (zh) 2020-02-14
CN110795106B true CN110795106B (zh) 2022-10-04

Family

ID=69441908

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911040673.9A Active CN110795106B (zh) 2019-10-30 2019-10-30 程序向量化过程中动静结合的内存别名分析处理方法及装置

Country Status (1)

Country Link
CN (1) CN110795106B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161500A (ja) * 1997-11-28 1999-06-18 Hitachi Ltd 実行時依存解析を行う目的プログラムの生成方法
US6173444B1 (en) * 1997-03-24 2001-01-09 International Business Machines Corporation Optimizing compilation of pointer variables in the presence of indirect function calls
WO2010014981A2 (en) * 2008-08-01 2010-02-04 Leon Schwartz Method and apparatus for detection and optimization of presumably parallel program regions
US7836434B1 (en) * 2004-05-04 2010-11-16 Oracle America, Inc. Method and system for analyzing array access to a pointer that is referenced as an array
CN103440229A (zh) * 2013-08-12 2013-12-11 浪潮电子信息产业股份有限公司 一种基于mic架构处理器的向量化优化方法
CN105242929A (zh) * 2015-10-13 2016-01-13 西安交通大学 一种针对多核平台的二进制程序自动并行化的设计方法
CN108304218A (zh) * 2018-03-14 2018-07-20 郑州云海信息技术有限公司 一种汇编代码的编写方法、装置、系统和可读存储介质
CN109522126A (zh) * 2018-11-19 2019-03-26 中国人民解放军战略支援部队信息工程大学 面向共享内存多核结构中线程级并行的数据优化方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117490B2 (en) * 2001-10-11 2006-10-03 Intel Corporation Method and apparatus for doing program analysis
US9529574B2 (en) * 2010-09-23 2016-12-27 Apple Inc. Auto multi-threading in macroscalar compilers
US10216496B2 (en) * 2016-09-27 2019-02-26 International Business Machines Corporation Dynamic alias checking with transactional memory

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173444B1 (en) * 1997-03-24 2001-01-09 International Business Machines Corporation Optimizing compilation of pointer variables in the presence of indirect function calls
JPH11161500A (ja) * 1997-11-28 1999-06-18 Hitachi Ltd 実行時依存解析を行う目的プログラムの生成方法
US7836434B1 (en) * 2004-05-04 2010-11-16 Oracle America, Inc. Method and system for analyzing array access to a pointer that is referenced as an array
WO2010014981A2 (en) * 2008-08-01 2010-02-04 Leon Schwartz Method and apparatus for detection and optimization of presumably parallel program regions
CN103440229A (zh) * 2013-08-12 2013-12-11 浪潮电子信息产业股份有限公司 一种基于mic架构处理器的向量化优化方法
CN105242929A (zh) * 2015-10-13 2016-01-13 西安交通大学 一种针对多核平台的二进制程序自动并行化的设计方法
CN108304218A (zh) * 2018-03-14 2018-07-20 郑州云海信息技术有限公司 一种汇编代码的编写方法、装置、系统和可读存储介质
CN109522126A (zh) * 2018-11-19 2019-03-26 中国人民解放军战略支援部队信息工程大学 面向共享内存多核结构中线程级并行的数据优化方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Cache Storage Channels: Alias-Driven Attacks and Verified Countermeasures";Roberto Guanciale等;《2016 IEEE Symposium on Security and Privacy (SP)》;20160818;第38-55页 *
"一种面向向量化的动态指针别名分析框架";刘鹏等;《计算机科学》;20150331;第42卷(第3期);第26-30页 *
"不充分SIMD向量化技术研究";王琦等;《计算机应用与软件》;20180930;第35卷(第9期);第108-112页 *
"依赖距离主导的向量化方法研究";丁丽丽等;《计算机应用研究》;20170531;第34卷(第5期);第1311-1315页 *

Also Published As

Publication number Publication date
CN110795106A (zh) 2020-02-14

Similar Documents

Publication Publication Date Title
CN102360334B (zh) 一种动静态结合的软件安全性测试方法
US8627043B2 (en) Data parallel function call for determining if called routine is data parallel
US8255891B2 (en) Computer-implemented method and system for improved data flow analysis and optimization
KR102013582B1 (ko) 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법
US9329974B2 (en) Technologies for determining binary loop trip count using dynamic binary instrumentation
Wang Empowering web applications with webassembly: Are we there yet?
Qiu et al. Using reduced execution flow graph to identify library functions in binary code
US20100250564A1 (en) Translating a comprehension into code for execution on a single instruction, multiple data (simd) execution
US9182956B2 (en) Flattening conditional statements
Zhang et al. Intelligen: Automatic driver synthesis for fuzz testing
WO2013040271A1 (en) Vectorization of machine level scalar instructions in a computer program during execution of the computer program
CN108920149B (zh) 编译方法和编译装置
Gao et al. Semantic learning and emulation based cross-platform binary vulnerability seeker
Putta et al. Parallel replication-based points-to analysis
Nobre et al. Aspect-driven mixed-precision tuning targeting gpus
CN110795106B (zh) 程序向量化过程中动静结合的内存别名分析处理方法及装置
CN104239055A (zh) 检测软件代码复杂度的方法
Straznickas Towards a verified first-stage bootloader in Coq
Feng et al. Learning performance optimization from code changes for android apps
Guo et al. Graphspy: Fused program semantic embedding through graph neural networks for memory efficiency
Nobre et al. Impact of compiler phase ordering when targeting GPUs
Aumage et al. Detecting simdization opportunities through static/dynamic dependence analysis
Yu et al. Techniques for reducing the overhead of run-time parallelization
Singh et al. Snowpack: Efficient parameter choice for GPU kernels via static analysis and statistical prediction
Singh An Empirical Study of Programming Languages from the Point of View of Scientific Computing

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
GR01 Patent grant
GR01 Patent grant