IP Library Granted Patent US 9,335,981
Granted Patent B2
US 9,335,981 · App. 14/510,660 · Granted May 10, 2016

Source-to-source transformations for graph processing on many-core platforms

Inventors: Srimat Chakradhar (Manalapan, NJ); Michela Becchi (Columbia, MO); Da Li (Columbia, MO)
Assignee: NEC Corporation
G06F8/456G06F8/51
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,335,981
App. No.
14/510,660
Granted
May 10, 2016
Kind
B2
Abstract

Methods are provided for source-to-source transformations for graph processing on many-core platforms. A method includes receiving a graph application including one graph, expressed by a graph application programming interface configured for defining and manipulating graphs. The method further includes transforming, by a source-to-source compiler, the graph application into a plurality of parallel code variants. Each of the plurality of parallel code variants is specifically configured for parallel execution by a target one of a plurality of different many-core processors. The method also includes selecting and tuning, by a runtime component, a particular one of the parallel code variants for the parallel execution responsive to graph application characteristics, graph data, and an underlying code execution platform of the plurality of different many-core processors.

Claims (30)

1. A method, comprising:

receiving a graph application including one graph, expressed by a graph application programming interface configured for defining and manipulating graphs;

transforming, by a source-to-source compiler, the graph application and related container data structures into a platform-specific container data structures including a plurality of parallel code variants, each of the plurality of parallel code variants being specifically configured for parallel execution by a target one of a plurality of different many-core processors, wherein different parallel code variants are generated for each of the different many-core processors;

managing execution synchronizations for the graph and the platform-specific container data structures, the managing including converting platform-independent synchronization primitives into platform-specific synchronization primitives; and

selecting and tuning, by a runtime component, a particular one of the parallel code variants for the parallel execution responsive to graph application characteristics, graph data, and an underlying code execution platform of the plurality of different many-core processors.

2. The method of claim 1 , further comprising selecting the target one of the plurality of different many-core processors as a best match to computational needs of the graph application from among the plurality of many-core processors.

3. The method of claim 1 , wherein the runtime component is a runtime library.

4. The method of claim 3 , wherein the run-time component performs dynamic memory allocation.

5. The method of claim 3 , wherein the run-time library selects and tunes the particular one of the parallel code variants for execution responsive to one or more hardware profiles relating to the underlying code execution platform.

6. The method of claim 1 , wherein the application programming interface includes methods to define and manipulate application specific attributes, container data structures, parallel code iterators, dynamic memory management primitives, parallel primitives, synchronization primitives, and runtime primitives.

7. The method of claim 6 , wherein the parallel primitives comprise a reduction primitive, a scan primitive, and a sort primitive.

8. The method of claim 6 , wherein the synchronization primitives comprise a barrier primitive and a critical primitive.

9. The method of claim 6 , wherein the runtime primitives comprise a commit primitive and a rebalance primitive.

10. The method of claim 1 , wherein the runtime component dynamically manages, using a dynamic memory management technique, runtime graph-topology modifications for the graph application.

11. The method of claim 1 , wherein the graph application programming interface is platform-independent, and includes a set of platform independent sequential and parallel constructs.

12. The method of claim 1 , further comprising dynamically managing, by a runtime dynamic memory manager with one or more runtime dynamic memory management techniques, runtime graph-topology modifications for the graph application.

13. A method, comprising:

performing, using a compiling processor, source-to-source compiling on a graph application that includes at least one graph, wherein said source-to-source compiling step includes:

transforming the graph application and related container data structures into platform-specific container data structures, using parallel code transformation responsive to parallel iterators, and using parallel blocks of code for primitives, and

managing execution synchronizations for the graph, the platform-specific container data structures, and the iterators; and

converting platform-independent synchronization primitives into platform-specific synchronization primitives.

14. A non-transitory article of manufacture tangibly embodying a computer readable program which when executed causes a computer to perform the steps of claim 13 .

15. A method comprising:

configuring a graph-processing run-time library with a selection processor configured to select a particular parallel code variant, from among a plurality of parallel code variants of a graph application including at least one graph, for parallel execution by a target many-core coprocessor responsive to graph application characteristics, graph data, and an underlying code execution platform of the target many-core processor,

wherein the parallel code variants of the graph application are specifically configured for parallel execution by a target one of a plurality of different many-core processors, and

wherein different parallel code variants are generated for each of the different many-core processors;

managing execution synchronizations for the graph application by converting platform-independent synchronization primitives into platform-specific synchronization primitives; and

configuring the run-time library with dynamic memory allocation management for an execution of the particular parallel code variant responsive to graph application characteristics, graph data, and an underlying code execution platform of the plurality of different many-core processors.

16. The method of claim 15 , wherein a dynamic memory manager in the runtime library dynamically manages runtime graph-topology modifications for the graph application, using one or more dynamic memory management techniques.

17. The method of claim 15 , wherein the run-time library selects the particular parallel code variant for execution responsive to one or more hardware profiles relating to the underlying code execution platform.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 17, 2016
From: NEC LABORATORIES AMERICA, INC.
To: NEC CORPORATION
Reel/Frame 038011/0263 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2014
From: CHAKRADHAR, SRIMAT; BECCHI, MICHELA; LI, DA
To: NEC LABORATORIES AMERICA INC.
Reel/Frame 033923/0701 →
Continuity (3)
Provisional Application 61929521 · Jan 21, 2014
Provisional Application 61892497 · Oct 18, 2013
Related Publication 20150113514A1 · Apr 23, 2015