IP Library Granted Patent US 9,542,248
Granted Patent B2
US 9,542,248 · App. 14/667,009 · Granted Jan 10, 2017

Dispatching function calls across accelerator devices

Inventors: Arpith C. Jacob (Dobbs Ferry, NY); Olivier H. Sallenave (Baldwin Place, NY)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F9/547G06F9/466
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,542,248
App. No.
14/667,009
Granted
Jan 10, 2017
Kind
B2
Abstract

In one embodiment, a computer-implemented method for dispatching a function call includes receiving, at a supervisor processing element (PE) and from an origin PE, an identifier of a target device, a stack frame of the origin PE, and an address of a function called from the origin PE. The supervisor PE allocates a target PE of the target device. The supervisor PE copies the stack frame of the origin PE to a new stack frame on a call stack of the target PE. The supervisor PE instructs the target PE to execute the function. The supervisor PE receives a notification that execution of the function is complete. The supervisor PE copies the stack frame of the target PE to the stack frame of the origin PE. The supervisor PE releases the target PE of the target device. The supervisor PE instructs the origin PE to resume execution of the program.

Claims (33)

1. A system comprising:

a memory having computer readable instructions; and

one or more processors for executing the computer readable instructions, the computer readable instructions comprising:

making, by an origin processing element (PE) of an origin device, during execution of a program by the origin device, a function call to a function to be performed by a target device other than the origin device;

storing, by the origin PE, on a stack frame of the origin PE, one or more parameters of the function call;

receiving, at a supervisor processing element (PE) and from an origin PE, an identifier of the target device, the stack frame of the origin PE, and an address of the function called from the origin PE;

allocating, by the supervisor PE, a target PE of the target device;

copying, by the supervisor PE, the stack frame of the origin PE to a new stack frame on a call stack of the target PE, wherein the origin PE and the target PE have distinct memory spaces from each other;

instructing, by the supervisor PE, the target PE to execute the function at the address;

receiving, by the supervisor PE, notification from the target PE that execution of the function is complete;

copying, by the supervisor PE, the new stack frame on the call stack of the target PE to the stack frame of the origin PE;

releasing, by the supervisor PE, the target PE of the target device; and

instructing, by the supervisor PE, the origin PE to resume execution of the program.

2. The system of claim 1 , wherein the target device is a hardware accelerator, and wherein the origin PE resides on the origin device being a different hardware accelerator than the target device on which the target PE resides.

3. The system of claim 2 , wherein the copying the stack frame of the origin PE to the new stack frame on the call stack of the target PE comprises address translation.

4. The system of claim 1 , wherein the target device and the origin device on which the origin PE resides have different architectures.

5. The system of claim 4 , wherein the copying the stack frame of the origin PE to the new stack frame on the call stack of the target PE comprises marshalling data to comply with an architecture of the target PE.

6. The system of claim 1 , wherein the supervisor PE is a PE on a hardware accelerator.

7. A computer program product for dispatching a function call, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause the processor to perform a method comprising:

making, by an origin processing element (PE) of an origin device, during execution of a program by the origin device, a function call to a function to be performed by a target device other than the origin device;

storing, by the origin PE, on a stack frame of the origin PE, one or more parameters of the function call;

receiving, at a supervisor processing element (PE) and from an origin PE, an identifier of the target device, the stack frame of the origin PE, and an address of the function called from the origin PE;

allocating, by the supervisor PE, a target PE of the target device;

copying, by the supervisor PE, the stack frame of the origin PE to a new stack frame on a call stack of the target PE, wherein the origin PE and the target PE have distinct memory spaces from each other;

instructing, by the supervisor PE, the target PE to execute the function at the address;

receiving, by the supervisor PE, notification from the target PE that execution of the function is complete;

copying, by the supervisor PE, the new stack frame on the call stack of the target PE to the stack frame of the origin PE;

releasing, by the supervisor PE, the target PE of the target device; and

instructing, by the supervisor PE, the origin PE to resume execution of the program.

8. The computer program product of claim 7 , wherein the target device is a hardware accelerator, and wherein the origin PE resides on the origin device being a different hardware accelerator than the target device on which the target PE resides.

9. The computer program product of claim 7 , wherein the target device and the origin device on which the origin PE resides have different architectures.

10. The computer program product of claim 9 , wherein the copying the stack frame of the origin PE to the new stack frame on the call stack of the target PE comprises marshalling data to comply with an architecture of the target PE.

11. The computer program product of claim 7 , wherein the supervisor PE is a PE on a hardware accelerator.

Assignments (2)
CONFIRMATORY LICENSE Recorded Dec 10, 2015
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: U.S. DEPARTMENT OF ENERGY
Reel/Frame 037259/0321 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2015
From: JACOB, ARPITH C.; SALLENAVE, OLIVIER H.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 035244/0201 →
Continuity (1)
Related Publication 20160283297A1 · Sep 29, 2016