IP Library Granted Patent US 8,893,103
Granted Patent B2
US 8,893,103 · App. 13/940,974 · Granted Nov 18, 2014

Automatic asynchronous offload to many-core coprocessors

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 8,893,103
App. No.
13/940,974
Granted
Nov 18, 2014
Kind
B2
Abstract

Methods and systems for asynchronous offload to many-core coprocessors include splitting a loop in an input source code into a sampling sub-part, a many integrated core (MIC) sub-part, and a central processing unit (CPU) sub-part; executing the sampling sub-part with a processor to determine loop characteristics including memory- and processor-operations executed by the loop; identifying optimal split boundaries based on the loop characteristics such that the MIC sub-part will complete in a same amount of time when executed on a MIC processor as the CPU sub-part will take when executed on a CPU; and modifying the input source code to split the loop at the identified boundaries, such that the MIC sub-part is executed on a MIC processor and the CPU sub-part is concurrently executed on a CPU.

Claims (24)

1. A method for automating asynchronous offload to many-core coprocessors, comprising:

splitting, by a processor, a parallelizable loop in an input source code into a sampling sub-loop, a many integrated core (MIC) sub-loop, and a central processing unit (CPU) sub-loop;

executing, by the processor, the sampling sub-loop to determine loop characteristics including memory-operations and processor-operations executed by the parallelizable loop;

identifying, by the processor, optimal split boundaries based on the loop characteristics such that the MIC sub-loop will complete in a same amount of time when executed on a MIC processor as the CPU sub-loop will take when executed on a CPU; and

modifying, by the processor, the input source code to split the parallelizable loop at the identified optimal split boundaries, such that the MIC sub-loop is executed on a MIC processor and the CPU sub-loop is concurrently executed on a CPU.

2. The method of claim 1 , wherein modifying the input source code further comprises:

removing an original loop code block;

adding a MIC loop code block that executes the original loop code block on the MIC processor; and

adding a CPU loop code block that executes the original loop code block on the CPU.

3. The method of claim 2 , wherein modifying the input source code further comprises inserting preprocessor MIC offloading statements.

4. The method of claim 1 , wherein modifying the input source code further comprises handling reduction variables by replacing variable names in the MIC sub-loops and the CPU sub-loops to prevent conflicts.

5. The method of claim 1 , wherein modifying the input source code further comprises handling shared memory in critical sections using horizontal integration and vertical integration.

6. The method of claim 5 , wherein modifying the input source code further comprises performing the horizontal integration by overlapping memory regions.

7. The method of claim 5 , wherein modifying the input source code further comprises performing the vertical integration by appending memory regions to one another.

8. A system for automating asynchronous offload to many-core coprocessors, comprising:

a processor configured to split a parallelizable loop in an input source code into a sampling sub-loop, a many integrated core (MIC) sub-loop, and a central processing unit (CPU) sub-loop;

a loop sampling module configured to execute the sampling sub-loop to determine loop characteristics including memory-operations and processor-operations executed by the parallelizable loop and to identify optimal split boundaries based on the loop characteristics such that the MIC sub-loop will complete in a same amount of time when executed on a MIC processor as the CPU sub-loop will take when executed on a CPU; and

a code modifying module configured to modify the input source code to split the parallelizable loop at the identified optimal split boundaries, such that the MIC sub-loop is executed on a MIC processor and the CPU sub-loop is concurrently executed on a CPU.

9. The system of claim 8 , wherein the code modifying module is further configured to remove an original loop code block, to add a MIC loop code block that executes the original loop code block on the MIC processor, and to add a CPU loop code block that executes the original loop code block on the CPU.

10. The system of claim 9 , wherein the code modifying module is further configured to insert preprocessor MIC offloading statements.

11. The system of claim 8 , wherein the code modifying module is further configured to handle reduction variables by replacing variable names in the MIC sub-loops and the CPU sub-loops to prevent conflicts.

12. The system of claim 8 , wherein the code modifying module is further configured to handle shared memory in critical sections using horizontal integration and vertical integration.

13. The system of claim 12 , wherein the code modifying module is further configured to perform the horizontal integration by overlapping memory regions.

14. The system of claim 12 , wherein the code modifying module is further configured to perform the vertical integration by appending memory regions to one another.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2015
From: NEC LABORATORIES AMERICA, INC.
To: NEC CORPORATION
Reel/Frame 034765/0565 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2013
From: RAVI, NISHKAM; YANG, YI; CHAKRADHAR, SRIMAT
To: NEC LABORATORIES AMERICA, INC.
Reel/Frame 030789/0311 →