CN103809963A - 转译程序函数以正确处置局部作用域变量的系统和方法 - Google Patents

转译程序函数以正确处置局部作用域变量的系统和方法 Download PDF

Info

Publication number
CN103809963A
CN103809963A CN201310538507.8A CN201310538507A CN103809963A CN 103809963 A CN103809963 A CN 103809963A CN 201310538507 A CN201310538507 A CN 201310538507A CN 103809963 A CN103809963 A CN 103809963A
Authority
CN
China
Prior art keywords
thread
local action
action domain
domain variable
function
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
CN201310538507.8A
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 CN103809963A publication Critical patent/CN103809963A/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/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
    • 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,202的、标题为“SYSTEM AND METHODFOR TRANSLATING PROGRAM FUNCTIONS FOR CORRECT HANDLINGOF LOCAL-SCOPE VARIABLES AND COMPUTING SYTEMINCORPORATING THE SAME”的美国申请的优先权,在先申请与本申请共同受让,并在本文通过援引的方式对二者加以合并。
技术领域
本申请总地指向计算系统,并且,更具体地,指向用于转译程序函数以正确处置局部作用域(local-scope)变量的系统和方法以及包含其的计算系统。
背景技术
如本领域技术人员所熟悉的,软件程序使用变量,必须为其在存储器中分配存储空间。通常以堆栈的形式来分配存储空间。
一些程序将其变量组织成级别以简化其数据结构。例如,一些被称为局部作用域变量的变量,可在程序中仅使用在一个函数(函数作用域)或语句的一个块(块作用域)中。其他被称为全局作用域变量的变量,可由整个程序所使用。例如,下文的表1阐述示出两级局部作用域变量的伪代码:数组a[]是函数作用域变量,并且数组b[]是块作用域变量。
Figure BDA0000407983820000021
表1-函数作用域和块作用域变量的示例
出于理解表1和本公开的剩余内容的目的,术语“foo”和“bar”是函数的任意名称。因此“foo”和“bar”可以替代任何函数。
一些程序是并行程序,因为其能够在诸如图形处理单元(GPU)的并行处理器中并行地执行。并行程序具有代码的在线程中无法并行执行的顺序区以及代码的在线程中可并行执行的并行区。在并行程序中,多个线程需要获得对由编程模型所定义的一些局部作用域变量的访问权限,其中根据所述编程模型开发程序。OpenMP和OpenACC是用于开发并行程序的常规编程模型的两个示例。下文的表2和3阐述示出各自的OpenMP和OpenACC示例的伪代码。
Figure BDA0000407983820000022
表2-OpenMP示例
Figure BDA0000407983820000023
表3-OpenACC示例
发明内容
一个方面提供用于转译程序的函数的系统。在一个实施例中,系统包括:(1)局部作用域变量标识器,其可操作以将在函数中的至少一些中所采用的局部作用域变量标识为是线程共享(thread-shared)局部作用域变量或线程私有(thread-private)局部作用域变量的二者之一,以及(2)函数转译器,其与局部作用域变量标识器相关联并可操作以转译函数中的该至少一些以使线程共享存储器被采用以存储线程共享局部作用域变量并使线程私有存储器被采用以存储线程私有局部作用域变量。
另一方面提供转译程序的函数的方法。在一个实施例中,方法包括:(1)将函数中的至少一些标识为正在程序的顺序区期间执行或正在程序的并行区期间执行的二者之一,(2)将在函数中的该至少一些中所采用的局部作用域变量标识为是线程共享局部作用域变量或线程私有局部作用域变量的二者之一,以及(3)分配线程私有存储器用于在程序的并行区期间所执行的函数中所采用的线程私有局部作用域变量和线程共享局部作用域变量的存储,并分配线程共享存储器用于在程序的顺序区期间所执行的函数中所采用的线程共享局部作用域变量的存储。
在另一实施例中,方法包括:(1)创建函数中的至少一些的相应共享克隆和私有克隆,以及(2)在程序的顺序区的执行期间唤起共享克隆代替相应函数并在程序的并行区的执行期间唤起私有克隆代替相应函数。
附图说明
现在结合附图对下面的描述加以参考,其中:
图1是计算系统的框图,该计算系统能够进行并行处理并可操作以包含或实行用于转译函数以正确处置局部作用域变量的系统和方法;
图2是用于转译函数以正确处置局部作用域变量的系统的一个实施例的框图;
图3是转译函数以正确处置局部作用域变量的方法的一个实施例的流程图;以及
图4是转译函数以正确处置局部作用域变量的方法的另一实施例的流程图。
具体实施方式
一些计算机架构,包括那些以通用中央处理单元(CPU)为中心的架构,典型地提供存储器结构,该存储器结构在默认情况下在给定程序的整体上被共享,使得程序中的所有块和块中的所有函数具有对所有变量的访问权限。在这类架构中分配存储空间是直截了当的;其被分配在共享存储器结构中。
然而,某些计算系统,诸如GPU,采用分层的存储器架构,其中某一存储器是线程私有的(仅可由给定的线程访问),并且另外一个存储器是线程共享的(可由例如在程序的整体或给定的块中的多个线程访问)。
认识到的是,在一些程序中所定义的局部作用域变量是专门使用在一个线程中的,但其他的需要在线程之间共享。然而进一步认识到的是,许多编程模型(例如OpenMP或OpenACC)中的程序不在线程私有和线程共享的局部作用域变量之间加以区分。
保守但繁琐的解决问题的方法可以是针对所有的局部作用域变量在线程共享存储器中分配存储空间。然而,本文认识到的是,线程共享存储器通常太小而无法包含所有局部作用域变量。可替代方法可以是针对所有的局部作用域变量在线程私有存储器中分配存储空间。然而,无法随后在线程之间以直截了当的方式共享局部作用域变量。反而,局部作用域变量将不得不在线程私有存储器之间被拷贝以达到共享目的,这是笨拙且缓慢的程序执行。又一方法可以是重写程序体以将所调用的函数包含到调用它们的函数中,该技术称为代码嵌入(inlining)。然而,这让程序结构晦涩难懂,使其难以理解和修改。另一方法可以是手动地分析程序,手动地指派局部作用域变量用于存储在线程私有或线程共享存储器的二者之一中。然而,该方法是劳动密集的并且易于出错。
本文认识到的是,需要自动化的机制用于转译程序的函数,使得要求线程共享存储器的局部作用域变量(线程共享局部作用域变量)被标识。一旦被标识,局部作用域变量可随后被正确地处置。更具体地,线程共享存储器中的存储空间可被分配用于线程共享局部作用域变量,并且线程本地存储器中的存储空间可被分配用于不要求共享存储器的局部作用域变量(线程私有局部作用域变量)。
因此,本文所引入的是用于转译函数以在线程共享和私有的上下文中正确处置局部作用域变量的系统和方法的各种实施例。总的来讲,系统和方法实施例将局部作用域变量标识为是线程共享局部作用域变量或线程私有局部作用域变量的二者之一,并基于其标识和采用其的函数正被执行于其中的区来分配线程私有或线程共享存储器以将局部作用域变量存储在:顺序区或并行区的二者之一中。
在更详细描述新颖的系统和方法的各种实施例之前,现在将描述代表性的计算系统。
图1是计算系统100的框图,在该计算系统100内可实现本发明的一个或多个方面。计算系统100包括被组织成线程组104或“线程束”的多个线程处理器或核心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。管线控制单元108创建、管理、调度、执行和提供机制以同步线程组104-1到104-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最终执行主线程。在计算系统100上所执行的程序被构造为内核的序列。典型地,每个内核在下一内核开始之前完成执行。在某些实施例中,计算系统100可并行执行多个内核,这取决于内核的大小。每个内核被组织为要在核心106上所执行的线程的层级。
已描述代表性计算系统,现在将更详细描述用于转译函数以在线程共享和私有的上下文中正确处置局部作用域变量的新颖系统和方法的各种实施例。
图2是用于转译函数以正确处置局部作用域变量的系统200的一个实施例的框图。系统200包括局部作用域变量标识器202和函数转译器208。程序210的函数212由局部作用域变量标识器202和函数转译器208所处理以产生可在计算系统220上执行的程序内核218。计算系统220包括处理器核心222、线程私有存储器224和线程共享存储器226。所有存储器核心222可获得对线程共享存储器226的访问权限。处理器核心222中的每一个可获得对其相关联的线程私有存储器224的块的访问权限。
程序210可被分摊到顺序区214和并行区216中。程序210内的函数212可从顺序区214和并行区216的二者之一中执行,并且通常在程序210的序列中的各点处从这二者执行。函数212采用关于函数212的特定函数是全局作用域或局部作用域二者之一的变量。在特定函数内的局部作用域变量中存在线程共享和线程私有变量。线程共享局部作用域变量可由程序内核218内的所有并行线程访问并在计算系统220上执行。线程私有局部作用域变量仅可由变量针对其被实例化的线程访问。
局部作用域变量标识器202包括线程共享局部作用域变量标识器204和线程私有局部作用域变量标识器206。线程共享局部作用域变量标识器204通过确定以下各项来在函数212的单一函数上进行操作:(1)单一函数是否包含并行构造,在该并行构造内对局部作用域变量的访问可由并行构造内的不同线程进行,或(2)单一函数内的局部作用域变量是否逸出(escape)到执行的其他线程(通过逸出分析)。如果这些条件的二者之一为真,那么局部作用域变量是线程共享局部作用域变量。否则,线程私有局部作用域变量标识器206将局部作用域变量标识为线程私有局部作用域。
函数转译器208通过在程序内核218中生成关于针对单一函数中的每个局部作用域变量应如何分配存储器的指示来在函数212的单一函数上进行操作。针对线程共享局部作用域变量,分配线程共享存储器226的块。针对线程私有局部作用域变量,分配线程私有存储器224的块。当程序内核218在计算系统220内的处理器核心222上执行时,即在运行时(run-time)处,根据由函数转译器208所生成的指示,针对变量分配存储器的进程开始。
本文所实现的是转译函数使得局部作用域变量被选择性地分配线程共享存储器或线程私有存储器的两个方法。本文所实现的方法不要求“代码嵌入”所有函数调用或全程序分析。本文所实现的方法是通用的,并支持单独编译和链接,这是构建大型模块化软件的一个基础。
本文所公开的两个方法利用并行编程模块(例如OpenMP和OpenACC)的两个特性。第一个是并非所有局部作用域变量均需要被共享。本文所实现的方法认识到该事实并标识必要的线程共享局部作用域变量。第二个特性是当函数在程序的并行区内被调用时,线程无法得到对其他线程的局部作用域变量的访问权限。本文所实现的方法认识到,当在程序的并行区内所调用的函数内被实例化时,局部作用域变量不需要被共享。
本文所公开的两个方法中的第一个的一个具体实施例包括以下步骤:
1.针对共享堆栈预分配线程共享存储器的块。针对与每个线程相关联的私有堆栈预分配线程私有存储器的块。
2.函数内的线程共享局部作用域变量和线程私有局部作用域变量被标识如下:
a.如果函数包含并行构造并可由不同线程根据编程模型在并行构造内进行对局部作用域变量的访问,那么局部作用域变量被标识为线程共享局部作用域变量。
b.如果局部作用域变量逸出,那么变量被标识为线程共享局部作用域变量。
c.所有其他局部作用域变量被标识为线程私有局部作用域变量。
3.函数foo()被克隆到两个额外函数中:共享克隆foo_shared()和私有克隆foo_private()。
a.在foo_shared()中,
i.步骤2中所标识的线程共享局部作用域变量分配在线程共享存储器中。步骤2中所标识的线程私有局部作用域变量分配在线程私有存储器中。
ii.如果foo()包含对另一函数bar()的直接调用并且bar()在并行构造内被调用,那么对bar()的调用在foo_shared()中被转译成对bar_private()的调用。如果bar()在并行构造外被调用,那么对bar()的调用在foo_shared()中被转译成对bar_shared()的调用。
iii.如果foo()不包含任何并行区,那么对另一函数bar()的直接调用在foo_shared()中被转译成对bar_shared()的调用。
b.在foo_private()中,
i.所有局部作用域变量(无论其在步骤2中被标识为什么)被分配在线程私有存储器中。
ii.对另一函数bar()的调用被转译成对其私有克隆bar_private()的调用,因为将仅从并行区内调用私有克隆。
4.原始函数foo()被转译成下面的形式:
Figure BDA0000407983820000081
表4-所转译的函数
其中“in_parallel_flag”是下文步骤6中所描述的每线程标志。当寻址函数时,使用所转译的形式的地址。
5.在步骤3和4之后,仅私有克隆直接在任何并行区内被调用。仅共享克隆直接在任何并行区外被调用。对从步骤4所转译的版本做出间接调用。仅线程共享或潜在地线程共享的局部作用域变量被放入线程共享存储器中。
6.每线程标志用来标记线程状态。标志的值是“真”或“伪”二者之一。当线程进入并行区时,标志设为“真”。当线程离开并行区时,标志设为“伪”。
图3是转译函数以正确处置局部作用域变量的方法的一个实施例的流程图。方法开始于开始步骤310。在步骤320中,预分配线程共享存储器和线程私有存储器用于局部作用域变量的存储。在一个实施例中,线程共享存储器是块作用域存储器。
在步骤330中,创建函数中的至少一些的相应共享克隆和私有克隆。在步骤340中,将函数中所采用的局部作用域变量标识为是线程共享局部作用域变量或线程私有局部作用域变量的二者之一。在步骤350中,针对共享克隆中的至少一个,分配线程共享存储器用于线程共享局部作用域变量的存储,以及分配线程私有存储器用于线程私有局部作用域变量的存储。在步骤360中,针对私有克隆中的至少一个,分配线程私有存储器用于所有局部作用域变量的存储。在决策步骤370中,确定是否程序的并行区正在被执行。如果是,那么在步骤380中,在执行期间唤起私有克隆代替相应函数。如果否,那么在步骤390中,唤起共享克隆代替相应函数。
在一个实施例中,步骤380、390的唤起通过下面各项来达到目的:(1)在共享克隆的该至少一个中,转译函数的调用:(1a)将在并行构造中所作出的函数的调用转译成函数的私有克隆的调用,和(1b)将在顺序构造中所作出的函数的调用转译成函数的共享克隆的调用,以及(2)在私有克隆的该至少一个中,将函数的调用转译成函数的私有克隆的调用。在相关实施例中,步骤380、390的唤起通过在执行程序中采用函数中的至少一些的地址来达到目的。在另一相关实施例中,步骤380、390的唤起通过转译函数中的该至少一些以使唤起被实行来达到目的。在相关实施例中,分配包括采用在顺序区的执行期间具有第一状态并且在并行区的执行期间具有第二状态的标志。方法结束于结束步骤395。
本文所公开的两个方法中的第二个的一个具体实施例包括以下步骤:
1.针对共享堆栈预分配线程共享存储器的块。针对与每个线程相关联的私有堆栈预分配线程私有存储器的块。
2.函数内的线程共享局部作用域变量和线程私有局部作用域变量被标识如下:
a.如果函数包含并行构造并且可由不同线程根据编程模型在并行构造内进行对局部作用域变量的访问,那么局部作用域变量被标识为线程共享局部作用域变量。
b.如果局部作用域变量逸出,那么变量被标识为线程共享局部作用域变量。
c.所有其他局部作用域变量被标识为线程私有局部作用域变量。
3.在函数foo()中,步骤2中所标识的所有线程私有局部作用域变量分配在线程私有存储器中。步骤2中所标识的线程共享局部作用域变量中的每一个基于函数在串行还是并行的上下文内被调用而被有条件地分配。
表5-所转译的函数
4.每线程标志用来标记线程状态。标志的值是“真”或“伪”二者之一。当线程进入并行区时,标志设为“真”。当线程离开并行区时,标志设为“伪”。
图4是转译函数以正确处置局部作用域变量的方法的另一实施例的流程图。方法开始于开始步骤410。在步骤420中,预分配线程共享存储器和线程私有存储器用于局部作用域变量的存储。在一个实施例中,线程共享存储器是块作用域存储器。
在步骤430中,将函数中的至少一些标识为正在程序的顺序区期间执行或正在程序的并行区期间执行的二者之一。在步骤440中,将在函数中的该至少一些中所采用的局部作用域变量标识为是线程共享局部作用域变量或线程私有局部作用域变量的二者之一。在一个实施例中,对局部作用域变量的标识包括:如果函数包含并行构造并且多个线程可根据编程模型在并行构造内获得对局部作用域变量的访问权限或局部作用域变量逸出函数,那么将局部作用域变量标识为线程共享局部作用域变量,以及将其余局部作用域变量标识为线程私有局部作用域变量。
在步骤450中,分配线程私有存储器用于在于程序的并行区期间所执行的函数中所采用的线程私有局部作用域变量和线程共享局部作用域变量的存储。在步骤460中,分配线程共享存储器用于在于程序的顺序区期间所执行的函数中所采用的线程共享局部作用域变量的存储。在一个实施例中,转译函数中的至少一些以使分配被实行。在相关实施例中,分配包括采用在顺序区的执行期间具有第一状态并且在并行区的执行期间具有第二状态的标志。方法结束于结束步骤470。
本申请相关领域技术人员应理解的是,可对所描述的实施例做出其他和进一步的添加、删除、替换和修改。

