CN103885751A - 将区别属性的存储器分配给共享数据对象的系统和方法 - Google Patents

将区别属性的存储器分配给共享数据对象的系统和方法 Download PDF

Info

Publication number
CN103885751A
CN103885751A CN201310538409.4A CN201310538409A CN103885751A CN 103885751 A CN103885751 A CN 103885751A CN 201310538409 A CN201310538409 A CN 201310538409A CN 103885751 A CN103885751 A CN 103885751A
Authority
CN
China
Prior art keywords
compared
shared storage
time delay
data objects
storage
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
Application number
CN201310538409.4A
Other languages
English (en)
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN103885751A publication Critical patent/CN103885751A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • 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
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/451Stack data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

用于将区别属性的共享存储器分配给共享数据对象的系统和方法以及混合堆栈数据结构。在一个实施例中,系统包括:(1)混合堆栈创建器,配置为在共享存储器中创建具有较低部分和较高部分的混合堆栈数据结构,该较低部分具有较多有利属性,该较高部分具有较少有利属性,以及(2)数据对象分配器,与混合堆栈创建器相关联并配置为如果较低部分具有充足剩余容量以包含共享数据对象那么将用于共享数据对象的存储分配在较低部分中,以及如果较低部分具有不足的剩余容量以包含共享数据对象那么可替代地将用于共享数据对象的存储分配在较高部分中。

Description

