CN1210650C - 用于一个源程序的自动和指令指导并行化的多入口线程化方法和装置 - Google Patents

用于一个源程序的自动和指令指导并行化的多入口线程化方法和装置 Download PDF

Info

Publication number
CN1210650C
CN1210650C CN 01812124 CN01812124A CN1210650C CN 1210650 C CN1210650 C CN 1210650C CN 01812124 CN01812124 CN 01812124 CN 01812124 A CN01812124 A CN 01812124A CN 1210650 C CN1210650 C CN 1210650C
Authority
CN
China
Prior art keywords
code
source program
sequence
instruction
insert
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.)
Expired - Fee Related
Application number
CN 01812124
Other languages
English (en)
Other versions
CN1446334A (zh
Inventor
K·柯克加尔德
M·吉尔卡
P·格雷
X·田
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 CN1446334A publication Critical patent/CN1446334A/zh
Application granted granted Critical
Publication of CN1210650C publication Critical patent/CN1210650C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

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

用于一个源程序的自动和指令指导并行化的 多入口线程化方法和装置
发明领域
本发明通常涉及编译器最优化技术,更具体地说,涉及一种用于一个源程序的自动和指令指导并行化的多入口线程化方法和装置。
发明背景技术
需要一个解法的计算问题的不断增加的复杂度反映在设计成能解决这样问题的计算机速度和性能方面的增加。随着CPU变得更快以及多处理器系统配置增加,必须改善程序性能而且必须使用用于编译和执行源程序的有效方法。
并行处理快速地变成影响从家用计算机市场到商业应用的体系结构和软件设计的主流技术。由一个包含多个互连的处理器的多处理器计算机系统执行该并行应用以便互相交换数据。
图1A是一个分布-存储器的多处理器计算机系统的框图。如在图1A中说明的那样,计算机系统100包含多个处理模块120。每个处理模块120都包含一个处理器122和存储器124。在计算机系统100中,能够如图所示互连任意数量的处理模块。
图1B是一个共享-存储器的多处理器计算机系统的框图。如在图1B中说明的那样,计算机系统150包含多个连接到一个共享存储器170的处理器160。在一个实施例中,存储器170包含由每个处理器160占据的专有区域以及一个由所有处理器访问的公用区域。在计算机系统150中,由于由该共享存储器170施加的限制,仅仅可以互连一个有限数目的处理器160。
并行处理方法使用自动工具,诸如自动并行化编译器,其编译该源程序并且便于该程序的并行处理。编译器检查整个源程序,收集并且重新组织该指令,并且把该源程序转换成为可由计算机执行的目标代码。
一种编译器技术涉及使用概述技术,该概述技术把一个程序的选择区域转换成为概述或者单独的子例程。每个概述的子例程然后被发送给在一个并行执行的处理器中的一个线程。在1996年11月12-14日、加拿大多伦多的Proceedings of CASCON′96中、由Jyh HerngChow及其他人所著的automatic Parallelization for SymmetricShared-Memory Multiprocessors中详细地描述了使用概述技术的并行化。然而,使用概述技术的源程序并行化增加了该编译器生成多线索代码的复杂度。因为原有代码被分成分离的子例程,许多最初应用于一个单一子例程的标量优化,将不得不为几个不同的子例程调用,而创建一个生成较不有效代码并且是费时的过程。
发明内容
一方面,本发明涉及一种用于编译一个源程序的方法,包含:在所述源程序内定位多个预定的序列;在所述源程序中、在所述多个预定序列中的每个序列的第一个指令之前插入一个开始代码;在所述源程序中、在所述开始代码之前插入一个调用代码,所述调用代码寻址所述开始代码并且传送所述每个序列到一个系统用于执行;以及在所述源程序中、在所述多个序列中的所述每个序列的最后一个指令之后插入一个停止代码,所述停止代码发信号通知所述系统停止所述每个序列的执行。
另一方面,本发明还涉及一个装置,包含:一个存储器以存储一个源程序,以及一个与所述存储器相耦合的处理器。所述处理器用来:在所述源程序内定位多个预定的序列;在所述源程序中、在所述多个预定序列中的每个序列的第一个指令之前插入一个开始代码;在所述源程序中、在所述开始代码之前插入一个调用代码,所述调用代码寻址所述开始代码并且传送所述每个序列到一个系统以用于执行;以及在所述源程序中、在所述多个序列中的所述每个序列的最后一次指令之后插入一个停止代码,所述停止代码发信号通知所述系统停止所述每个序列的执行。
附图简要说明
本发明在附图中通过举例、而不是限制进行了说明,在附图中相似的附图标记表示相似的单元,其中:
图1A是一个用于分布-存储器的多处理器计算机系统的一个实施例的框图。
图1B是一个用于共享-存储器的多处理器计算机系统的一个实施例的框图。
图2是用于一个计算机系统的一个实施例的一个框图。
图3A是用于在一个计算机系统中获得一个可执行程序的处理过程的一个实施例的一个框图。
图3B是用于在一个计算机系统中获得一个并行可执行程序的处理过程的一个实施例的一个框图。
图4是一个用于一个多入口线程化方法的一个实施例的一个流程图,该多入口线程化方法用于自动和指令-指导地并行化一个源程序。
详细说明
在下面本发明实施例的详细说明中,参考其中类似参考指示类似单元,而且其中通过说明其中可以实践本发明的特定实施例来进行显示的附图。
阐述了许多具体的细节以便提供对本发明的一个彻底理解。然而,对于本领域技术人员来说显然:没有这些细节本发明也可以实现。在某些实例中,以框图形式显示众所周知的结构和设备,而不是详细地进行显示,以便避免模糊本发明。足够详细地描述这些实施例以允许在本领域的那些技术人员实践本发明,而且要理解:可以使用其它实施例而且可以进行逻辑、机械、电及其它改变而不背离本发明的范围。
依据在一个计算机存储器内的数据位上的算法和符号操作表示给出随后的某些部分详细说明。这些算法描述和表示是由在该数据处理领域的那些技术人员使用以最有效地把他们的工作实质传送给在本领域其它技术人员的装置。在这儿的一个算法,以及通常,被构思成为导致一个期望结果的动作的一个独立序列。该动作是那些要求物理量的物理操作的动作。通常,但不是必要的,这些量采取能够被存储、传送、组合、比较、及其他操作的、电或者磁信号的形式。主要由于公共使用的原因,已经证明有时把这些信号称为位、值、单元、符号、字符、术语、数字、等等是方便的。
然而应该谨记,所有这些及类似的术语与适当的物理量相关联而且仅仅是应用于这些量的便利标记。除非特别地指出否则从下列讨论中可以明显地看出,在整个描述中要理解:利用诸如“处理”或者“计算”或者“计算”或者“确定”或者“显示”等等术语的讨论,涉及一个计算机系统、或者类似电子计算设备的动作和处理过程,其操作和转换表示为在该计算机系统的寄存器和存储器中的物理(电子)量的数据为类似地表示为在计算机系统存储器或寄存器或者其他这样的信息存储、传输或者显示设备内作为物理量的其它数据。
本发明还涉及一种用于在此执行该操作的装置。这个装置可以为所要求的目的特别构造,或者它可以包含一台有选择地由一个保存在计算机中的计算机程序激活或者重新配置的通用计算机。这样的一个计算机程序可以被保存在一个计算机可读存储介质中,该存储介质诸如,但不局限于,包括软盘、光盘、CD-ROM、和磁光盘在内的任何类型磁盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或者光卡、或者任何类别适于存储电子指令的介质,而且每个与一条计算机系统总线相连。
在此给出的算法和显示本质上不与任何特定的计算机或者其它装置相关。可以和依据在此示教的程序一起使用各种通用系统,或者可以证明构造一个更专用的装置来执行所要求的方法是方便的。例如,能够以硬接线电路形式、通过编程一个通用处理器或者通过硬件和软件的任何组合实现依据本发明的任何方法。在本领域的一个技术人员将会立即理解:能够用不同于如下所述的那些的计算机系统配置,包括手持设备、多处理器系统、基于微处理器或者可编程的消费者电子设备、网络PC、微型计算机、大型计算机、等等,实践本发明。该发明还能够在分布计算环境中实践,其中在分布计算环境中,任务是由通过一个通信网络连接的远程处理设备执行的。从以下描述中将会显现用于各个这些系统的所要求结构。
依据计算机软件描述本发明中的方法。如果以一种符合一个认可标准的程序设计语言编写,被设计成能实现该方法的指令序列能够被编译用于在各种硬件平台上执行以及用于和各种操作系统接口。此外,不参考任何特定编程语言描述本发明。将要理解:各种编程语言可以用来实现在此描述的本发明示教。此外,在本技术领域通常以一种或者另一种形式(例如,程序、过程、应用...),把软件说成采取一个行动或者导致一个结果。这样的表达仅仅是由一台计算机执行该软件导致计算机的处理器执行一个动作或者产生一个结果的说法的一种简写方法。
图2是用于一个计算机系统200的一个实施例的一个框图。计算机系统200包含一个系统总线201、或者类似于该系统总线的其它通信模块,用于传递信息;以及一个诸如处理器202的处理模块,连接到总线201用于处理信息。计算机系统200进一步包含一个诸如一个随机存取存储器(RAM)或者其它动态存储设备的主存储器204,其与总线201相连用于存储要由处理器202执行的信息和指令。主存储器204还可以被使用用于存储在由处理器202执行指令期间的临时变量或者其它中间信息。计算机系统200还包含一个只读存储器(ROM)206,和/或其它类似的静态存储设备,它们连接到总线201用于存储用于处理器202的静态信息和指令。
一个诸如磁盘或者光盘的可选数据存储设备207以及它的相应驱动,也可以与计算机系统200相连用于存储信息和指令。系统总线201和一条外部总线210相连,该外部总线210把计算机系统200连接到其它设备。计算机系统200还可以经由总线210连接到一个诸如阴极射线管(CRT)或者液晶显示器(LCD)的显示设备221用于向一个计算机用户显示信息。例如,可以在显示设备221上向该用户给出图形或者文本信息。一般地,一个包含字母数字及其它键的字母数字输入设备222与总线210相连,用于传递信息和/或命令选择到处理器202。另一种类型的用户输入设备是诸如传统鼠标、接触鼠标、跟踪球、或者其它类型光标方向键的光标控制装置223,用于传递方向信息和命令选择到处理器202以及用于在显示器221上控制光标移动。一个完全加载的计算机系统可以有选择地包含视频、照像机、扬声器、声卡、以及许多其它类似的传统的选项。
一个通讯设备224也连接到总线210,用于例如经由Internet访问远程计算机或者服务器。通讯设备224可以包含一个调制解调器、一个网络接口卡、或者其它众所周知接口设备、诸如那些被用来与以太网、令牌环网、或者其它类型的网络相连的设备。无论如何,用这样的方式,计算机系统200可以经由一个传统的网络基础结构连接到许多服务器。
图3A是用于在一个计算机系统中获得一个可执行程序的处理过程的一个实施例的一个框图。依据图3A,源文件310包含由程序员以高级语言,例如FORTRAN或者C编写的源代码。该源代码指令必须被转换为机器语言。该转换处理过程涉及几个处理步骤而且包含该源代码指令的编译。
在一个实施例中,在源文件310内的高级语言源代码指令通过一个编译器(未显示)传递。该编译器把该高级指令转换成为存储在目标文件320内的目标代码。在一个实施例中,考虑一个并行计算机系统,该编译器需要以一种适于并行执行的形式产生该目标代码。在一个实施例中,该目标代码包含多个模块,每个模块包括一个或多个子例程。某些模块可以被保存在运行时间库340中。
最后,该目标代码通过一个链接器330。链接器330组合这些模块而且向在该模块内的地址给予真实值,由此产生一个可执行程序350。
图3B是用于在一个计算机系统中获得一个并行可执行程序的处理过程的一个实施例的一个框图。如图3B所示,一个串行源程序360和一个具有OpenMP指令365的串行源程序由一个编译器(不显示)编译,其创建并行的可执行代码370。该并行可执行代码370然后链接到一个并行运行时间库380。该运行时间库380创建多个线程入口385,这些然后被发送给一个SMP机制390用于执行。
图4是一个用于一个多入口线程化方法的一个实施例的一个流程图,该多入口线程化方法用于自动和指令-指导地并行化一个源程序。
在一个实施例中,要由一个多处理器计算机系统编译和执行的源程序需要被并行化以便完全利用该系统的资源的优点。因此,取决于处理器的数目,必须产生多个线程以并行地运行该源程序。
该源程序包含多个代码循环,亦称为并行区域。一个并行区域或者循环被定义为要由多个线程并行执行的一个程序代码块。包含多个并行区域或者循环的一个源程序的一个示例如下:
  #include<stdio.h>

  #define NSIZE 200

  main()

  {

     int x,i,j;

     float a[NSIZE],b[NSIZE],c[NSIZE];

  /*parallel loop*/

  #pragma omp parallel for schedule(static)private(i)shared(a,b)

  for(i=0;i<NSIZE;i++)

  {

     b[i]=(float)(i*2);

     a[i]=b[i]+100;

  }
/*parallel region*/
#pragma omp parallel shared(b,c)

  {

    x=100;
/*work-sharing loop*/
#pragma omp for schedule(dynamic)firstprivate(x)private(i)

  for(j=100;j<200;j++)

  {

    b[j]=(float)(j*2);

    c[j]=b[j]+100*x;
				
				<dp n="d7"/>
      }

    }

  }
每个线程接收该循环的一部分并且和其它线程并行地执行该部分。并行区域或者循环是表示指示代码要被并行执行的基本并行构造的代码序列。
参考图4,在处理块410处,源程序或者源代码被编译器接收和读取。在处理块420处,由编译器定位在该要被并行执行的例程内的第一个并行结构。
在处理块430处,由编译器产生一个开始代码。在一个实施例中,该开始代码是指示一个并行结构开始的一个新线程化入口代码。在处理块440处,由编译器产生一个调用代码。在一个实施例中,该调用代码是一个调用指令,其把由该新线程化入口代码标识的线程入口传递到该多线程运行时间系统、用于在多处理器系统上并行执行。
在处理块450处,在源程序中,在该并行结构之前插入该新线程化的入口代码。在一个实施例中,在该并行结构中的第一个指令之前插入该新入口代码。在处理块460处,在源程序中的新线程化入口代码之前插入调用指令。
在处理块470处,在源程序中的并行结构之后插入一个停止代码。在一个实施例中,该停止代码是一个线程化的返回指令,其插入在该并行结构的最后一个指令之后。该线程化的返回指令发信号通知该运行时间系统执行同步并且返回到主程序。
在处理块480处,由编译器产生一个新的定位指令。在一个实施例中,该定位指令是一个指示要由该多处理器系统执行的下一个指令的标记指令。在处理块485处,在该线程化的返回指令之后插入定位指令。
在处理块490处,产生一个跳转指令并且在该新线程化入口之前插入该指令,以在该定位指令处引导系统继续执行该源程序。在一个实施例中,在调用指令之后以及在新线程化入口代码之前插入该跳转指令。
在处理块495处,进行一个该例程是否包含任何新并行结构的确定。如果该例程包含另一个并行结构,则相对于该新并行结构再次处理块420到495。否则,如果该例程没有包含任何新的并行结构,则停止该过程。
在上述说明中,已经结合其中的具体示例实施例对本发明进行了描述。然而,显然可以在这里进行各种修改和变化,而没有背离由附加的利要求书所阐述的、本发明更为广泛的精神和范围。因此,说明书和附图只是说明性的,而没有限制意义。

Claims (18)

1.一种用于编译一个源程序的方法,包含:
在所述源程序内定位多个预定的序列;
在所述源程序中、在所述多个预定序列中的每个序列的第一个指令之前插入一个开始代码;
在所述源程序中、在所述开始代码之前插入一个调用代码,所述调用代码寻址所述开始代码并且传送所述每个序列到一个系统以用于执行;以及
在所述源程序中、在所述多个序列中的所述每个序列的最后一个指令之后插入一个停止代码,所述停止代码发信号通知所述系统停止所述每个序列的执行。
2.如权利要求1所述的方法,进一步包含:
在所述停止代码之后插入一个定位指令;
产生一个跳转指令以在所述定位指令处开始所述源程序的执行;以及
在所述开始代码之前以及在所述调用代码之后插入所述跳转指令。
3.如权利要求1所述的方法,进一步包含:
接收所述源程序;以及
读取所述源程序。
4.如权利要求1所述的方法,其特征在于:所述多个预定序列中的每个序列都是一个并行结构。
5.如权利要求1所述的方法,其特征在于:所述系统是一个能够并行执行所述每个序列的多线程运行时间系统。
6.如权利要求1所述的方法,其特征在于:所述多个预定序列中的每个序列都是一个Open MP并行结构。
7.如权利要求1所述的方法,其特征在于:插入所述开始代码进一步包含产生所述开始代码以用于插入。
8.如权利要求1所述的方法,其特征在于:插入所述调用代码进一步包含产生所述调用代码以用于插入。
9.如权利要求2所述的方法,其特征在于:插入所述定位指令进一步包含产生所述定位指令以用于插入。
10.一个装置,包含:
一个存储器以存储一个源程序;以及
一个与所述存储器相耦合的处理器
以在所述源程序内定位多个预定的序列;
以在所述源程序中、在所述多个预定序列中的每个序列的第一个指令之前插入一个开始代码;
以在所述源程序中、在所述开始代码之前插入一个调用代码,所述调用代码寻址所述开始代码并且传送所述每个序列到一个系统以用于执行;以及
以在所述源程序中、在所述多个序列中的所述每个序列的最后一次指令之后插入一个停止代码,所述停止代码发信号通知所述系统停止所述每个序列的执行。
11.如权利要求10所述的装置,其特征在于所述处理器进一步:
在所述停止代码之后插入一个定位指令;
产生一个跳转指令以在所述定位指令处开始所述源程序的执行;以及
在所述开始代码之前以及在所述操作码之后插入所述跳转指令。
12.如权利要求10所述的装置,其特征在于所述处理器进一步:
接收所述源程序;以及
读取所述源程序。
13.如权利要求10所述的装置,其特征在于:所述多个预定序列中的每个序列是一个并行结构。
14.如权利要求10所述的装置,其特征在于:所述系统是一个能够并行执行所述每个序列的多线程运行时间系统。
15.如权利要求10所述的装置,其特征在于:所述多个预定序列中的每个序列是一个Open MP并行结构。
16.如权利要求10所述的装置,其特征在于:在插入所述开始代码之前,所述处理器进一步产生所述开始代码以用于插入。
17.如权利要求10所述的装置,其特征在于:在插入所述调用代码之前,所述处理器进一步产生所述调用代码以用于插入。
18.如权利要求11所述的装置,其特征在于:在插入所述定位指令之前,所述处理器进一步产生所述定位指令以用于插入。
CN 01812124 2000-06-30 2001-06-08 用于一个源程序的自动和指令指导并行化的多入口线程化方法和装置 Expired - Fee Related CN1210650C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US60808700A 2000-06-30 2000-06-30
US09/608,087 2000-06-30

Publications (2)

Publication Number Publication Date
CN1446334A CN1446334A (zh) 2003-10-01
CN1210650C true CN1210650C (zh) 2005-07-13

Family

ID=24434971

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 01812124 Expired - Fee Related CN1210650C (zh) 2000-06-30 2001-06-08 用于一个源程序的自动和指令指导并行化的多入口线程化方法和装置

Country Status (6)

Country Link
CN (1) CN1210650C (zh)
AU (1) AU2001266796A1 (zh)
DE (1) DE10196389T1 (zh)
GB (1) GB2381356B (zh)
TW (1) TW525090B (zh)
WO (1) WO2002003194A2 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7487496B2 (en) * 2004-12-02 2009-02-03 International Business Machines Corporation Computer program functional partitioning method for heterogeneous multi-processing systems
US7478376B2 (en) * 2004-12-02 2009-01-13 International Business Machines Corporation Computer program code size partitioning method for multiple memory multi-processing systems
US8869126B2 (en) * 2009-10-20 2014-10-21 Bull Hn Information Systems Inc. Method and apparatus enabling multi threaded program execution for a Cobol program including OpenMP directives by utilizing a two-stage compilation process
US8370820B2 (en) * 2009-10-20 2013-02-05 Guenthner Cynthia S Method and apparatus for enabling parallel processing during execution of a Cobol source program using two-stage compilation

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8610658D0 (en) * 1986-05-01 1986-06-04 British Petroleum Co Plc Flow control
US5278986A (en) * 1991-12-13 1994-01-11 Thinking Machines Corporation System and method for compiling a source code supporting data parallel variables
GB9305263D0 (en) * 1993-03-15 1993-05-05 Univ Westminster Parrallel computation

Also Published As

Publication number Publication date
GB2381356A (en) 2003-04-30
WO2002003194A2 (en) 2002-01-10
DE10196389T1 (de) 2003-06-18
GB0301568D0 (en) 2003-02-26
GB2381356B (en) 2004-09-22
TW525090B (en) 2003-03-21
CN1446334A (zh) 2003-10-01
WO2002003194A3 (en) 2003-01-23
AU2001266796A1 (en) 2002-01-14

Similar Documents

Publication Publication Date Title
EP3262503B1 (en) Hardware instruction generation unit for specialized processors
Linderman et al. Merge: a programming model for heterogeneous multi-core systems
US7523293B2 (en) Spawn-join instruction set architecture for providing explicit multithreading
Hammond et al. Transactional coherence and consistency: Simplifying parallel hardware and software
US7424578B2 (en) Computer system, compiler apparatus, and operating system
EP2315118B1 (en) Method and apparatus for enabling parallel processing during execution of a cobol source program using two-stage compilation
Nugteren et al. Introducing'Bones' a parallelizing source-to-source compiler based on algorithmic skeletons
EP2815313B1 (en) Rasterization of compute shaders
CN111090464B (zh) 一种数据流处理方法及相关设备
WO1998043193A9 (en) Spawn-join instruction set architecture for providing explicit multithreading
EP1949227A1 (en) Thread-data affinity optimization using compiler
US8966461B2 (en) Vector width-aware synchronization-elision for vector processors
Jones et al. Implicit and explicit parallel programming in Haskell
US20060041875A1 (en) Methods and apparatus for creating software basic block layouts
Balaji Programming models for parallel computing
US20130086565A1 (en) Low-level function selection using vector-width
CN1210650C (zh) 用于一个源程序的自动和指令指导并行化的多入口线程化方法和装置
Tang et al. Heap analysis and optimizations for threaded programs
Smith et al. POPLOG's Two-level virtual machine support for interactive languages
Torrellas et al. The Illinois aggressive coma multiprocessor project (I-ACOMA)
Varoumas et al. Programming microcontrollers through high-level abstractions
El Sibaïe et al. Synchronous-reactive web programming
Kucher et al. Towards implicit memory management for portable parallel programming in C++
Gdura A new parallelisation technique for heterogeneous CPUs
Sarkar et al. How Easy it is to Write Software for Heterogeneous Systems?

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20050713

Termination date: 20130608