CN101268444A - 用于多处理器上流媒体应用的数据转换 - Google Patents

用于多处理器上流媒体应用的数据转换 Download PDF

Info

Publication number
CN101268444A
CN101268444A CNA200680034125XA CN200680034125A CN101268444A CN 101268444 A CN101268444 A CN 101268444A CN A200680034125X A CNA200680034125X A CN A200680034125XA CN 200680034125 A CN200680034125 A CN 200680034125A CN 101268444 A CN101268444 A CN 101268444A
Authority
CN
China
Prior art keywords
computer program
nested loop
program
data
array
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
Application number
CNA200680034125XA
Other languages
English (en)
Other versions
CN101268444B (zh
Inventor
S·廖
Z·杜
G·吴
G·吕
Z·赢
J·彭
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN101268444A publication Critical patent/CN101268444A/zh
Application granted granted Critical
Publication of CN101268444B publication Critical patent/CN101268444B/zh
Expired - Fee Related 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
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供了一种用于优化流操作符处理的方法,包括如下步骤:创建不等式系统以描述多维多面体,通过将该多面体投影到比之少一个维数的空间内而求得该不等式系统的解,并将所求得的解映射到流程序。也描述基于仿射计算划分的其它程序优化方法及要求了其权利。

Description

用于多处理器上流媒体应用的数据转换
技术领域
本发明涉及优化计算机程序的技术。更具体地说,本发明涉及在计算机程序中呈现并应用并行性的技术。
背景技术
包含超过一个中央处理单元(CPU)的计算机系统变的越来越普及。不幸的是,通过增加系统中CPU的数量所取得的性能增益与CPU的数量并不成线性比例。然而,有一类正在增长中的应用-流式媒体应用,经常表现出能够更有效利用多CPU的处理模式。然而,即使是流式媒体应用的性能也常常难以达到与CPU的数量成完全线性比例,而且设计应用以利用多CPU的并行处理能力是一项艰难的任务。为简化并行应用设计和提高并行应用性能的工作正在许多前沿领域进行,包括设计新的计算机语言和实施新的优化方案。
计算机程序一般用诸如C、C++或者Fortran等高级语言表达。程序被称为编译器的程序所分析并转化成一序列机器指令以在特定类型的CPU上执行。编译器负责产生准确地执行用高级程序描述的逻辑处理的指令序列。编译器通常包括优化功能,通过重排操作顺序以提高存储器访问特性或者消除那些其结果从不被用到的运算从而提高指令序列的性能。有些编译器也能够检测到没有相互依赖的逻辑程序通道(program passage),并安排这些通道使其在具有多CPU的机器上并行执行。象Brook和StreamIt这样的计算机语言已被专门设计出来,以帮助编译器辨识并行处理的时机。
目前的编译器优化策略在自组(ad hoc)基础上进行,通过程序的中间表述(intermediate representation)而在一序列的独立通道中执行一连串启发式(heuristic)驱动转换。例如,“循环交换”遍数(pass)可以改变程序,以便以行为主(而不是以列为主)顺序来处理阵列中的数据,从而CPU的高速缓存能够更有效率地工作,又例如,“无用代码”遍数可以搜索并去除那些永不会被执行的指令。这些遍数可以是依赖于顺序的:某一类型的优化能够隐藏或消除另一类型的优化的时机,因此,改变优化遍数(optimization pass)的顺序就可以改变被编译程序的性能。不幸的是,不同的优化的数量太大,使得想要用不同的优化遍数顺序来编译程序以确定哪一种顺序能够为给定程序提供最好的优化的这种做法变得不切实际。
附图说明
在各附图中,以举例的方式而不是限制的方式描述了本发明的实施例。图中相似的标号指代相似的元件。应注意的是,在本说明书中提及的“一个”实施例所指的并不一定是指同一个实施例,而是指“至少一个”。
图1显示了二维数据阵列以及其被映射到计算机存储器的特征。
图2显示出对两个二维阵列进行操作的程序片段的数据访问模式。
图3是根据本发明实施例的编译器优化操作的流程图。
图4显示出用另一种方法来显现由本发明实施例所优化的程序的操作。
图5是流式程序上编译器优化的流程图。
图6显示出计算机系统具有本发明的实施例,并执行由实施例所产生的优化程序。
具体实施方式
本发明的实施例能够提高引用的局部性,检测出在计算机程序中并行处理的机会,并能够重新安排程序以降低存储器占用量和增大线程内依赖。要达到这些有益结果的分析模型可通过参考那些通常包括简单和/或低效的操作(比如计算运行中的加总)的例子来描述,因为在数据上执行的操作在其获得后通常是不相关的。本发明的实施例能够改善对数据执行任意复杂运算的程序的存储器访问模式和并发,但是具有复杂数据运算的例子只会模糊真正想要描述的特征。
图1显示出二维数据阵列110,并描述了每行120、130的内容是如何被按以行为主顺序排列多维阵列的计算机语言映射到主存储器140的存储器位置的一维阵列的。(一些语言按以列为主顺序存储多维阵列,但是数据处理操作的分析很容易也容易被适用。除非另有说明,此后将假定是以行为主的存储。)
处理阵列110中的数据的程序可能检查或操作其中的元素,这可以对于行从左到右进行150,对于列从上到下进行160,或按照更复杂的斜交模式170进行。因为现代的CPU通常将来自存储器的数据以不间断的多字区块(multi-word block)(例如180)的方式载入内部高速缓存(被称为“高速缓存线填充”的处理),这种能够在要求CPU装载新高速缓存线之前对已经装载在一高速缓存线中的所有数据进行操作的处理模式,比起在要求装载来自未高速缓存地址的数据之前只能对高速缓存线中的一个项目进行操作的模式执行起来明显地快。
因而,例如,要对阵列110的行中的数据求总和的程序要进行大约c/l次的高速缓存线填充能够完成一行的数据处理(c是阵列的列数,l是高速缓存线中的字数)。相比之下,要对阵列110的列中的数据求总和的程序需要进行r次高速缓存线填充才能完成一列的数据处理(r是阵列的行数),程序就只能从CPU的高速缓存能力中得到很少或得不到益处。再者,在完成对第一列的数据求总和后,CPU又必须从阵列[0][0]到阵列[0][l-1]将数据再次载入高速缓存线,以开始处理第二列的数据。(假设阵列的行数超过可利用的高速缓存线的数量,则之前所载入的数据已被清除)
从另一方面来看,对把载入高速缓存线填充的数据的有效利用降低了处理过程中所需要用来容纳数据的高速缓冲存储器的量。高速缓冲存储器的利用可认为是代码序列的存储器占用量(memoryfootprint)。因为高速缓冲存储器是稀缺资源,降低存储器占用量就能够提供显著性能益处。
很容易可以看出,用于对阵列中行求和的从左到右逐行访问的模式150只有很小或者完全没有改善的余地,而用于对阵列中列求和的从上到下逐列访问的模式160则能够通过同时对l列的组求和而得到改善。后者是一种能够由先有技术循环交换启发式算法充分实施的优化。然而,对于更为复杂的模式,比如斜交式170,启发式算法则不那么成功
图2介绍了对两个阵列进行优化的问题以显示本发明实施例的一个方面。阵列A210和阵列B220的元素在组合阵列230中显示为叠加,根据伪代码程序片段240对这两个阵列进行操作。当语句S1(250)和S2(260)对阵列元素进行简单运算时,循环243和246对阵列进行逐行、逐列的迭代。(还是一样,实际上的运算并不重要,相关的只是存储器访问模式)。箭头270和280指示了语句S1和S2如何从不同的行和列访问阵列元素
根据图3的流程图,本发明的实施例能够优化代码段240。首先,确定(310)并分析(320)出程序内的多个嵌套循环。当程序要处理多维阵列中的数据时,这类嵌套循环通常就会出现。在这个例子里,嵌套循环243和246对归纳变量为i和j的阵列A和B的行和列进行迭代。接着,多个循环的归纳变量被转化成独立归纳变量P(320)的线性函数。对于语句S1和S2,假定下列通式的线性函数为:
P=ai+bj+c  (语句S1)
P=di+ej+f  (语句S2)
因为S1和S2在循环的不同的迭代中访问相同的数据,它们就被一起处理。或者,更准确地,因为以下的依赖关系:
S1[i,j]δfS2[i,j+1]
S2[i,j]δfS1[i+1,j]
语句被放置在相同的仿射划分(affine partition):
ai+bj+c=P=di+e(j+1)+f
a(i+1)+bj+c=P=di+ej+f
重新安排这些等式,得到:
(a-d)i+(b-e)j=f+e-c
(a-d)i+(b-e)j=f-c-a
a=d;b=e;f+e=c
a=d;b=e;f-c=a
不丧失一般性,c可以被设置为等于零,给出a-f的解(solution)如下:
(a,b,c,d,e,f)=(1,-1,0,1,-1,1)
对于S1和S2,所得到的仿射转化为
P=i-j    (语句S1)
P=i-j+1  (语句S2)
最后,程序中段240中的多个嵌套循环的功能内容(functionalcontent)可以如下所述地被重写(330),其中,嵌套循环设置于独立归纳变量的新循环内,并且根据导出于线性函数的不等式系统(system ofinequality),语句被分离分区。
ForP=1-n to n-1 DO
   For i=1 to n DO
       For j=1 to n DO
           If(P==i-j)
              A[i,i-P]-A[i,i-P]+B[i-1,i-P]
           If(P==i-j+1)
              B[i,i-P+1]=A[i,i-P]*B[i,i-P+1]
       DONE
   DONE
DONE
For P=1-n TO n-1DO
    For i=1 TO n DO
        If 1<=i-P<=n
            A[i,i-P]=A[i,i-P]+B[i-1,i-P]
        If 1<=i-P+1<=n
            B[i,i-P+1]=A[i,i-P]*B[i,i-P+1]
    DONE
DONE
For P=1-n TO n-1DO
    IfP>=1
       B[i,i-P+1]=A[i,i-P]*B[i,i-P+1]
    For i=MAX(1,P+1)to MIN(n,P+n-1)DO
        A[i,i-P]=A[i,i-P]+B[i-1,i-P]
        B[i,i-P+1]=A[i,i-P]*B[i,i-P+1]
    DONE
    IF P<=0
        A[i,i-P]=A[i,i-P]+B[i-1,i-P]
DONE
虽然新的表达似乎比原片段复杂得多,但传统无用代码的去除和类似的优化技术往往能消除这种通式解(340)的许多分支(去除空分区)。此外,因为通过仿射计算划分方法(affine partitioning method)生成了外循环和条件表达式,所以外循环的每次迭代(以及充分执行两个内循环)比原片段两个循环的完全执行占有更小的存储器容量。外循环的迭代之间的数据依赖变得更少,而那些迭代之间是如此相互独立的,使得允许他们可并行执行。这样,这种方法呈现出原程序中的内在并行性。实施本发明实施例的编译器可生成代码以启动许多线程,每条线程(并行)执行外循环的一次迭代。由于改善了其存储器访问模式以及利用系统的多处理器的能力,该结果程序能够以快得多的速度在两个阵列上进行相同的操作。
要对每个分区进行的计算被放在条件表达式的后项(consequent),条件表达式的断言(predicate)是对比独立归纳变量和原来多个循环的归纳变量的不等式。
图4显示出另一种通过仿射分区考虑程序优化的方法。线性等式的转换和解通过阵列410找到数据访问420大致平行的路径。这些平行路径不与阵列的两条原始轴的任一条对齐(行430和列440)。因此,特定区域450,460,470和480必须从独立外循环的处理中去掉。在独立归纳变量更大的空间内,不等式系统描述了阵列多边形的边界(在这个例子中,是简单矩形;在更高维中,则是多面体)
之前的描述集中在了以简单的二维例子情况。然而,该方法也可应用于任意多的维数,尽管这种维数的阵列很难通过能被理解的图形表示出来。诸如Brook和StreamIt等计算机语言为处理变维数的数据流提供了现成的抽象(abstraction)。流操作符(operator)固有地包含多个嵌套循环,以使程序能够在数据流上进行操作,但语言的语义不允许某些程序结构,这些程序结构在在非流式语言中,比如C和C++中能够阻碍某些优化的进行或者使其不安全。根据图5的流程图,本发明的实施例可有用地应用于优化流式程序
首先,在原计算机程序(510)内识别流操作符,然后,为操作符创建可被认为是描述多维多面体的不等式系统(520)。该多面体被投影到一个较小维数的空间上,以求得该不等式系统的解(530),最终该解被映射回原程序,以创建该程序的优化版本(540)。如前面所提到过的,经优化的程序可能会看起来比原先的要复杂得多,但事实上将比原先的程序具有更小的存储器占用量(如果这种存储器占用量可能的话),以及比原程序更少的数据依赖。
应用实施本发明实施例的编译器所发出(emit)的优化程序,流操作符的相关嵌套迭代结构将被放置在独立归纳变量的最外层循环内。通过对比独立归纳变量和内循环的归纳变量的条件语句,循环的功能内容将被分离成分区,并且该程序将保持原程序的逻辑功能,如果不是其精确的操作顺序的话。
Figure A20068003412500131
Figure A20068003412500141
表1
表1列出了Brook操作符及其相关的不等式。也可以为其它计算机语言的操作符和范例准备类似的不等式系统。
实施本发明的实施例的优化编译器可从大容量存储器的文件中读取原计算机程序,或者可通过管道或其他进程间通信机构接收预处理阶段的输出。一些编译器能够从程序源文件或其它输入或中建立分级数据结构,并在数据结构本身进行操作。通过将优化的程序写到文件,将该程序通过管道或进程间通信机构发出,或者通过创建新的或修改的中间表述,比如包含优化的数据结构,编译器可发出输出。输出可以是可由第二编译器编译或汇编的另一语言如C,C++或汇编语言形式的人类可读程序文本;或者可以是可被直接执行或连接到其他编译模组或库的机器代码。
图6显示出可支持应用本发明实施例的编译器的计算机系统。系统包括一个或多个处理器610、620;存储器630;和大容量存储设备640。处理器610和620可包括共享某些内部结构(诸如地址和数据总线、高速缓存和相关支持电路)的多个执行内核。多内核CPU逻辑上等同于在物理上分离的多个CPU,但可以节省耗费或能量。在此图中所示的位于系统中的编译器能产生以系统本身为目标的可执行文件,或者用于第二不同系统的可执行体。如果可利用多个处理器(或者是单个的物理CPU内的多个内核),那么通过在不同的CPU上同时执行外循环的独立迭代,可执行体就可利用多处理器带来的益处。由编译器生成的优化过的程序比相同程序的未优化版本运行得更快,而且可以更好地利用可用的处理器和高速缓存机构。即使该系统只有单处理器,改善的高速缓存利用也允许优化过的程序比未优化的程序执行的更快。
本发明的实施例可以是机器可读介质,储存于其中的指令使处理器执行上述操作。在其他实施例中,可由包含有硬连线逻辑的特定硬件部件来执行操作。可选的,那些操作也可由已编程的计算机部件和定制硬件部件的任何组合执行。
机器可读介质可包括任何用于储存或传送机器(例如计算机)可读形式信息的机制,包括但不限于光盘驱动器、只读存储器、随机存取存储器、可擦可编程只读存储器,以及因特网上的传输。
通过参考特定例子以及依照将功能向特定硬件和/或软件部件进行具体分配已在很大程度上对本发明的应用做了描述。然而本领域技术人员将会认识到,用于并行执行的程序优化也能够通过不同于本文所描述但能提供本发明实施例的功能的软件和硬件来进行实现。应该知道的是,根据下述权利要求这些变化和实现都可被理解。

Claims (20)

1.一种方法,包括:
识别原计算机程序内的流操作符;
创建所述流操作符的不等式系统,所述系统描述了多维多面体;
将所述多维多面体投影到比所述多维多面体的维数小一维的空间上,以获得所述不等式系统的解;以及
将所述不等式的所述解映射入所述原计算机程序,以产生修改的计算机程序。
2.根据权利要求1所述的方法,其特征在于,所述修改的计算机程序比所述原计算机程序具有更小的存储器占用量。
3.根据权利要求1所述的方法,其特征在于,所述修改的计算机程序比所述原计算机程序具有更少的数据依赖。
4.一种方法,包括:
识别第一计算机程序内的多个嵌套循环;
将所述嵌套循环的多个归纳变量变换成独立归纳变量的线性函数;以及
输出第二计算机程序,所述第二计算机程序在所述独立归纳变量的新循环内包含所述多个嵌套循环的功能内容;其中
根据从所述线性函数导出的不等式系统,而将所述多个嵌套循环的所述功能内容分离成分区。
5.根据权利要求4所述的方法,其特征在于,所述新循环的多次迭代并行执行。
6.根据权利要求4所述的方法,其特征在于,所述分区是涉及所述独立归纳变量和所述多个归纳变量中的至少一个的条件表达式的后项。
7.根据权利要求4所述的方法,还包括:
优化所述第二计算机程序以去除空分区。
8.一种方法,包括:
识别第一计算机程序内的多个嵌套迭代结构;
在仿射空间中为所述多个嵌套迭代结构建立模型;
划分所述仿射空间中的所述模型;以及
发出第二计算机程序内的第二多个嵌套迭代结构,所述第二计算机程序保持所述第一程序的逻辑功能;其中
所述第二多个嵌套迭代结构的最外层迭代结构独立于所述第二多个的所述保持的迭代结构。
9.根据权利要求8所述的方法,其特征在于,所述第一计算机程序是Brook计算机语言和StreamIt计算机语言之一中的程序。
10.根据权利要求8所述的方法,其特征在于,所述第二计算机程序是C和C++计算机语言之一中的程序。
11.根据权利要求8所述的方法,其特征在于,所述第二计算机程序是中间表述中的数据结构。
12.一种包含指令的机器可读介质,所述指令在由数据处理机执行时使得所述数据处理机执行如下操作,包括:
读取第一计算机程序;
识别所述第一程序中的第一多个嵌套循环,以处理阵列中的数据;
分析所述第一多个嵌套循环;及
产生第二计算机程序,以执行所述第一计算机程序的功能,其中
所述第二计算机程序包含第二多个嵌套循环,以处理阵列中的数据;
所述第二多个嵌套循环比所述第一多个嵌套循环包含至少多一个循环;
所述第二多个嵌套循环的外循环的迭代彼此之间相互独立。
13.根据权利要求12所述的机器可读介质,其特征在于,所述第一多个嵌套循环中的程序语句在所述第二多个嵌套循环中出现于条件语句内,所述条件语句将所述外循环的归纳变量和内循环的归纳变量进行比较。
14.根据权利要求12所述的机器可读介质,其特征在于,所述第一程序处理多维阵列中的数据。
15.根据权利要求12所述的机器可读介质,其特征在于,对于所述第一多个嵌套循环的分析包括:
将第一阵列访问表示为第一线性等式
将第二阵列访问表示为第二线性等式,和
求出所述第一线性等式和第二线性等式的联立解
16.根据权利要求15所述的机器可读介质,其特征在于,所述外循环的迭代相应于所述第一线性等式和第二线性等式的所述联立解。
17.一个系统,包括:
多个处理器;
存储器;和
数据存储设备;其中
所述数据存储设备包含使所述处理器将第一计算机程序加载入所述存储器的指令;
在所述第一中识别第一多个嵌套循环,以处理阵列内的数据;和
产生第二计算机程序,以执行所述第一程序的功能;且其中
所述第二计算机程序包含第二多个嵌套循环,以处理阵列内的数据,所述第二多个嵌套循环比所述第一多个嵌套循环包含多一个循环;以及
通过将外循环的归纳变量和内循环的归纳变量相关联的条件表达式,而将所述第二多个嵌套循环内的程序语句分离成分区。
18.根据权利要求17所述的系统,其特征在于,所述外循环的迭代由所述多个处理器并行执行。
19.根据权利要求17所述的系统,其特征在于,所述多个处理器包括单个物理处理器的多个执行内核。
20.根据权利要求17所述的系统,其特征在于,所述多个处理器包括多个物理处理器,各物理处理器包含至少一个执行内核。
CN200680034125.XA 2005-09-23 2006-09-14 用于多处理器上流媒体应用的数据转换 Expired - Fee Related CN101268444B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/234,484 US20070074195A1 (en) 2005-09-23 2005-09-23 Data transformations for streaming applications on multiprocessors
US11/234,484 2005-09-23
PCT/US2006/036155 WO2007038035A1 (en) 2005-09-23 2006-09-14 Data transformations for streaming applications on multiprocessors

Publications (2)

Publication Number Publication Date
CN101268444A true CN101268444A (zh) 2008-09-17
CN101268444B CN101268444B (zh) 2016-05-04

Family

ID=37635770

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200680034125.XA Expired - Fee Related CN101268444B (zh) 2005-09-23 2006-09-14 用于多处理器上流媒体应用的数据转换

Country Status (6)

Country Link
US (1) US20070074195A1 (zh)
EP (2) EP1927048A1 (zh)
JP (1) JP5009296B2 (zh)
KR (1) KR100991091B1 (zh)
CN (1) CN101268444B (zh)
WO (1) WO2007038035A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953158B2 (en) * 2005-06-30 2011-05-31 Intel Corporation Computation transformations for streaming applications on multiprocessors
US7793278B2 (en) * 2005-09-30 2010-09-07 Intel Corporation Systems and methods for affine-partitioning programs onto multiple processing units
US7757222B2 (en) * 2005-09-30 2010-07-13 Intel Corporation Generating efficient parallel code using partitioning, coalescing, and degenerative loop and guard removal
CA2543304A1 (en) * 2006-04-11 2007-10-11 Ibm Canada Limited - Ibm Canada Limitee Code highlight and intelligent location descriptor for programming shells
US8413151B1 (en) 2007-12-19 2013-04-02 Nvidia Corporation Selective thread spawning within a multi-threaded processing system
US8819647B2 (en) * 2008-01-25 2014-08-26 International Business Machines Corporation Performance improvements for nested virtual machines
US8122442B2 (en) * 2008-01-31 2012-02-21 Oracle America, Inc. Method and system for array optimization
US8930926B2 (en) * 2008-02-08 2015-01-06 Reservoir Labs, Inc. System, methods and apparatus for program optimization for multi-threaded processor architectures
US8661422B2 (en) * 2008-02-08 2014-02-25 Reservoir Labs, Inc. Methods and apparatus for local memory compaction
US8572590B2 (en) * 2008-09-17 2013-10-29 Reservoir Labs, Inc. Methods and apparatus for joint parallelism and locality optimization in source code compilation
US9858053B2 (en) 2008-02-08 2018-01-02 Reservoir Labs, Inc. Methods and apparatus for data transfer optimization
US8615770B1 (en) 2008-08-29 2013-12-24 Nvidia Corporation System and method for dynamically spawning thread blocks within multi-threaded processing systems
US8959497B1 (en) * 2008-08-29 2015-02-17 Nvidia Corporation System and method for dynamically spawning thread blocks within multi-threaded processing systems
US8688619B1 (en) 2009-03-09 2014-04-01 Reservoir Labs Systems, methods and apparatus for distributed decision processing
WO2010121228A2 (en) * 2009-04-17 2010-10-21 Reservoir Labs, Inc. System, methods and apparatus for program optimization for multi-threaded processor architectures
WO2010127173A2 (en) * 2009-04-30 2010-11-04 Reservoir Labs, Inc. System, apparatus and methods to implement high-speed network analyzers
US9438861B2 (en) * 2009-10-06 2016-09-06 Microsoft Technology Licensing, Llc Integrating continuous and sparse streaming data
US8892483B1 (en) 2010-06-01 2014-11-18 Reservoir Labs, Inc. Systems and methods for planning a solution to a dynamically changing problem
US8914601B1 (en) 2010-10-18 2014-12-16 Reservoir Labs, Inc. Systems and methods for a fast interconnect table
US9430204B2 (en) 2010-11-19 2016-08-30 Microsoft Technology Licensing, Llc Read-only communication operator
US9507568B2 (en) * 2010-12-09 2016-11-29 Microsoft Technology Licensing, Llc Nested communication operator
US9134976B1 (en) 2010-12-13 2015-09-15 Reservoir Labs, Inc. Cross-format analysis of software systems
US9395957B2 (en) 2010-12-22 2016-07-19 Microsoft Technology Licensing, Llc Agile communication operator
US9430596B2 (en) 2011-06-14 2016-08-30 Montana Systems Inc. System, method and apparatus for a scalable parallel processor
US9489180B1 (en) 2011-11-18 2016-11-08 Reservoir Labs, Inc. Methods and apparatus for joint scheduling and layout optimization to enable multi-level vectorization
US9830133B1 (en) 2011-12-12 2017-11-28 Significs And Elements, Llc Methods and apparatus for automatic communication optimizations in a compiler based on a polyhedral representation
US9798588B1 (en) 2012-04-25 2017-10-24 Significs And Elements, Llc Efficient packet forwarding using cyber-security aware policies
US10936569B1 (en) 2012-05-18 2021-03-02 Reservoir Labs, Inc. Efficient and scalable computations with sparse tensors
US9684865B1 (en) 2012-06-05 2017-06-20 Significs And Elements, Llc System and method for configuration of an ensemble solver
US9244677B2 (en) 2012-09-28 2016-01-26 Intel Corporation Loop vectorization methods and apparatus
CN104969179B (zh) * 2013-03-15 2019-07-16 英特尔公司 用于将具有循环承载的依赖的标量计算机程序循环向量化的方法和系统
WO2015050594A2 (en) * 2013-06-16 2015-04-09 President And Fellows Of Harvard College Methods and apparatus for parallel processing
US9110681B2 (en) 2013-12-11 2015-08-18 International Business Machines Corporation Recognizing operational options for stream operators at compile-time

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189088B1 (en) 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US6772415B1 (en) * 2000-01-31 2004-08-03 Interuniversitair Microelektronica Centrum (Imec) Vzw Loop optimization with mapping code on an architecture
US6952821B2 (en) * 2002-08-19 2005-10-04 Hewlett-Packard Development Company, L.P. Method and system for memory management optimization
US7086038B2 (en) * 2002-10-07 2006-08-01 Hewlett-Packard Development Company, L.P. System and method for creating systolic solvers
EP1569104A3 (en) * 2004-01-09 2006-05-03 Interuniversitair Microelektronica Centrum Vzw An automated method for performing parallelization of sequential code and a computerized system adapted therefore
US7487497B2 (en) * 2004-08-26 2009-02-03 International Business Machines Corporation Method and system for auto parallelization of zero-trip loops through induction variable substitution

Also Published As

Publication number Publication date
US20070074195A1 (en) 2007-03-29
KR100991091B1 (ko) 2010-10-29
WO2007038035A1 (en) 2007-04-05
CN101268444B (zh) 2016-05-04
KR20080041271A (ko) 2008-05-09
JP2009509267A (ja) 2009-03-05
EP1927048A1 (en) 2008-06-04
JP5009296B2 (ja) 2012-08-22
EP2345961A1 (en) 2011-07-20

Similar Documents

Publication Publication Date Title
CN101268444A (zh) 用于多处理器上流媒体应用的数据转换
Wolfe More iteration space tiling
Breß et al. Gpu-accelerated database systems: Survey and open challenges
Phothilimthana et al. Swizzle inventor: data movement synthesis for GPU kernels
KR101120398B1 (ko) 스레드 최적화된 멀티프로세서 구조
KR101121606B1 (ko) 스레드 최적화 멀티프로세서 아키텍처
US8400458B2 (en) Method and system for blocking data on a GPU
Hijma et al. Optimization techniques for GPU programming
US8402016B2 (en) Fetching optimization in multi-way pipelined database joins
US20140068581A1 (en) Optimized division of work among processors in a heterogeneous processing system
US20140215183A1 (en) Hardware and software solutions to divergent branches in a parallel pipeline
US7983890B2 (en) Method and apparatus performing automatic mapping for a multi-processor system
Tian et al. Compiler transformation of nested loops for general purpose GPUs
Zhang et al. RegTT: Accelerating tree traversals on GPUs by exploiting regularities
US9081561B2 (en) Method for improving execution performance of multiply-add instruction during compiling
Gupta et al. High speed synchronization of processors using fuzzy barriers
WO2022053152A1 (en) Method of interleaved processing on a general-purpose computing core
Kelefouras et al. A methodology for efficient tile size selection for affine loop kernels
Orzechowski et al. Effective biclustering on GPU-capabilities and constraints
Geng et al. An access-pattern-aware on-chip vector memory system with automatic loading for SIMD architectures
Sung Data layout transformation through in-place transposition
Yamashita et al. Bulk execution of the dynamic programming for the optimal polygon triangulation problem on the GPU
Appelbe et al. A new algorithm for global optimization for parallelism and locality
Jost et al. Scalable memory architecture for soft-core processors
Berry et al. Optimizing for KNL Usage Models When Data Doesn't Fit in MCDRAM.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160504

Termination date: 20180914