将区别属性的存储器分配给共享数据对象的系统和方法
相关申请的交叉引用
本申请要求于2012年11月5日由Lin等人所提交的、序列号为61/722,661的、标题为“EXECUTING SEQUENTIAL CODE USING AGROUP OF THREADS”的美国临时申请以及于2012年12月21日由Lin等人所提交的、序列号为13/724,089的、标题为“SYSTEM AND METHODFOR ALLOCATING MEMORY OF DIFFERING PROPERTIES TO SHAREDDATA OBJECTS”的美国申请的优先权,在先申请与本申请共同受让,并在本文通过援引的方式对二者加以合并。
技术领域
本申请总地指向并行处理器,并且,更具体地,指向用于将区别属性的存储器分配给共享数据对象的系统和方法。
背景技术
如相关领域技术人员意识到的,可并行地执行应用以增加其性能。数据并行应用在不同数据上并发实行相同进程。任务并行应用在相同数据上并发实行不同进程。静态并行应用是具有可在其执行之前被确定的并行度级别的应用。相反,由动态并行应用可达到的并行度仅可随着其执行而被确定。无论应用是数据或任务并行、或静态或动态并行,其可在管线中执行,这通常是用于图形应用的情况。
某些计算系统,诸如单指令、多数据(SIMD)处理器,尤其擅长执行数据并行应用。SIMD处理器中的管线控制单元创建执行的线程组并调度其用于执行,在执行期间组中的所有线程并发执行相同指令。在一个特定处理器中,每个组具有32个线程,与SIMD处理器中的32个执行管线或通道(lane)相对应。
考虑实现在并行处理计算系统上的交叉-合并(fork-join)并行编程模型诸如OpenMP或OpenACC。在该模型中,程序代码的一些部分仅由一个线程(“主”线程)所执行,而其他部分由并行的多个线程(“工作者”线程)所执行。执行以仅主线程活动而开始。在工作创建构造处,当主线程激活工作者线程并对每个工作者指派“执行任务”诸如循环的某个数目的迭代时,执行被分叉。工作者线程随后典型地并行执行其被指派的任务。一旦工作者线程结束,则它们停用,并且当主线程恢复其余程序代码的执行时执行被合并。当仅一个线程活动时的程序执行期在本文将称为顺序区或阶段,并且当多于一个线程活动时的程序执行期在本文将称为并行区或阶段。
在包括OpenMP和OpenACC的许多交叉-合并模型中,可在并行区中访问被分配在顺序区中的数据对象。因此,并行处理器架构提供存储器用于存储数据对象,多个线程在它们的执行期间可获得对该数据对象的访问权限。可由许多属性来表征该存储器,包括大小、时延、易失性和其他,以及它们的伴随的优点和缺点。
发明内容
一个方面提供用于将区别属性的共享存储器分配给共享数据对象的系统和混合堆栈(hybrid stack)数据结构。在一个实施例中,系统包括:(1)混合堆栈创建器,配置为在共享存储器中创建具有较低部分和较高部分的混合堆栈数据结构,该较低部分具有较多有利属性,该较高部分具有较少有利属性,以及(2)数据对象分配器,与混合堆栈创建器相关联并配置为如果较低部分具有充足剩余容量以包含共享数据对象那么将用于共享数据对象的存储分配在较低部分中,以及如果较低部分具有不足的剩余容量以包含共享数据对象那么可替代地将用于共享数据对象的存储分配在较高部分中。
另一方面提供将区别属性的共享存储器分配给共享数据对象的方法。在一个实施例中,方法包括:(1)在共享存储器中创建混合堆栈数据结构,该数据结构具有较低部分和较高部分,该较低部分具有较多有利属性,该较高部分较少有利属性,(2)当线程要求共享数据对象时,(2a)如果较低部分具有充足剩余容量以包含共享数据对象那么将用于共享数据对象的存储分配在较低部分中,以及(2b)如果较低部分具有不足的剩余容量以包含共享数据对象那么可替代地将用于共享数据对象的存储分配在较高部分中,以及(3)当没有线程进一步要求共享数据对象时,释放存储。
又一方面提供混合堆栈数据结构。在一个实施例中,数据结构包括:(1)共享存储器中的具有较多有利属性的较低部分,以及(2)共享存储器中的具有较少有利属性的较高部分。
附图说明
现在结合附图对下面的描述加以参考,其中:
图1是并行处理器的框图,并行处理器可操作以包含或实行用于将区别属性的存储器分配给共享数据对象的系统或方法;
图2是混合堆栈的一个实施例的图示;以及
图3是用于将区别时延的存储器分配给共享数据对象的系统的一个实施例的框图;以及
图4是将区别属性的存储器分配给共享数据对象的方法的一个实施例的流程图。
具体实施方式
如上文所阐明的,由许多属性来表征并行处理器架构。例如存储器可分层成具有较高时延的较大存储器和具有较低时延的较小(可能在数量级上)的存储器。架构通常包括数个具有各种属性和用途的存储器块。多个线程通常需要获得对该存储器的访问权限以共享数据对象。
在许多交叉-合并编程模型中,可在并行区中访问被分配在顺序区中的数据对象。然而,在一些执行平台上,线程本地存储器不可由其他线程访问。例如,在一些市场上可买到的图形处理单元(GPU)中,驻留在一个线程的本地存储器中的数据对象对不同线程是不可访问的。因此将软件程序转译成可执行形式的编译器或运行时系统,被分派负责将存储器分配给潜在共享的对象使得其可由并行区中的活动线程访问。
在顺序区期间所分配的、本地于函数的数据对象可方便地置于堆栈数据结构上。然而,本文认识到的是,针对在仅一个类型的存储器(例如,仅全局共享存储器,或仅块共享存储器)中的共享数据对象实现堆栈数据结构有缺点。如果堆栈数据结构要全部置于趋向于更小的块共享存储器中,那么栈可能容易溢出,并且程序将需要终止。另一方面,如果堆栈数据结构要全部置于趋向于更高时延的全局共享存储器中,那么如果对共享对象的访问很繁重则程序的性能将降低,因为平均访问时延将增加。如果程序几乎不具有小的共享对象那么这可能尤其有害。
本文所引入的是用于将区别属性的存储器分配给共享数据对象的系统和方法的各种实施例。系统和方法实施例一般指向构造混合堆栈数据结构,也就是说,采用多个类型的物理存储器所实现的堆栈数据结构。系统和方法实施例利用每个类型的存储器的强项,得到与当仅使用一个类型的存储器所可能得到的相比限制性较小并达到较高性能的机制。例如,在某些实施例中,当在通常情况下相对较少对象被分配在堆栈上时,混合堆栈提供使用块共享存储器的时延优点。然而,如果许多大的对象被分配在堆栈上,混合堆栈通过巧妙的“落回(falling back)”到使用较高时延的全局共享存储器来提供鲁棒性。
在任何常规或以后所开发的并行编程系统中,在共享对象由多个线程访问并且执行衬底提供具有区别资源限制和性能特性的多个物理存储器的情况下,可采用系统和方法的各种实施例。
在一些实施例中,存储器片段(segment)可配置为例如编译时(compile-time)或运行时(run-time)参数。这允许用户决定如何最好地平衡存储器资源使用和程序性能。例如,在块共享存储器片段中分配较多对象典型地减少平均访问时延并因此增加程序性能。类似地,在某些实施例中,混合堆栈的每一层的大小可配置为,最低层最小,下一层较大,而最高层最大。
下文将示出并描述数个实施例。所示出和描述的实施例中的许多实施例表现为特定于具有位于两个不同存储器中的片段的混合堆栈。然而,相关领域技术人员将理解,这些实施例中的许多实施例与其他实施例一起指向具有多于两个片段并因此位于多于两个存储器中的混合堆栈。本发明不针对混合堆栈可容纳的不同存储器的数目加以限制。
在描述系统和方法的某些实施例之前,将描述并行处理器,其可操作以包含或实行用于将区别属性的存储器分配给共享数据对象的系统和方法。
图1是并行处理器100的框图。并行处理器100包括被组织成线程组104或“线程束(warp)”的多个线程处理器或核心106。并行处理器100包含J个线程组104-1到104-J,每组具有K个核心106-1到106-K。在某些实施例中,线程组104-1到104-J可进一步被组织成一个或多个线程块102。某些实施例包括每线程组104三十二个核心106。其他实施例可包括少如每线程组中四个核心或多如数万核心。某些实施例将核心106组织成单线程组104,而其他实施例可具有数百或甚至数千个线程组104。并行处理器100的替代实施例可将核心106仅组织成线程组104,省略线程块组织级别。
并行处理器100进一步包括管线控制单元108、块共享存储器110和与线程组104-1到104-J相关联的本地存储器112-1到112-J的阵列。管线控制单元108通过数据总线114将任务分布到各个线程组104-1到104-J。线程组106-j内的核心106相互并行地执行。线程组104-1到104-J通过存储器总线116与块共享存储器110进行通信。线程组104-1到104J通过本地总线118-1到118-J分别与本地存储器112-1到112-J进行通信。例如线程组104-J以通过总线118-J进行通信来利用本地存储器112-J。并行处理器100的某些实施例将块共享存储器110的共享部分分配到每个线程块102,并允许由线程块102内的所有线程组104访问块共享存储器110的共享部分。某些实施例包括仅使用本地存储器112的线程组104。许多其他实施例包括平衡本地存储器112和块共享存储器110的使用的线程组104。
图1的实施例包括主线程组104-1。其余线程组104-2到104-J中的每一个被视为“工作者”线程组。主线程组104-1包括许多核心,其中的一个是主核心106-1,该主核心106-1最终执行主线程。在并行处理器110上所执行的程序被构造为内核的序列。典型地,每个内核在下一内核开始之前完成执行。在某些实施例中,并行处理器100可并行执行多个内核,这取决于内核的大小。每个内核被组织为要在核心106上所执行的线程的层级。
在下面的示例中,并且不损失普遍性,将使用可从市场上买到的来自加利福尼亚州圣塔克拉拉市的Nvidia公司的GPU作为执行平台并且将使用OpenACC作为用于程序的交叉-合并并行编程模型。如先前所描述的,Nvidia GPU提供二者均可由作为相同线程块的一部分的所有线程所访问的全局和共享存储器。全局共享存储器访问时延比块共享存储器访问时延高多于一个数量级。全局共享存储器的大小比块共享存储器的大小大多于一个数量级。下文的表1阐述了OpenACC程序的示例,其中并行区中的线程访问被分配在顺序区中的共享变量。
Figure BDA0000407963680000061
表1-示范性OpenACC程序
在表1的示例程序中,分叉和合并并行构造是“pragma acc loop worker”和“pragma acc parallel”,并且共享数据变量是“arr”和“scalar”。
“pragma acc parallel”构造在每“组”激活一个主线程,并且“pragmaacc loop”激活组中的其他工作者线程。在组中的其他线程被激活之前,仅组的一个线程是活动的(主线程)。函数“foo”被主线程所调用。变量函数本地变量“arr”和“scalar”的地址被传递到函数“bar”,其激活工作者线程。工作者线程访问“arr”和“scalar”对象。
为了正确的执行,变量“arr”和“scalar”应被分配在可由工作者线程访问的存储器区中。在该示例中,变量被分配在混合数据堆栈上。使用两个预分配的缓冲区来实现混合数据堆栈:块共享存储器中一个和全局共享存储器中一个。如果在分配给混合堆栈时有空间,那么变量被分配在块共享存储器片段中。否则被分配在全局共享存储器中。与两个片段的最大大小、当前活动片段和在活动片段内应尝试下一堆栈的位置有关的内务处理(housekeeping)信息被加以维持。
图2是具有较低部分202和较高部分204的混合堆栈200的一个实施例的示意图。在某些实施例中,较低部分202存在于具有较低时延的块共享存储器片段中,并且较高部分204存在与具有较高时延的全局共享存储器片段中。栈底206存在于较低部分202中并表示混合堆栈200中首先可用的或最低的存储器地址。相似地,栈顶208存在于较高部分204中并表示混合堆栈200中最后可用的或最高的存储器地址。
首先在较低部分202中对栈底206做出分配。随着分配增加,较低部分逐渐填满直到到达较低部分中的最大分配210为止。较低部分中的最大分配210实质上是混合堆栈的较低部和较高部之间的界限,或者在某些实施例中是混合堆栈的块共享和全局共享片段之间的界限。在替代实施例中,在运行时处指定较低部分中的最大分配210;并且在其他实施例中在编译时处指定。可通过定制较低部分存储器片段和较高部分存储器片段的大小来做出该指定,以达到堆栈属性和性能诸如容量和堆栈时延的适当平衡。
在采用变化大小和时延的存储器的某些实施例中,情况通常是混合堆栈200将不超过较低部分中的最大分配210;某些程序简单地不采用足够大数量的在线程之间所共享的数据来填满混合堆栈200的较小、较低时延的存储器片段。当混合堆栈200的较低部分202被填满时,对混合堆栈200的下一分配被分配到较高部分204的最低地址中。术语“最低”是指混合堆栈200上的仅在最低部分中的最大分配210之上的位置。随着分配的继续增加,较高部分204被填满并且混合堆栈200的整体时延爬升。随着存储器从混合堆栈200中被释放,释放首先来自较高部分204,即较高时延的全局共享存储器片段。随着存储器继续被释放,时延下降,全局共享存储器片段清空,最终再次到达较低部分中的最大分配210。进一步的释放随后来自较低部分202,即块共享存储器。
下文的表2是阐述采用特定内务处理变量集的混合堆栈的实现方案。还给定用于从混合堆栈中分配和释放变量的伪代码。注释“__shared__”和“__device__”指示变量应分别被分配在共享和全局GPU存储器中。注意,该简化的实现方案不视为是针对正被分配在堆栈上的对象的队列(alignment)要求。
Figure BDA0000407963680000081
表2–示范性混合堆栈
在表2中,“shared_mem_top”和“global_mem_top”指示在该处应分别尝试分配的共享和全局共享存储器片段中的位置。“Using_shared_mem_segment”是指示是否应使用块共享存储器片段用于分配的布尔标记。
Figure BDA0000407963680000082
表3–示范性混合堆栈数据对象分配例程
Figure BDA0000407963680000083
表4–示范性混合堆栈数据对象释放例程
如果在块共享存储器片段中存在足够空间那么“Allocate_on_hybrid_stack”分配在块共享存储器片段中的存储器;否则对象被分配在全局共享存储器片段中。
“Deallocate_from_hybrid_stack”在适当的存储器片段中调整堆栈指针,并且如果全局共享存储器片段完全是空的(即目前没有对象被分配在该片段中)那么可切换回到使用块共享存储器片段。
从混合堆栈对块共享存储器的分配和释放仅发生在程序的顺序区期间,所以在分配和释放期间不存在线程安全问题。
图3是用于将区别时延的存储器分配给共享数据对象306的系统300的一个实施例的框图。系统300包括混合堆栈创建器302和数据对象分配器304。混合堆栈创建器302配置为创建图2的混合堆栈200。混合堆栈200如图3所示,包括块共享存储器片段308和全局共享存储器片段310,即图2的较低和较高部分。
数据对象分配器304在共享数据对象306上进行操作以将共享数据对象306存储在混合堆栈200中。在某些实施例中,数据对象分配器304在编译时处操作,而在其他实施例中数据对象分配器304在运行时处操作。
数据对象分配器304有利于分配到块共享存储器片段308。在分配时,数据对象分配器304检查块共享存储器片段308是否具有可用容量来存储数据对象。如果块共享存储器片段308中存在容量,那么数据对象被存储在块共享存储器片段308中。如果块共享存储器片段308中不存在容量,那么数据被存储在全局共享存储器片段310中。
图4是将区别属性的存储器分配给共享数据对象的方法的一个实施例的流程图。方法开始于开始步骤410。在步骤420中,创建共享存储器中的混合堆栈数据结构,该混合堆栈数据结构具有较低部分和较高部分,该较低部分具有较多有利属性,该较高部分具有较少有利属性。在该点,针对由任何线程所要求被包含在数据结构中的共享数据对象在数据结构中做出分配。因此,在决策步骤430中,确定较低部分是否具有充足剩余容量以包含给定的所要求的共享数据对象。如果是,那么在步骤440中将用于共享数据对象的存储分配在较低部分中。如果否,那么在步骤450中替代地将用于共享数据对象的存储分配在较高部分中。在步骤460中,针对不再由任何线程所要求被包含在数据结构中的任何共享数据对象来释放存储。方法结束于结束步骤470。
本申请相关领域技术人员应理解的是,可对所描述的实施例做出其他和进一步的添加、删除、替换和修改。

