CN110806897A - 面向多代码粒度的向量并行性发掘方法 - Google Patents
面向多代码粒度的向量并行性发掘方法 Download PDFInfo
- Publication number
- CN110806897A CN110806897A CN201911039582.3A CN201911039582A CN110806897A CN 110806897 A CN110806897 A CN 110806897A CN 201911039582 A CN201911039582 A CN 201911039582A CN 110806897 A CN110806897 A CN 110806897A
- Authority
- CN
- China
- Prior art keywords
- parallelism
- code
- vector
- vectorization
- granularity
- 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.)
- Granted
Links
- 239000013598 vector Substances 0.000 title claims abstract description 73
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000005065 mining Methods 0.000 title claims abstract description 32
- 235000019580 granularity Nutrition 0.000 claims abstract description 31
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 125000004122 cyclic group Chemical group 0.000 claims description 4
- 231100000957 no side effect Toxicity 0.000 claims description 4
- 230000008901 benefit Effects 0.000 abstract description 5
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 45
- 238000007620 mathematical function Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明属于高性能计算程序并行技术领域,特别涉及一种面向多代码粒度的向量并行性发掘方法,首先,构建多代码粒度结合的向量化框架,多代码粒度至少包含循环、基本块和函数调用三种代码粒度;然后,通过向量化框架发掘目标程序段中向量并行性,以实现目标程序段向量化。本发明基于循环、基本块、函数调用相结合的多粒度向量并行性发掘,能够有效提高向量并行识别能力,扩大向量并行识别范围,可以为生成更高效的SIMD并行代码提供指导,有利于充分发挥CPU中SIMD部件的并行优势,大幅提高程序的运行性能,保证程序的运行效率,易于部署,具有较好的应用前景。
Description
技术领域
本发明属于高性能计算程序并行技术领域,特别涉及一种面向多代码粒度的向量并行性发掘方法。
背景技术
处理器主频的提升已经无法为系统整体性能的提升带来明显的变化,高主频同时伴随着巨大的发热量,因此,现代处理器通常采用并行结构来获得更高的性能。单指令流多数据流(Single Instruction Multiple Data,SIMD)是数据级并行的有效实现方式,它在一条单独的指令中并行执行多个运算操作。目前,几乎所有的处理器都集成了SIMD部件来提高并行计算能力。充分利用这些高度并行的SIMD部件,需要有高效的SIMD程序,这些SIMD程序通常是由串行程序经过改写或变换生成的。串行程序中存在着函数、循环、基本块等不同的代码粒度,它们都可能存在一定的并行性,为了获得高效的SIMD向量程序,需要提高向量化的水平,发掘出程序中尽可能多的并行性。
发明内容
为此,本发明提供一种面向多代码粒度的向量并行性发掘方法,为实现函数调用、循环、基本块代码粒度的SIMD向量化操作提供指导。
按照本发明所提供的设计方案,一种面向多代码粒度的向量并行性发掘方法,包含:
构建多代码粒度结合的向量化框架,多代码粒度至少包含循环、基本块和函数调用三种代码粒度;
通过向量化框架发掘目标程序段中向量并行性,以实现目标程序段向量化。
作为本发明多级向量并行性发掘方法,进一步地,向量化框架中,对于循环代码粒度,发掘循环迭代间的数据并行性,将循环不同迭代中的对应语句打包并替换为一条单指令多数据流语句。
作为本发明多级向量并行性发掘方法,进一步地,对于循环代码粒度,采用Allen-Kennedy循环级向量化算法检测并发掘循环迭代间的并行性。
作为本发明多级向量并行性发掘方法,进一步地,对于循环代码粒度,首先分析循环体内语句的依赖关系,并依据依赖关系分析结果构造语句间的依赖图;在依赖图中搜索依赖环,把依赖环语句与语句组分布到循环外,对非依赖环语句进行向量化。
作为本发明多级向量并行性发掘方法,进一步地,依赖关系包含真依赖、反依赖和输出依赖。
作为本发明多级向量并行性发掘方法,进一步地,向量化框架中,对于基本块代码粒度,发掘循环迭代内基本块或普通基本块的数据级并行性,并将基本块中的多条同构语句打包替换为一条单指令多数据流语句。
作为本发明多级向量并行性发掘方法,进一步地,基本块数据级并行性发掘,依据设定的向量化因子,包含如下两种情形:基本块中有足够可并行同构语句的情况,通过直接打包执行可并行的语句实现向量并行;基本块中可并行性同构语句不足的情况,通过循环展开,增加基本块中同构语句数量,再用SLP方法发掘语句级并行性。
作为本发明多级向量并行性发掘方法,进一步地,向量化框架中,对于函数调用代码粒度,通过将标量函数调用替换为向量函数调用,获取向量函数版本,以实现函数调用向量化。
作为本发明多级向量并行性发掘方法,进一步地,通过向量化框架发掘目标程序段中向量并行性,首先判断目标程序段是否存在函数调用,若存在,则判断函数调用是否是无副作用且存在向量版本函数,若均符合,则将目标程序段标记为可向量化操作,否则目标函数直接判定为不可向量化并退出;针对标记的可向量化操作的目标程序段,检测其是否为循环结构,若是,则对循环进行向量并行性分析,否则,检测其是否为直线代码块结构,若是,则发掘基本块内语句级并行性,否则,将目标程序段标记为不可向量化并退出。
本发明的有益效果:
本发明基于循环、基本块、函数调用相结合的多粒度向量并行性发掘,能够有效提高向量并行识别能力,扩大向量并行识别范围,可以为生成更高效的SIMD并行代码提供指导,有利于充分发挥CPU中SIMD部件的并行优势,大幅提高程序的运行性能,保证程序的运行效率,易于部署,具有较好的应用前景。
附图说明:
图1为本发明实施例中多级向量并行性发掘方法流程图;
图2为本发明实施例中基于向量化框架实现向量化的原理示意图。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
SIMD全称Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集,特别适合于多媒体应用等数据密集型运算。为提升SIMD程序向量并行化效率,本发明实施例,参见图1所示,提供一种面向多代码粒度的向量并行性发掘方法,包含如下内容:
S101)构建多代码粒度结合的向量化框架,多代码粒度至少包含循环、基本块和函数调用三种代码粒度;
S102)通过向量化框架发掘目标程序段中向量并行性,以实现目标程序段向量化。
基于循环、基本块、函数调用相结合的多粒度向量并行性发掘,能够有效提高向量并行识别能力,扩大向量并行识别范围,可以为生成更高效的SIMD并行代码提供指导。
作为本发明实施例中的多级向量并行性发掘方法,进一步地,向量化框架中,对于循环代码粒度,发掘循环迭代间的数据并行性,将循环不同迭代中的对应语句打包并替换为一条单指令多数据流语句,以实现代码程序的循环向量化。
作为本发明实施例中的多级向量并行性发掘方法,进一步地,对于循环代码粒度,采用Allen-Kennedy循环级向量化算法检测并发掘循环迭代间的并行性。以数据间的依赖关系为基础,通过循环变换技术,针对最内层循环进行向量化。
作为本发明实施例中的多级向量并行性发掘方法,进一步地,对于循环代码粒度,首先分析循环体内语句的依赖关系,并依据依赖关系分析结果构造语句间的依赖图;在依赖图中搜索依赖环,把依赖环语句与语句组分布到循环外,对非依赖环语句进行向量化。
发掘循环迭代间的数据并行性,将循环不同迭代中的对应语句打包并替换为一条SIMD语句。分析循环体内语句的依赖关系(依赖关系可包含真依赖、反依赖、输出依赖),并依据依赖分析结果构造语句间的依赖图,依赖环(强联通分量)是阻碍向量化的唯一因素,向量化的重要目标是消除依赖环。利用Tarjan算法在依赖图中搜索依赖环,把依赖环语句与语句组分布到循环外,然后对非依赖环语句进行向量化。
作为本发明实施例中的多级向量并行性发掘方法,进一步地,向量化框架中,对于基本块代码粒度,发掘循环迭代内基本块或普通基本块的数据级并行性,并将基本块中的多条同构语句打包替换为一条单指令多数据流语句。如果一个基本块被频繁执行,该基本块也会消耗大量时间。通常这中基本块以两种形式出现,一是循环体中的基本块,二是被频繁调用的函数中的普通基本块。基本块向量化是指发掘循环体或者非循环体中基本块数据级并行性,将基本块中的多条同构语句打包并替换为一条SIMD语句。
作为本发明多级向量并行性发掘方法,进一步地,基本块数据级并行性发掘,依据设定的向量化因子,包含如下两种情形:基本块中有足够可并行同构语句的情况,通过直接打包执行可并行的语句实现向量并行;基本块中可并行性同构语句不足的情况,通过循环展开,增加基本块中同构语句数量,再用SLP方法发掘语句级并行性。
以向量化因子(每条向量语句可同时操作的数据个数)为4为例,即每个向量操作对应4个标量数据。
情况1):基本块中有足够可并行同构语句的情况,可以通过直接打包执行可并行的语句来实现向量并行。代码示例如下:
情况2):基本块中可并行同构语句不足的情况,不足以填充一次向量操作。此时可以通过循环展开增加基本块中同构语句的数量,然后再用SLP方法发掘其中的语句级并行性。“循环展开+SLP”是发掘循环体基本块中指令集并行性的有效方法,代码示例如下:
对于非循环体基本块,采用的方法与循环体基本块的第一种情况一致。
作为本发明实施例中的多级向量并行性发掘方法,进一步地,向量化框架中,对于函数调用代码粒度,通过将标量函数调用替换为向量函数调用,获取向量函数版本,以实现函数调用向量化。
函数调用可能带来不确定的依赖,在向量化分析过程中遇到函数调用通常会保守地停止向量化。针对一些特定无副作用的函数调用实现向量化(主要是常用的数学函数,如sin、cos、pow、exp等),主要技术手段可设计为如下内容:默认数学函数调用是没有副作用的。在依赖分析阶段,识别此类无副作用的数学函数调用,并将之作为普通运算来对待,即,此类函数调用不影响依赖图的构建与分析,若循环可以向量化,那么将该数学函数调用标记为可向量化。在代码生成阶段,将该数学函数调用替换为对应的向量版本。需要注意的是,需要存在对应函数的向量版本,可手工实现,也可采用系统提供的库函数。某些数学函数的功能可以映射到最底层的指令上,如,绝对值函数abs等,若循环中存在此类函数调用,则将函数调用直接替换为对应的向量指令。
作为本发明实施例中的多级向量并行性发掘方法,进一步地,通过向量化框架发掘目标程序段中向量并行性,首先判断目标程序段是否存在函数调用,若存在,则判断函数调用是否是无副作用且存在向量版本函数,若均符合,则将目标程序段标记为可向量化操作,否则目标函数直接判定为不可向量化并退出;针对标记的可向量化操作的目标程序段,检测其是否为循环结构,若是,则对循环进行向量并行性分析,否则,检测其是否为直线代码块结构,若是,则发掘基本块内语句级并行性,否则,将目标程序段标记为不可向量化并退出。
多粒度结合的向量化框架将三种代码粒度向量化有机地结合在一起,如图2所示,可描述为如下内容:
步骤1:对于给定成串行程序段,首先判断是否存在函数调用,若存在函数调用,判断该函数调用是否是无副作用的并且存在向量版本函数,若符合条件,将该函数标记为可向量化操作,进入步骤2,否则,该串行程序段直接标记为不可向量化并退出。
步骤2:检测串行程序段是否为循环结构,如果是进入步骤3,否则进入步骤4。
步骤3:对循环进行向量并行性分析,若迭代间存在并行性,那么采用循环向量化方法;若适用于迭代内并行并且同构语句不足,那么首先进行循环展开,再用SLP方法发掘循环体基本块内语句级并行性;若同构语句足够,那么直接发掘循环体基本块内的语句级并行性;其他情况标记为不可向量化并退出。
步骤4:对于非循环结构,检测串行代码是否为直线代码块结构,如果是,那么发掘基本块内的语句级并行性;否则,标记为不可向量化并退出。
能够结合循环、基本块、函数调用代码粒度,以提高向量并行识别能力、扩大向量并行识别范围,可以为生成更高效的SIMD并行代码提供指导,有利于充分发挥CPU中SIMD部件的并行优势,大幅提高程序运行性能。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
基于上述的方法,本发明实施例还提供一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的方法。
基于上述的方法,本发明实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现上述的方法。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (9)
1.一种面向多代码粒度的向量并行性发掘方法,其特征在于,包含:
构建多代码粒度结合的向量化框架,多代码粒度至少包含循环、基本块和函数调用三种代码粒度;
通过向量化框架发掘目标程序段中向量并行性,以实现目标程序段向量化。
2.根据权利要求1所述的面向多代码粒度的向量并行性发掘方法,其特征在于,向量化框架中,对于循环代码粒度,发掘循环迭代间的数据并行性,将循环不同迭代中的对应语句打包并替换为一条单指令多数据流语句。
3.根据权利要求2所述的面向多代码粒度的向量并行性发掘方法,其特征在于,对于循环代码粒度,采用Allen-Kennedy循环级向量化算法检测并发掘循环迭代间的并行性。
4.根据权利要求2所述的面向多代码粒度的向量并行性发掘方法,其特征在于,对于循环代码粒度,首先分析循环体内语句的依赖关系,并依据依赖关系分析结果构造语句间的依赖图;在依赖图中搜索依赖环,把依赖环语句与语句组分布到循环外,对非依赖环语句进行向量化。
5.根据权利要求4所述的面向多代码粒度的向量并行性发掘方法,其特征在于,依赖关系包含真依赖、反依赖和输出依赖。
6.根据权利要求1所述的面向多代码粒度的向量并行性发掘方法,其特征在于,向量化框架中,对于基本块代码粒度,发掘循环迭代内基本块或普通基本块的数据级并行性,并将基本块中的多条同构语句打包替换为一条单指令多数据流语句。
7.根据权利要求6所述的面向多代码粒度的向量并行性发掘方法,其特征在于,基本块数据级并行性发掘,依据设定的向量化因子,包含如下两种情形:基本块中有足够可并行同构语句的情况,通过直接打包执行可并行的语句实现向量并行;基本块中可并行性同构语句不足的情况,通过循环展开,增加基本块中同构语句数量,再用SLP方法发掘语句级并行性。
8.根据权利要求1所述的面向多代码粒度的向量并行性发掘方法,其特征在于,向量化框架中,对于函数调用代码粒度,通过将标量函数调用替换为向量函数调用,获取存在向量函数版本,以实现函数调用向量化。
9.根据权利要求1所述的面向多代码粒度的向量并行性发掘方法,其特征在于,通过向量化框架发掘目标程序段中向量并行性,首先判断目标程序段是否存在函数调用,若存在,则判断函数调用是否是无副作用且存在向量版本函数,若均符合,则将目标程序段标记为可向量化操作,否则目标函数直接判定为不可向量化并退出;针对标记的可向量化操作的目标程序段,检测其是否为循环结构,若是,则对循环进行向量并行性分析,否则,检测其是否为直线代码块结构,若是,则发掘基本块内语句级并行性,否则,将目标程序段标记为不可向量化并退出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911039582.3A CN110806897B (zh) | 2019-10-29 | 2019-10-29 | 面向多代码粒度的向量并行性发掘方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911039582.3A CN110806897B (zh) | 2019-10-29 | 2019-10-29 | 面向多代码粒度的向量并行性发掘方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110806897A true CN110806897A (zh) | 2020-02-18 |
CN110806897B CN110806897B (zh) | 2022-02-01 |
Family
ID=69489511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911039582.3A Active CN110806897B (zh) | 2019-10-29 | 2019-10-29 | 面向多代码粒度的向量并行性发掘方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110806897B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112651489A (zh) * | 2020-12-22 | 2021-04-13 | 龙芯中科(合肥)技术有限公司 | 操作处理方法、装置、用于操作处理的装置及存储介质 |
CN113553266A (zh) * | 2021-07-23 | 2021-10-26 | 湖南大学 | 一种基于并行性检测模型的串行程序的并行性检测方法、系统、终端及可读存储介质 |
CN117234514A (zh) * | 2023-11-08 | 2023-12-15 | 睿思芯科(深圳)技术有限公司 | 将标量化程序转换为向量化程序的方法、系统及相关设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645163A (zh) * | 2008-06-30 | 2010-02-10 | 英特尔公司 | 向量化并行碰撞检测流水线 |
CN102473104A (zh) * | 2009-08-19 | 2012-05-23 | 国际商业机器公司 | 插入用于优化的simd代码的操作-和-指示指令 |
CN103246541A (zh) * | 2013-04-27 | 2013-08-14 | 中国人民解放军信息工程大学 | 自动并行化多级并行代价评估方法 |
CN103279327A (zh) * | 2013-04-28 | 2013-09-04 | 中国人民解放军信息工程大学 | 面向异构simd扩展部件的自动向量化方法 |
CN105242907A (zh) * | 2015-09-10 | 2016-01-13 | 西安交通大学 | Arm二进制代码的neon向量化转换方法 |
CN106383961A (zh) * | 2016-09-29 | 2017-02-08 | 中国南方电网有限责任公司电网技术研究中心 | Cpu+mic异构平台下的大涡模拟算法优化处理方法 |
CN110018850A (zh) * | 2017-12-30 | 2019-07-16 | 英特尔公司 | 用于可配置空间加速器中的多播的设备、方法和系统 |
-
2019
- 2019-10-29 CN CN201911039582.3A patent/CN110806897B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645163A (zh) * | 2008-06-30 | 2010-02-10 | 英特尔公司 | 向量化并行碰撞检测流水线 |
CN102473104A (zh) * | 2009-08-19 | 2012-05-23 | 国际商业机器公司 | 插入用于优化的simd代码的操作-和-指示指令 |
CN103246541A (zh) * | 2013-04-27 | 2013-08-14 | 中国人民解放军信息工程大学 | 自动并行化多级并行代价评估方法 |
CN103279327A (zh) * | 2013-04-28 | 2013-09-04 | 中国人民解放军信息工程大学 | 面向异构simd扩展部件的自动向量化方法 |
CN105242907A (zh) * | 2015-09-10 | 2016-01-13 | 西安交通大学 | Arm二进制代码的neon向量化转换方法 |
CN106383961A (zh) * | 2016-09-29 | 2017-02-08 | 中国南方电网有限责任公司电网技术研究中心 | Cpu+mic异构平台下的大涡模拟算法优化处理方法 |
CN110018850A (zh) * | 2017-12-30 | 2019-07-16 | 英特尔公司 | 用于可配置空间加速器中的多播的设备、方法和系统 |
Non-Patent Citations (5)
Title |
---|
XINMIN TIAN 等: "LLVM Framework and IR Extensions for Parallelization, SIMD Vectorization and Offloading", 《IEEE》 * |
徐金龙 等: "SIMD向量指令的非满载使用方法研究", 《计算机科学》 * |
李颖颖 等: "发掘函数级单指令多数据向量化的方法", 《计算机应用》 * |
索维毅: "面向DSP的自动向量化及优化技术研究", 《中国优秀硕士论文电子期刊网 信息科技辑》 * |
高伟 等: "向量并行度指导的循环SIMD向量化方法", 《软件学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112651489A (zh) * | 2020-12-22 | 2021-04-13 | 龙芯中科(合肥)技术有限公司 | 操作处理方法、装置、用于操作处理的装置及存储介质 |
CN113553266A (zh) * | 2021-07-23 | 2021-10-26 | 湖南大学 | 一种基于并行性检测模型的串行程序的并行性检测方法、系统、终端及可读存储介质 |
CN117234514A (zh) * | 2023-11-08 | 2023-12-15 | 睿思芯科(深圳)技术有限公司 | 将标量化程序转换为向量化程序的方法、系统及相关设备 |
CN117234514B (zh) * | 2023-11-08 | 2024-02-23 | 睿思芯科(深圳)技术有限公司 | 将标量化程序转换为向量化程序的方法、系统及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110806897B (zh) | 2022-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ho et al. | Exploiting half precision arithmetic in Nvidia GPUs | |
CN110806897B (zh) | 面向多代码粒度的向量并行性发掘方法 | |
Lugowski et al. | A flexible open-source toolbox for scalable complex graph analysis | |
KR101137403B1 (ko) | Simd 아키텍처에서 조건적 데이터 선택을 위한 빠른 벡터 마스킹 알고리즘 | |
US20160321039A1 (en) | Technology mapping onto code fragments | |
Tian et al. | Effective simd vectorization for intel xeon phi coprocessors | |
TWI733798B (zh) | 在執行向量操作時管理位址衝突的設備及方法 | |
Bošnački et al. | Parallel probabilistic model checking on general purpose graphics processors | |
You et al. | Scaling support vector machines on modern HPC platforms | |
Tian et al. | Compiling C/C++ SIMD extensions for function and loop vectorizaion on multicore-SIMD processors | |
Wachowiak et al. | Adaptive particle swarm optimization with heterogeneous multicore parallelism and GPU acceleration | |
Behrens et al. | Efficient SIMD Vectorization for Hashing in OpenCL. | |
CN107003885A (zh) | 用于低级别可组合高性能计算库的技术 | |
Cameron et al. | Bitwise data parallelism in regular expression matching | |
Kannan | Efficient sparse matrix multiple-vector multiplication using a bitmapped format | |
Huang et al. | Accelerating quantum chemistry with vectorized and batched integrals | |
Agullo et al. | Task-based sparse hybrid linear solver for distributed memory heterogeneous architectures | |
Zhong et al. | Using advanced vector extensions avx-512 for mpi reductions | |
Dong et al. | Cross-platform OpenCL code and performance portability investigated with a climate and weather physics model | |
Zhao et al. | Performance evaluation of NPB and SPEC CPU2006 on various SIMD extensions | |
Stock et al. | Automatic transformations for effective parallel execution on intel many integrated core | |
Rotem et al. | Block unification if-conversion for high performance architectures | |
Yang et al. | thSORT: an efficient parallel sorting algorithm on multi-core DSPs | |
Connors et al. | Exploring alternative flexible OpenCL (FlexCL) core designs in FPGA-based MPSoC systems | |
Bernstein et al. | Usable assembly language for GPUs: a success story |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |