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

文档序号:6517796阅读:255来源:国知局
转译程序函数以正确处置局部作用域变量的系统和方法
【专利摘要】转译程序的函数的系统和方法。在一个实施例中,系统包括:(1)局部作用域变量标识器,其可操作以将在函数中的至少一些中所采用的局部作用域变量标识为是线程共享局部作用域变量或线程私有局部作用域变量的二者之一,以及(2)函数转译器,其与局部作用域变量标识器相关联并可操作以转译函数中的该至少一些以使线程共享存储器被采用以存储线程共享局部作用域变量并使线程私有存储器被采用以存储线程私有局部作用域变量。
【专利说明】转译程序函数以正确处置局部作用域变量的系统和方法
[0001]相关申请的交叉引用
[0002]本申请要求于2012年11月5日由Lin等人所提交的、序列号为61/722,661的、标题为 “EXECUTING SEQUENTIAL CODE USING A GROUP OF THREADS” 的美国临时申请以及于2012年12月21日由Lin等人所提交的、序列号为13/724,202的、标题为“SYSTEM ANDMETHOD FOR TRANSLATING PROGRAM FUNCTIONS FOR CORRECT HANDLING OF L0CAL-SC0PEVARIABLES AND COMPUTING SYTEM INCORPORATING THE SAME”的美国申请的优先权,在先申请与本申请共同受让,并在本文通过援引的方式对二者加以合并。
【技术领域】
[0003]本申请总地指向计算系统,并且,更具体地,指向用于转译程序函数以正确处置局部作用域(local-scope)变量的系统和方法以及包含其的计算系统。
【背景技术】
[0004]如本领域技术人员所熟悉的,软件程序使用变量,必须为其在存储器中分配存储空间。通常以堆栈的形式来分配存储空间。
[0005]一些程序将其变量组织成级别以简化其数据结构。例如,一些被称为局部作用域变量的变量,可在程序中仅使用在一个函数(函数作用域)或语句的一个块(块作用域)中。其他被称为全局作用域变量的变量,可由整个程序所使用。例如,下文的表1阐述示出两级局部作用域变量的伪 代码:数组a[]是函数作用域变量,并且数组b[]是块作用域变量。
[0006]
【权利要求】
1.一种用于转译程序的函数的系统,包括: 局部作用域变量标识器,其可操作以将在所述函数中的至少一些中所采用的局部作用域变量标识为是线程共享局部作用域变量或线程私有局部作用域变量的二者之一;以及函数转译器,其与所述局部作用域变量标识器相关联并可操作以转译所述函数中的所述至少一些,以使线程共享存储器被采用以存储所述线程共享局部作用域变量并使线程私有存储器被采用以存储所述线程私有局部作用域变量。
2.根据权利要求1所述的系统,其中所述局部作用域变量标识器包括: 线程共享局部作用域变量标识器,其可操作以如果函数包含并行构造并且多个线程可根据编程模型在所述并行构造内获得对所述局部作用域变量的访问权限或者所述局部作用域变量逸出所述函数,则将局部作用域变量标识为线程共享局部作用域变量;以及 线程私有局部作用域变量标识器,其与所述线程共享局部作用域变量标识器相关联并可操作以将其余局部作用域变量标识为线程私有局部作用域变量。
3.根据权利要求2所述的系统,其中所述编程模型选择自包含下面各项的组: OpenMP编程模型,以及 OpenACC编程模型。
4.根据权利要求1所述的系统,其中所述函数编译器进一步可操作以采用在所述程序的顺序区的执行期间具有第一状态并且在所述程序的并行区的执行期间具有第二状态的标志。
5.根据权利要求1所述的系统,其中所述线程共享存储器是块作用域存储器。
6.根据权利要求1所述的系统,进一步包括存储器预分配器,其配置为预分配所述线程共享存储器和线程私有存储器。
7.一种转译程序的函数的方法,包括: 创建所述函数中的至少一些的相应共享克隆和私有克隆;以及在所述程序的顺序区的执行期间唤起所述共享克隆代替所述相应函数并且在所述程序的并行区的执行期间唤起所述私有克隆代替所述相应函数。
8.根据权利要求7所述的方法,进一步包括: 将所述函数中所采用的局部作用域变量标识为是线程共享局部作用域变量或线程私有局部作用域变量的二者之一; 针对所述共享克隆中的至少一个,分配线程共享存储器用于线程共享局部作用域变量的存储和分配线程私有存储器用于所述线程私有局部作用域变量的存储;以及 针对所述私有克隆中的至少一个,分配线程私有存储器用于所有局部作用域变量的存储。
9.一种转译程序的函数的方法,包括: 将所述函数中的至少一些标识为正在所述程序的顺序区期间执行或正在所述程序的并行区期间执行的二者之一; 将在所述函数中的所述至少一些中所采用的局部作用域变量标识为是线程共享局部作用域变量或线程私有局部作用域变量的二者之一;以及 分配线程私有存储器用于在于所述程序的所述并行区期间所执行的函数中所采用的所述线程私有局部作用域变量和线程共享局部作用域变量的存储,并分配线程共享存储器用于在于所述程序的所述顺序区期间所执行的函数中所采用的线程共享局部作用域变量的存储。
10.根据权利要求9所述的方法,其中所述标识所述局部作用域变量包括: 如果函数包含并行构造并且多个线程能根据编程模型在所述并行构造内获得对局部作用域变量的访问权限或者所述局部作用域变量逸出所述函数,那么将所述局部作用域变量标识为线程共享局部作用域变量;以及 将其余局部作用域变量 标识为线程私有局部作用域变量。
【文档编号】G06F9/50GK103809963SQ201310538507
【公开日】2014年5月21日 申请日期:2013年11月4日 优先权日:2012年11月5日
【发明者】林 源, 高塔姆·查克拉瓦蒂, 杰迪普·马拉蒂, 权冠, 阿米特·萨布尼 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1