Claims (10)

1.一种用于将区别属性的共享存储器分配给共享数据对象的系统,包括:
混合堆栈创建器,配置为在所述共享存储器中创建具有较低部分和较高部分的混合堆栈数据结构,所述较低部分具有较多有利属性,所述较高部分具有较少有利属性;以及
数据对象分配器,与所述混合堆栈创建器相关联并配置为如果所述较低部分具有充足剩余容量以包含共享数据对象那么将用于所述共享数据对象的存储分配在所述较低部分中,以及如果所述较低部分具有不足的剩余容量以包含所述共享数据对象那么可替代地将用于所述共享数据对象的存储分配在所述较高部分中。
2.根据权利要求1所述的系统,其中所述较多有利属性是较低时延,并且所述较少有利属性是较高时延。
3.根据权利要求2所述的系统,其中具有较低时延的所述较低部分是块共享存储器,具有较高时延的所述较高部分是全局共享存储器,并且所述系统在具有本地存储器的并行处理计算系统中可操作。
4.根据权利要求1所述的系统,其中所述较低部分最多比所述较高部分小一个数量级。
5.根据权利要求1所述的系统,其中所述较低和较高部分的大小是可软件配置的。
6.根据权利要求1所述的系统,其中所述混合堆栈创建器和所述数据对象分配器可在从包括下面各项的组中所选择的一个中实现:
编译器,以及
运行时系统。
7.根据权利要求1所述的系统,其中所述数据对象分配器仅在程序执行的顺序区期间可操作。
8.一种混合堆栈数据结构,包括:
共享存储器中的具有较多有利属性的较低部分,以及
所述共享存储器中的具有较少有利属性的较高部分。
9.根据权利要求8所述的数据结构,其中所述较多有利属性是较低时延,并且所述较少有利属性是较高时延。
10.根据权利要求9所述的数据结构,其中具有较低时延的所述较低部分是块共享存储器,具有较高时延的所述较高部分是全局共享存储器,并且所述系统在具有本地存储器的并行处理计算系统中可操作。
CN201310538409.4A 2012-11-05 2013-11-04 将区别属性的存储器分配给共享数据对象的系统和方法 Pending CN103885751A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261722661P 2012-11-05 2012-11-05
US61/722,661 2012-11-05
US13/724,089 2012-12-21
US13/724,089 US9710275B2 (en) 2012-11-05 2012-12-21 System and method for allocating memory of differing properties to shared data objects

