Reconstructing program control flow
    31.
    发明授权
    Reconstructing program control flow 有权
    重构程序控制流程

    公开(公告)号:US08510724B2

    公开(公告)日:2013-08-13

    申请号:US12972198

    申请日:2010-12-17

    IPC分类号: G06F9/45

    CPC分类号: G06F8/51 G06F8/53

    摘要: The present invention extends to methods, systems, and computer program products for reconstructing program control flow. Embodiments include implementing or morphing a control flow graph (“CFG”) into an arbitrary loop structure to reconstruct (preserve) control flow from original source code. Loop structures can be optimized and can adhere to target platform constraints. In some embodiments, C++ source code (a first higher level format) is translated into a CFG (a lower level format). The CFG is then translated into High Level Shader Language (“HLSL”) source code (a second different higher level format) for subsequent compilation into SLSL bytecode (that can then be executed at a Graphical Processing Unit (“GPU”)). The control flow from the C++ source code is preserved in the HLSL source code.

    摘要翻译: 本发明扩展到用于重建程序控制流的方法,系统和计算机程序产品。 实施例包括将控制流程图(“CFG”)实现或变形为任意循环结构,以重构(保留)来自原始源代码的控制流程。 循环结构可以进行优化,并可以遵守目标平台约束。 在一些实施例中,将C ++源代码(第一较高级格式)转换成CFG(较低级格式)。 然后将CFG转换为高级着色器语言(“HLSL”)源代码(第二种不同的较高级别格式),以便后续编译成SLSL字节码(然后可以在图形处理单元(“GPU”)中执行)。 来自C ++源代码的控制流将保留在HLSL源代码中。

    Map transformation in data parallel code
    32.
    发明授权
    Map transformation in data parallel code 有权
    数据并行代码中的地图转换

    公开(公告)号:US08402450B2

    公开(公告)日:2013-03-19

    申请号:US12947989

    申请日:2010-11-17

    IPC分类号: G06F9/44 G06F9/45 G06F9/46

    CPC分类号: G06F8/45

    摘要: A high level programming language provides a map transformation that takes a data parallel algorithm and a set of one or more input indexable types as arguments. The map transformation applies the data parallel algorithm to the set of input indexable types to generate an output indexable type, and returns the output indexable type. The map transformation may be used to fuse one or more data parallel algorithms with another data parallel algorithm.

    摘要翻译: 高级编程语言提供了将数据并行算法和一组一个或多个输入可索引类型作为参数的映射变换。 映射变换将数据并行算法应用于输入可索引类型的集合,以生成输出可索引类型,并返回输出可索引类型。 地图变换可以用于将一个或多个数据并行算法与另一数据并行算法融合。

    TRANSFORMING ADDRESSING ALIGNMENT DURING CODE GENERATION
    33.
    发明申请
    TRANSFORMING ADDRESSING ALIGNMENT DURING CODE GENERATION 有权
    在代码生成期间转换寻址对齐

    公开(公告)号:US20120317394A1

    公开(公告)日:2012-12-13

    申请号:US13158077

    申请日:2011-06-10

    IPC分类号: G06F12/00

    CPC分类号: G06F8/44

    摘要: The present invention extends to methods, systems, and computer program products for changing addressing mode during code generation. Generally, embodiments of the invention use a compiler transformation to transform lower level code from one address alignment to another address alignment. The transformation can be based upon assumptions of a source programming language. Based on the assumptions, the transformation can eliminate arithmetic operations that compensate for different addressing alignment, resulting in more efficient code. Some particular embodiments use a compiler transformation to transform an Intermediate Representation (“IR”) from one-byte addressing alignment into multi-byte (e.g., four-byte) addressing alignment.

    摘要翻译: 本发明扩展到用于在代码生成期间改变寻址模式的方法,系统和计算机程序产品。 通常,本发明的实施例使用编译器转换来将较低级别的代码从一个地址对齐转换到另一个地址对齐。 转换可以基于源程序设计语言的假设。 基于这些假设,转换可以消除补偿不同寻址对齐的算术运算,从而产生更有效的代码。 一些特定实施例使用编译器转换将中间表示(IR)从一字节寻址对准转换为多字节(例如,四字节)寻址对齐。

    CO-MAP COMMUNICATION OPERATOR
    35.
    发明申请
    CO-MAP COMMUNICATION OPERATOR 有权
    CO-MAP通信操作员

    公开(公告)号:US20120166444A1

    公开(公告)日:2012-06-28

    申请号:US12977406

    申请日:2010-12-23

    IPC分类号: G06F17/30

    摘要: A high level programming language provides a co-map communication operator that maps an input indexable type to an output indexable type according to a function. The function maps an index space corresponding to the output indexable type to an index space corresponding to the input indexable type. By doing so, the co-map communication operator lifts a function on an index space to a function on an indexable type to allow composability with other communication operators.

    摘要翻译: 高级编程语言提供了协同地图通信运算符,其根据功能将输入可索引类型映射到输出可索引类型。 该函数将与输出可索引类型相对应的索引空间映射到与输入可索引类型对应的索引空间。 通过这样做,共同地图通信操作员将索引空间上的功能提升为可索引类型的功能,以允许与其他通信运营商的组合。

    INDEXABLE TYPE TRANSFORMATIONS
    36.
    发明申请
    INDEXABLE TYPE TRANSFORMATIONS 有权
    可变类型转换

    公开(公告)号:US20120005662A1

    公开(公告)日:2012-01-05

    申请号:US12827217

    申请日:2010-06-30

    IPC分类号: G06F9/45

    CPC分类号: G06F8/453

    摘要: A high level programming language provides an extensible set of transformations for use on indexable types in a data parallel processing environment. A compiler for the language implements each transformation as a map from indexable types to allow each transformation to be applied to other transformations. At compile time, the compiler identifies sequences of the transformations on each indexable type in data parallel source code and generates data parallel executable code to implement the sequences as a combined operation at runtime using the transformation maps. The compiler also incorporates optimizations that are based on the sequences of transformations into the data parallel executable code.

    摘要翻译: 高级编程语言为数据并行处理环境中的可索引类型提供了一组可扩展的转换。 该语言的编译器将实现每个变换作为可索引类型的映射,以允许将每个转换应用于其他转换。 在编译时,编译器在数据并行源代码中识别每个可索引类型的转换序列,并生成数据并行可执行代码,以便在运行时使用变换映射来实现序列作为组合操作。 编译器还集成了基于转换为数据并行可执行代码的序列的优化。

    Compiler-Generated Invocation Stubs for Data Parallel Programming Model
    37.
    发明申请
    Compiler-Generated Invocation Stubs for Data Parallel Programming Model 有权
    用于数据并行编程模型的编译器生成的调用存根

    公开(公告)号:US20110314444A1

    公开(公告)日:2011-12-22

    申请号:US12819108

    申请日:2010-06-18

    IPC分类号: G06F9/44

    CPC分类号: G06F8/45

    摘要: Described herein are techniques for generating invocation stubs for a data parallel programming model so that a data parallel program written in a statically-compiled high-level programming language may be more declarative, reusable, and portable than traditional approaches. With some of the described techniques, invocation stubs are generated by a compiler and those stubs bridge a logical arrangement of data parallel computations to the actual physical arrangement of a target data parallel hardware for that data parallel computation.

    摘要翻译: 这里描述的是用于生成用于数据并行编程模型的调用存根的技术,使得以静态编译的高级编程语言编写的数据并行程序可以比传统方法更具声明性,可重复使用和便携式。 利用一些所描述的技术,调用存根由编译器生成,并且这些存根将数据并行计算的逻辑排列与用于该数据并行计算的目标数据并行硬件的实际物理排列相结合。

    Data Parallel Programming Model
    38.
    发明申请
    Data Parallel Programming Model 审中-公开
    数据并行编程模型

    公开(公告)号:US20110314256A1

    公开(公告)日:2011-12-22

    申请号:US12819097

    申请日:2010-06-18

    IPC分类号: G06F15/76 G06F9/02 G06F9/30

    CPC分类号: G06F8/45

    摘要: Described herein are techniques for enabling a programmer to express a call for a data parallel call-site function in a way that is accessible and usable to the typical programmer. With some of the described techniques, an executable program is generated based upon expressions of those data parallel tasks. During execution of the executable program, data is exchanged between non-data parallel (non-DP) capable hardware and DP capable hardware for the invocation of data parallel functions.

    摘要翻译: 这里描述的是使得程序员能够以对于典型编程器可访问和可使用的方式来表达对数据并行调用位置功能的调用的技术。 利用所描述的一些技术,基于这些数据并行任务的表达来生成可执行程序。 在执行可执行程序期间,数据在非数据并行(非DP)功能硬件和DP功能硬件之间交换,用于调用数据并行功能。

    Primitives for software transactional memory
    39.
    发明授权
    Primitives for software transactional memory 有权
    软件事务内存的基本原理

    公开(公告)号:US09047139B2

    公开(公告)日:2015-06-02

    申请号:US12163402

    申请日:2008-06-27

    IPC分类号: G06F17/30 G06F9/52

    CPC分类号: G06F9/528

    摘要: Software transactional memory (STM) primitives are provided that allow the results of prior open calls to be used by subsequent open calls either as-is or through another STM primitive that consumes the results of the previous invocation. The STM primitives are configured to ensure that the address of a shadow copy representing a memory location will not changed across a wide range of operations and thereby enable re-use of the shadow copy.

    摘要翻译: 提供了软件事务存储器(STM)原语,其允许先前的打开调用的结果被按照原样或通过消耗先前调用的结果的另一个STM原语的后续打开调用来使用。 STM原语配置为确保表示内存位置的卷影副本的地址不会在广泛的操作范围内发生变化,从而可以重新使用卷影副本。

    Detecting race conditions with a software transactional memory system
    40.
    发明授权
    Detecting race conditions with a software transactional memory system 有权
    使用软件事务内存系统检测竞争条件

    公开(公告)号:US08769514B2

    公开(公告)日:2014-07-01

    申请号:US12163902

    申请日:2008-06-27

    IPC分类号: G06F9/45

    CPC分类号: G06F8/443 G06F11/3624

    摘要: A dynamic race detection system is provided that detects race conditions in code that executes concurrently in a computer system. The dynamic race detection system uses a modified software transactional memory (STM) system to detect race conditions. A compiler converts portions of the code that are not configured to operate with the STM system into pseudo STM code that operates with the STM system. The dynamic race detection system detects race conditions in response to either a pseudo STM transaction in the pseudo STM code failing to validate when executed or an actual STM transaction failing to validate when executed because of conflict with a concurrent pseudo STM transaction.

    摘要翻译: 提供了一种动态竞争检测系统,其检测在计算机系统中并发执行的代码中的竞争条件。 动态竞争检测系统使用修改后的软件事务存储器(STM)系统来检测竞争条件。 编译器将未配置为与STM系统一起运行的代码部分转换为与STM系统一起运行的伪STM代码。 动态竞争检测系统响应于伪STM代码中的伪STM事务在执行时无法验证或由于与并发的伪STM事务冲突而被执行时实际的STM事务失败而检测到竞争条件。