Claims (10)

1.一种用于转译程序的函数的系统,包括:
局部作用域变量标识器,其可操作以将在所述函数中的至少一些中所采用的局部作用域变量标识为是线程共享局部作用域变量或线程私有局部作用域变量的二者之一;以及
函数转译器,其与所述局部作用域变量标识器相关联并可操作以转译所述函数中的所述至少一些,以使线程共享存储器被采用以存储所述线程共享局部作用域变量并使线程私有存储器被采用以存储所述线程私有局部作用域变量。
2.根据权利要求1所述的系统,其中所述局部作用域变量标识器包括:
线程共享局部作用域变量标识器,其可操作以如果函数包含并行构造并且多个线程可根据编程模型在所述并行构造内获得对所述局部作用域变量的访问权限或者所述局部作用域变量逸出所述函数,则将局部作用域变量标识为线程共享局部作用域变量;以及
线程私有局部作用域变量标识器,其与所述线程共享局部作用域变量标识器相关联并可操作以将其余局部作用域变量标识为线程私有局部作用域变量。
3.根据权利要求2所述的系统,其中所述编程模型选择自包含下面各项的组:
OpenMP编程模型,以及
OpenACC编程模型。
4.根据权利要求1所述的系统,其中所述函数编译器进一步可操作以采用在所述程序的顺序区的执行期间具有第一状态并且在所述程序的并行区的执行期间具有第二状态的标志。
5.根据权利要求1所述的系统,其中所述线程共享存储器是块作用域存储器。
6.根据权利要求1所述的系统,进一步包括存储器预分配器,其配置为预分配所述线程共享存储器和线程私有存储器。
7.一种转译程序的函数的方法,包括:
创建所述函数中的至少一些的相应共享克隆和私有克隆;以及
在所述程序的顺序区的执行期间唤起所述共享克隆代替所述相应函数并且在所述程序的并行区的执行期间唤起所述私有克隆代替所述相应函数。
8.根据权利要求7所述的方法,进一步包括:
将所述函数中所采用的局部作用域变量标识为是线程共享局部作用域变量或线程私有局部作用域变量的二者之一;
针对所述共享克隆中的至少一个,分配线程共享存储器用于线程共享局部作用域变量的存储和分配线程私有存储器用于所述线程私有局部作用域变量的存储;以及
针对所述私有克隆中的至少一个,分配线程私有存储器用于所有局部作用域变量的存储。
9.一种转译程序的函数的方法,包括:
将所述函数中的至少一些标识为正在所述程序的顺序区期间执行或正在所述程序的并行区期间执行的二者之一;
将在所述函数中的所述至少一些中所采用的局部作用域变量标识为是线程共享局部作用域变量或线程私有局部作用域变量的二者之一;以及
分配线程私有存储器用于在于所述程序的所述并行区期间所执行的函数中所采用的所述线程私有局部作用域变量和线程共享局部作用域变量的存储,并分配线程共享存储器用于在于所述程序的所述顺序区期间所执行的函数中所采用的线程共享局部作用域变量的存储。
10.根据权利要求9所述的方法,其中所述标识所述局部作用域变量包括:
如果函数包含并行构造并且多个线程能根据编程模型在所述并行构造内获得对局部作用域变量的访问权限或者所述局部作用域变量逸出所述函数,那么将所述局部作用域变量标识为线程共享局部作用域变量;以及
将其余局部作用域变量标识为线程私有局部作用域变量。
CN201310538507.8A 2012-11-05 2013-11-04 转译程序函数以正确处置局部作用域变量的系统和方法 Pending CN103809963A (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,202 US9727338B2 (en) 2012-11-05 2012-12-21 System and method for translating program functions for correct handling of local-scope variables and computing system incorporating the same
US13/724,202 2012-12-21

Publications (1)

Publication Number Publication Date
CN103809963A true CN103809963A (zh) 2014-05-21

Family

ID=50623483

Family Applications (4)

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

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201310538409.4A Pending CN103885751A (zh) 2012-11-05 2013-11-04 将区别属性的存储器分配给共享数据对象的系统和方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201310538631.4A Active CN103809964B (zh) 2012-11-05 2013-11-04 用线程组执行顺序代码的系统和方法和包含其的simt处理器
CN201310538671.9A Pending CN103809936A (zh) 2012-11-05 2013-11-04 编译或运行时执行分叉-合并数据并行程序的系统和方法

Country Status (3)

Country Link
US (4) US9710275B2 (zh)
CN (4) CN103885751A (zh)
TW (4) TW201443783A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109471673A (zh) * 2017-09-07 2019-03-15 智微科技股份有限公司 用来于电子装置中进行硬件资源管理的方法及电子装置

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710275B2 (en) 2012-11-05 2017-07-18 Nvidia Corporation System and method for allocating memory of differing properties to shared data objects
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
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
US10061591B2 (en) 2014-06-27 2018-08-28 Samsung Electronics Company, Ltd. Redundancy elimination in single instruction multiple data/thread (SIMD/T) execution processing
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 智微科技股份有限公司 用來於一電子裝置中進行硬體資源管理之方法以及對應的電子裝置
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 浪潮电子信息产业股份有限公司 一种基于异构计算平台的业务处理方法
US20210294673A1 (en) * 2020-03-19 2021-09-23 Nvidia Corporation Techniques for orchestrating stages of thread synchronization
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
US20230229489A1 (en) * 2022-01-14 2023-07-20 Next Silicon Ltd Extending parallel software threads
CN117009054B (zh) * 2023-07-27 2024-06-28 北京登临科技有限公司 一种simt装置、线程组动态构建方法及处理器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1431587A (zh) * 2002-08-22 2003-07-23 智慧第一公司 选择性控制存储器属性的装置及方法
US20050125774A1 (en) * 2003-12-04 2005-06-09 International Business Machines Corporation Creating a method from a block of code
US20090031290A1 (en) * 2007-06-18 2009-01-29 International Business Machines Corporation Method and system for analyzing parallelism of program code
US20110022672A1 (en) * 2004-04-23 2011-01-27 Wal-Mart Stores, Inc. Method and Apparatus for Scalable Transport Processing Fulfillment System
US20120131309A1 (en) * 2010-11-18 2012-05-24 Texas Instruments Incorporated High-performance, scalable mutlicore hardware and software system

Family Cites Families (78)

* 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
JP3849951B2 (ja) 1997-02-27 2006-11-22 株式会社日立製作所 主記憶共有型マルチプロセッサ
US6009517A (en) * 1997-10-06 1999-12-28 Sun Microsystems, Inc. Mixed execution stack and exception handling
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 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
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
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
WO2005096136A1 (en) * 2004-03-31 2005-10-13 Intel Corporation Stack caching using code sharing
US20060095675A1 (en) 2004-08-23 2006-05-04 Rongzhen Yang Three stage hybrid stack model
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
US7574702B2 (en) * 2005-03-18 2009-08-11 Microsoft Corporation Method and apparatus for hybrid stack walking
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
US8291400B1 (en) 2007-02-07 2012-10-16 Tilera Corporation Communication scheduling 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
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
US20110191522A1 (en) 2010-02-02 2011-08-04 Condict Michael N Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory
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
US8547385B2 (en) 2010-10-15 2013-10-01 Via Technologies, Inc. Systems and methods for performing shared memory accesses
US8499305B2 (en) * 2010-10-15 2013-07-30 Via Technologies, Inc. Systems and methods for performing multi-program general purpose shader kickoff
KR101713051B1 (ko) 2010-11-29 2017-03-07 삼성전자주식회사 하이브리드 메모리 시스템, 및 그 관리 방법
US8996842B2 (en) 2010-12-09 2015-03-31 Seagate Technology Llc Memory stacks management
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 系統資料儲存方法、記憶體控制器與記憶體儲存裝置
US9710275B2 (en) 2012-11-05 2017-07-18 Nvidia Corporation System and method for allocating memory of differing properties to shared data objects

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1431587A (zh) * 2002-08-22 2003-07-23 智慧第一公司 选择性控制存储器属性的装置及方法
US20050125774A1 (en) * 2003-12-04 2005-06-09 International Business Machines Corporation Creating a method from a block of code
US20110022672A1 (en) * 2004-04-23 2011-01-27 Wal-Mart Stores, Inc. Method and Apparatus for Scalable Transport Processing Fulfillment System
US20090031290A1 (en) * 2007-06-18 2009-01-29 International Business Machines Corporation Method and system for analyzing parallelism of program code
US20120131309A1 (en) * 2010-11-18 2012-05-24 Texas Instruments Incorporated High-performance, scalable mutlicore hardware and software system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109471673A (zh) * 2017-09-07 2019-03-15 智微科技股份有限公司 用来于电子装置中进行硬件资源管理的方法及电子装置
CN109471673B (zh) * 2017-09-07 2022-02-01 智微科技股份有限公司 用来于电子装置中进行硬件资源管理的方法及电子装置

Also Published As

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

Similar Documents

Publication Publication Date Title
CN103809963A (zh) 转译程序函数以正确处置局部作用域变量的系统和方法
US9959337B2 (en) Independent data processing environments within a big data cluster system
TWI525540B (zh) 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯
US9110826B2 (en) Memory allocation in a system using memory striping
CN103049334B (zh) 一种任务处理的方法和虚拟机
EP2619687B1 (en) Sharing virtual functions in a shared virtual memory between heterogeneous processors of a computing platform
US10474510B2 (en) Declarative properties for data collections
US9886328B2 (en) Flexible binding of tasks to target resources
US10437649B2 (en) Task mapping for heterogeneous platforms
US8863099B2 (en) Compilation and placement of instructions in a memory system
JP2015526821A5 (zh)
CN111324571A (zh) 一种容器集群管理方法、装置及系统
CN103049328A (zh) 计算机系统中内存资源分配方法
JP2021034023A (ja) アクセラレータにおいてヘテロジニアスコンポーネントを設定する方法及び装置
CN103678098A (zh) 一种hadoop程序测试的方法和系统
US20170262312A1 (en) Multi-grained memory operands
US7454749B2 (en) Scalable parallel processing on shared memory computers
US9606802B2 (en) Processor system with predicate register, computer system, method for managing predicates and computer program product
US10379973B2 (en) Allocating storage in a distributed storage system
US8914779B2 (en) Data placement for execution of an executable
JP6817827B2 (ja) アクセラレータ処理管理装置、ホスト装置、アクセラレータ処理実行システム、方法およびプログラム
KR20070088098A (ko) 자바 환경에서 자원을 관리하는 장치 및 방법
KR102649076B1 (ko) Gpu 기반 질의 처리 가속 방법 및 컴퓨팅 시스템
US9547522B2 (en) Method and system for reconfigurable virtual single processor programming model
CN118057306A (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

Application publication date: 20140521

WD01 Invention patent application deemed withdrawn after publication