Publications (1)

Publication Number Publication Date
CN103885751A true CN103885751A (zh) 2014-06-25

Family

ID=50623483

Family Applications (4)

Application Number Title Priority Date Filing Date
CN201310538671.9A Pending CN103809936A (zh) 2012-11-05 2013-11-04 编译或运行时执行分叉-合并数据并行程序的系统和方法
CN201310538631.4A Active CN103809964B (zh) 2012-11-05 2013-11-04 用线程组执行顺序代码的系统和方法和包含其的simt处理器
CN201310538507.8A Pending CN103809963A (zh) 2012-11-05 2013-11-04 转译程序函数以正确处置局部作用域变量的系统和方法
CN201310538409.4A Pending CN103885751A (zh) 2012-11-05 2013-11-04 将区别属性的存储器分配给共享数据对象的系统和方法

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN201310538671.9A Pending CN103809936A (zh) 2012-11-05 2013-11-04 编译或运行时执行分叉-合并数据并行程序的系统和方法
CN201310538631.4A Active CN103809964B (zh) 2012-11-05 2013-11-04 用线程组执行顺序代码的系统和方法和包含其的simt处理器
CN201310538507.8A Pending CN103809963A (zh) 2012-11-05 2013-11-04 转译程序函数以正确处置局部作用域变量的系统和方法

