Heterogeneous parallel primitives programming model
AssigneeAdvanced Micro Devices, Inc.
InventorsBenedict R. Gaster, Lee W. Howes
Life of this patent
Estimating the term…
Abstract
With the success of programming models such as OpenCL and CUDA, heterogeneous computing platforms are becoming mainstream. However, these heterogeneous systems are low-level, not composable, and their behavior is often implementation defined even for standardized programming models. In contrast, the method and system embodiments for the heterogeneous parallel primitives (HPP) programming model disclosed herein provide a flexible and composable programming platform that guarantees behavior even in the case of developing high-performance code.
Claims16
A method for improving memory utilization in a heterogeneous computing platform, the method comprising:
- generating an unbound distributed array in a plurality of memories of different types included in the heterogeneous computing platform, wherein the unbound distributed array permits linear access to an entirety of the unbound distributed array;
- binding the unbound distributed array to a kernel to form a bound array, wherein the kernel is configured to execute a plurality of workgroups on processors that are included in the heterogeneous computing platform;
- segmenting the bound array to form a plurality of bound segments, wherein a particular bound segment is accessible by a particular workgroup and inaccessible by other workgroups in the plurality of workgroups;
- accessing the plurality of bound segments when the kernel executes the plurality of workgroups;
- generalizing the plurality of memories of different types into a partitioned global address space (PGAS) abstraction;
- and
- receiving an indication from the kernel for managing a region in the PGAS abstraction.
A system that improves memory utilization in a heterogeneous computing platform, the system comprising:
- a plurality of memories of different types;
- a plurality of processors that each communicatively coupled to one or more memories in the plurality of memories;
- and
- a heterogeneous parallel primitives (HPP) platform configured to:
- generate an unbound distributed array in the plurality of memories, wherein the unbound distributed array permits linear access to an entirety of the unbound distributed array;
- bind the unbound distributed array to a kernel to form a bound array, wherein the kernel is configured to execute a plurality of workgroups on the plurality of processors;
- segment the bound array to form a plurality of bound segments, wherein a particular bound segment is accessible by a particular workgroup and inaccessible by other workgroups in the plurality of workgroups;
- access the plurality of bound segments when the kernel executes the plurality of workgroups;
- generalize the plurality of memories of different types into a partitioned global address space (PGAS) abstraction;
- and
- receive an indication from the kernel for managing a region in the PGAS abstraction.
Dependencies are inferred from the claim text.