Country Status (3)

Country Link
US (4) US9436475B2 (zh)
CN (4) CN103809936A (zh)
TW (4) TWI510919B (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436475B2 (en) 2012-11-05 2016-09-06 Nvidia Corporation System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same
US9519668B2 (en) * 2013-05-06 2016-12-13 International Business Machines Corporation Lock-free creation of hash tables in parallel
US9250877B2 (en) * 2013-09-20 2016-02-02 Cray Inc. Assisting parallelization of a computer program
US9207979B1 (en) * 2014-05-28 2015-12-08 Freescale Semiconductor, Inc. Explicit barrier scheduling mechanism for pipelining of stream processing algorithms
US10061591B2 (en) 2014-06-27 2018-08-28 Samsung Electronics Company, Ltd. Redundancy elimination in single instruction multiple data/thread (SIMD/T) execution processing
US10061592B2 (en) 2014-06-27 2018-08-28 Samsung Electronics Co., Ltd. Architecture and execution for efficient mixed precision computations in single instruction multiple data/thread (SIMD/T) devices
US9804883B2 (en) * 2014-11-14 2017-10-31 Advanced Micro Devices, Inc. Remote scoped synchronization for work stealing and sharing
US9886317B2 (en) * 2015-02-02 2018-02-06 Oracle International Corporation Fine-grained scheduling of work in runtime systems
US10318307B2 (en) 2015-06-17 2019-06-11 Mediatek, Inc. Scalarization of vector processing
US9594512B1 (en) 2015-06-19 2017-03-14 Pure Storage, Inc. Attributing consumed storage capacity among entities storing data in a storage array
GB2539958B (en) * 2015-07-03 2019-09-25 Advanced Risc Mach Ltd Data processing systems
GB2540937B (en) * 2015-07-30 2019-04-03 Advanced Risc Mach Ltd Graphics processing systems
US10996989B2 (en) * 2016-06-13 2021-05-04 International Business Machines Corporation Flexible optimized data handling in systems with multiple memories
US10255132B2 (en) 2016-06-22 2019-04-09 Advanced Micro Devices, Inc. System and method for protecting GPU memory instructions against faults
US10310861B2 (en) 2017-04-01 2019-06-04 Intel Corporation Mechanism for scheduling threads on a multiprocessor
GB2560059B (en) 2017-06-16 2019-03-06 Imagination Tech Ltd Scheduling tasks
TWI647619B (zh) * 2017-08-29 2019-01-11 智微科技股份有限公司 用來於一電子裝置中進行硬體資源管理之方法以及對應的電子裝置
CN109471673B (zh) * 2017-09-07 2022-02-01 智微科技股份有限公司 用来于电子装置中进行硬件资源管理的方法及电子装置
US10990394B2 (en) * 2017-09-28 2021-04-27 Intel Corporation Systems and methods for mixed instruction multiple data (xIMD) computing
US11068247B2 (en) 2018-02-06 2021-07-20 Microsoft Technology Licensing, Llc Vectorizing conditional min-max sequence reduction loops
US10606595B2 (en) * 2018-03-23 2020-03-31 Arm Limited Data processing systems
CN108804311B (zh) * 2018-05-07 2022-06-03 微梦创科网络科技(中国)有限公司 一种执行测试文件的方法及装置
US11061742B2 (en) * 2018-06-27 2021-07-13 Intel Corporation System, apparatus and method for barrier synchronization in a multi-threaded processor
CN110032407B (zh) * 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备
CN110990151A (zh) * 2019-11-24 2020-04-10 浪潮电子信息产业股份有限公司 一种基于异构计算平台的业务处理方法
CN112114877B (zh) * 2020-09-28 2023-03-14 西安芯瞳半导体技术有限公司 一种动态补偿线程束warp的方法、处理器及计算机存储介质
US11861403B2 (en) 2020-10-15 2024-01-02 Nxp Usa, Inc. Method and system for accelerator thread management
CN112214243B (zh) * 2020-10-21 2022-05-27 上海壁仞智能科技有限公司 配置向量运算系统中的协作线程束的装置和方法
CN112579164B (zh) * 2020-12-05 2022-10-25 西安翔腾微电子科技有限公司 一种simt条件分支处理装置及方法
US11361400B1 (en) 2021-05-06 2022-06-14 Arm Limited Full tile primitives in tile-based graphics processing

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1234548A (zh) * 1997-10-06 1999-11-10 太阳微系统有限公司 混合执行堆栈及异常处理
US6088770A (en) * 1997-02-27 2000-07-11 Hitachi, Ltd. Shared memory multiprocessor performing cache coherency
US20060095675A1 (en) * 2004-08-23 2006-05-04 Rongzhen Yang Three stage hybrid stack model
CN1926509A (zh) * 2004-03-31 2007-03-07 英特尔公司 利用代码共享的堆栈高速缓存
US7574702B2 (en) * 2005-03-18 2009-08-11 Microsoft Corporation Method and apparatus for hybrid stack walking
US20110191522A1 (en) * 2010-02-02 2011-08-04 Condict Michael N Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory
US20120151179A1 (en) * 2010-12-09 2012-06-14 Seagate Technology Llc Memory stacks management

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US6574725B1 (en) * 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
US6609193B1 (en) 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
JP3632635B2 (ja) 2001-07-18 2005-03-23 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
TWI245221B (en) * 2002-08-22 2005-12-11 Ip First Llc Apparatus and method for selective memory attribute control
US7159211B2 (en) * 2002-08-29 2007-01-02 Indian Institute Of Information Technology Method for executing a sequential program in parallel with automatic fault tolerance
US7086063B1 (en) * 2003-03-25 2006-08-01 Electric Cloud, Inc. System and method for file caching in a distributed program build environment
US8683132B1 (en) 2003-09-29 2014-03-25 Nvidia Corporation Memory controller for sequentially prefetching data for a processor of a computer system
US7464370B2 (en) 2003-12-04 2008-12-09 International Business Machines Corporation Creating a method from a block of code
US7380086B2 (en) * 2003-12-12 2008-05-27 International Business Machines Corporation Scalable runtime system for global address space languages on shared and distributed memory machines
US7822779B2 (en) 2004-04-23 2010-10-26 Wal-Mart Stores, Inc. Method and apparatus for scalable transport processing fulfillment system
US7469318B2 (en) 2005-02-10 2008-12-23 International Business Machines Corporation System bus structure for large L2 cache array topology with different latency domains
US8516483B2 (en) 2005-05-13 2013-08-20 Intel Corporation Transparent support for operating system services for a sequestered sequencer
US8397013B1 (en) * 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
KR101257848B1 (ko) * 2005-07-13 2013-04-24 삼성전자주식회사 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법
US20070136523A1 (en) * 2005-12-08 2007-06-14 Bonella Randy M Advanced dynamic disk memory module special operations
US20070143582A1 (en) 2005-12-16 2007-06-21 Nvidia Corporation System and method for grouping execution threads
US7478190B2 (en) 2006-02-10 2009-01-13 University Of Utah Technology Commercialization Office Microarchitectural wire management for performance and power in partitioned architectures
JP4900784B2 (ja) 2006-04-13 2012-03-21 株式会社日立製作所 ストレージシステム及びストレージシステムのデータ移行方法
US8108844B2 (en) 2006-06-20 2012-01-31 Google Inc. Systems and methods for dynamically choosing a processing element for a compute kernel
US8606998B2 (en) 2006-08-24 2013-12-10 Advanced Micro Devices, Inc. System and method for instruction-based cache allocation policies
US7584335B2 (en) 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
US20080109795A1 (en) * 2006-11-02 2008-05-08 Nvidia Corporation C/c++ language extensions for general-purpose graphics processing unit
US7593263B2 (en) * 2006-12-17 2009-09-22 Anobit Technologies Ltd. Memory device with reduced reading latency
US8250556B1 (en) 2007-02-07 2012-08-21 Tilera Corporation Distributing parallelism for parallel processing architectures
CN101030152A (zh) * 2007-03-20 2007-09-05 华为技术有限公司 基于伪同步方式的操作控制方法及装置
US8095782B1 (en) * 2007-04-05 2012-01-10 Nvidia Corporation Multiple simultaneous context architecture for rebalancing contexts on multithreaded processing cores upon a context change
US8286196B2 (en) * 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US7856541B2 (en) 2007-04-18 2010-12-21 Hitachi, Ltd. Latency aligned volume provisioning methods for interconnected multiple storage controller configuration
KR101458028B1 (ko) * 2007-05-30 2014-11-04 삼성전자 주식회사 병렬 처리 장치 및 방법
DE102007025397B4 (de) * 2007-05-31 2010-07-15 Advanced Micro Devices, Inc., Sunnyvale System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
CN101329638B (zh) * 2007-06-18 2011-11-09 国际商业机器公司 程序代码的并行性的分析方法和系统
US8966488B2 (en) 2007-07-06 2015-02-24 XMOS Ltd. Synchronising groups of threads with dedicated hardware logic
TW200917277A (en) * 2007-10-15 2009-04-16 A Data Technology Co Ltd Adaptive hybrid density memory storage device and control method thereof
US20090240930A1 (en) * 2008-03-24 2009-09-24 International Business Machines Corporation Executing An Application On A Parallel Computer
US9477587B2 (en) * 2008-04-11 2016-10-25 Micron Technology, Inc. Method and apparatus for a volume management system in a non-volatile memory device
US8161483B2 (en) * 2008-04-24 2012-04-17 International Business Machines Corporation Configuring a parallel computer based on an interleave rate of an application containing serial and parallel segments
US8291427B2 (en) * 2008-06-09 2012-10-16 International Business Machines Corporation Scheduling applications for execution on a plurality of compute nodes of a parallel computer to manage temperature of the nodes during execution
US20100079454A1 (en) 2008-09-29 2010-04-01 Legakis Justin S Single Pass Tessellation
US9672019B2 (en) * 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8528001B2 (en) * 2008-12-15 2013-09-03 Oracle America, Inc. Controlling and dynamically varying automatic parallelization
US20100169540A1 (en) * 2008-12-30 2010-07-01 Sinclair Alan W Method and apparatus for relocating selected data between flash partitions in a memory device
US8321645B2 (en) 2009-04-29 2012-11-27 Netapp, Inc. Mechanisms for moving data in a hybrid aggregate
US8914799B2 (en) * 2009-06-30 2014-12-16 Oracle America Inc. High performance implementation of the OpenMP tasking feature
US8561046B2 (en) * 2009-09-14 2013-10-15 Oracle America, Inc. Pipelined parallelization with localized self-helper threading
US8271729B2 (en) * 2009-09-18 2012-09-18 International Business Machines Corporation Read and write aware cache storing cache lines in a read-often portion and a write-often portion
US9798543B2 (en) 2009-09-24 2017-10-24 Nvidia Corporation Fast mapping table register file allocation algorithm for SIMT processors
US8677106B2 (en) 2009-09-24 2014-03-18 Nvidia Corporation Unanimous branch instructions in a parallel thread processor
US8335892B1 (en) 2009-09-28 2012-12-18 Nvidia Corporation Cache arbitration between multiple clients
EP2499576A2 (en) 2009-11-13 2012-09-19 Richard S. Anderson Distributed symmetric multiprocessing computing architecture
US8612978B2 (en) * 2009-12-10 2013-12-17 Oracle America, Inc. Code execution utilizing single or multiple threads
US9696995B2 (en) 2009-12-30 2017-07-04 International Business Machines Corporation Parallel execution unit that extracts data parallelism at runtime
US9235531B2 (en) 2010-03-04 2016-01-12 Microsoft Technology Licensing, Llc Multi-level buffer pool extensions
CN101819675B (zh) 2010-04-19 2011-08-10 浙江大学 一种基于gpu的层次包围盒的快速构造方法
US8650554B2 (en) 2010-04-27 2014-02-11 International Business Machines Corporation Single thread performance in an in-order multi-threaded processor
US8898324B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Data access management in a hybrid memory server
US8751771B2 (en) 2010-09-29 2014-06-10 Nvidia Corporation Efficient implementation of arrays of structures on SIMT and SIMD architectures
US8499305B2 (en) * 2010-10-15 2013-07-30 Via Technologies, Inc. Systems and methods for performing multi-program general purpose shader kickoff
US8547385B2 (en) 2010-10-15 2013-10-01 Via Technologies, Inc. Systems and methods for performing shared memory accesses
US9552206B2 (en) 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
KR101713051B1 (ko) 2010-11-29 2017-03-07 삼성전자주식회사 하이브리드 메모리 시스템, 및 그 관리 방법
KR20120082218A (ko) * 2011-01-13 2012-07-23 (주)인디링스 파티션 정보를 기초로 호스트의 요청에 대한 처리 기법을 적응적으로 결정하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
JP5576305B2 (ja) * 2011-01-20 2014-08-20 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータの動作制御方法、プログラム及びシステム
US9195550B2 (en) 2011-02-03 2015-11-24 International Business Machines Corporation Method for guaranteeing program correctness using fine-grained hardware speculative execution
JP5668573B2 (ja) 2011-03-30 2015-02-12 日本電気株式会社 マイクロプロセッサ、メモリアクセス方法
US8769537B1 (en) * 2011-06-08 2014-07-01 Workday, Inc. System for partitioning batch processes
KR101895605B1 (ko) * 2011-11-21 2018-10-25 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
US9921873B2 (en) * 2012-01-31 2018-03-20 Nvidia Corporation Controlling work distribution for processing tasks
US9063759B2 (en) 2012-03-28 2015-06-23 International Business Machines Corporation Optimizing subroutine calls based on architecture level of called subroutine
US9575806B2 (en) 2012-06-29 2017-02-21 Intel Corporation Monitoring accesses of a thread to multiple memory controllers and selecting a thread processor for the thread based on the monitoring
TWI479314B (zh) * 2012-08-30 2015-04-01 Phison Electronics Corp 系統資料儲存方法、記憶體控制器與記憶體儲存裝置
US9436475B2 (en) 2012-11-05 2016-09-06 Nvidia Corporation System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088770A (en) * 1997-02-27 2000-07-11 Hitachi, Ltd. Shared memory multiprocessor performing cache coherency
CN1234548A (zh) * 1997-10-06 1999-11-10 太阳微系统有限公司 混合执行堆栈及异常处理
CN1926509A (zh) * 2004-03-31 2007-03-07 英特尔公司 利用代码共享的堆栈高速缓存
US20060095675A1 (en) * 2004-08-23 2006-05-04 Rongzhen Yang Three stage hybrid stack model
US7574702B2 (en) * 2005-03-18 2009-08-11 Microsoft Corporation Method and apparatus for hybrid stack walking
US20110191522A1 (en) * 2010-02-02 2011-08-04 Condict Michael N Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory
US20120151179A1 (en) * 2010-12-09 2012-06-14 Seagate Technology Llc Memory stacks management

Also Published As

Publication number Publication date
TW201439907A (zh) 2014-10-16
US20140129812A1 (en) 2014-05-08
US9727338B2 (en) 2017-08-08
CN103809964A (zh) 2014-05-21
US20140129783A1 (en) 2014-05-08
US9747107B2 (en) 2017-08-29
TW201439905A (zh) 2014-10-16
TW201443783A (zh) 2014-11-16
TWI510919B (zh) 2015-12-01
CN103809964B (zh) 2017-06-16
US20140130021A1 (en) 2014-05-08
TW201443639A (zh) 2014-11-16
US9710275B2 (en) 2017-07-18
CN103809936A (zh) 2014-05-21
US20140130052A1 (en) 2014-05-08
CN103809963A (zh) 2014-05-21
TWI488111B (zh) 2015-06-11
TWI494853B (zh) 2015-08-01
US9436475B2 (en) 2016-09-06

Similar Documents

Publication Publication Date Title
CN103885751A (zh) 将区别属性的存储器分配给共享数据对象的系统和方法
Aldinucci et al. Fastflow: High‐Level and Efficient Streaming on Multicore
CN103765376B (zh) 具有无阻塞并行架构的图形处理器
Ben-Nun et al. Memory access patterns: The missing piece of the multi-GPU puzzle
CN102902512B (zh) 一种基于多线程编程及消息队列的多线程并行处理方法
KR101759266B1 (ko) 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법
Wang et al. Dynamic thread block launch: A lightweight execution mechanism to support irregular applications on gpus
US7624246B2 (en) Method and system for memory allocation in a multiprocessing environment
US20200183738A1 (en) Accelerating dataflow signal processing applications across heterogeneous cpu/gpu systems
CN103425533A (zh) 用于管理嵌套执行流的方法和系统
CN102708009B (zh) 一种基于cuda实现多任务共享gpu的方法
CN103389944A (zh) 用于具有存储器分配限制的协处理器的虚拟存储器结构
US20100031267A1 (en) Distribution Data Structures for Locality-Guided Work Stealing
De La Lama et al. Static multi-device load balancing for opencl
CN101292225A (zh) 减少并行程序中的循环的块的无锁调度
Cederman et al. Dynamic load balancing using work-stealing
CN110502334A (zh) 基于混合内存架构的带宽感知任务窃取方法、系统及芯片
CN106293736B (zh) 用于粗粒度多核计算系统的两级编程装置及其计算方法
Cieslewicz et al. Parallel buffers for chip multiprocessors
CN114930292A (zh) 协作式工作窃取调度器
Beri et al. A scheduling and runtime framework for a cluster of heterogeneous machines with multiple accelerators
Wesolowski An application programming interface for general purpose graphics processing units in an asynchronous runtime system
CN116775265A (zh) 协作组阵列
CN116774914A (zh) 分布式共享存储器
CN116775266A (zh) 用于处理器中的线程组的可扩展负载均衡的技术

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140625