IP Library Granted Patent US 10,789,189
Granted Patent B1
US 10,789,189 · App. 16/395,777 · Granted Sep 29, 2020

Technologies for providing inter-kernel flow control for accelerator device kernels

Inventors: Susanne M. Balle (Hudson, NH); Evan Custodio (North Attleboro, MA)
Assignee: Intel Corporation
G06F13/20G06F13/4022
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 10,789,189
App. No.
16/395,777
Granted
Sep 29, 2020
Kind
B1
Abstract

Technologies for providing inter-kernel flow control for accelerator device kernels includes an accelerator device. The accelerator device includes circuitry to determine availability data indicative of an availability of one or more accelerator device kernels in a system. The availability data includes credit data indicative of a number of data packets permitted to be sent from an output port associated with a kernel of the present accelerator device to an input port associated with another accelerator device kernel. The circuitry is also to obtain a data packet to be processed by a target accelerator device kernel in the system. Additionally, the circuitry is to determine, as a function of the credit data, an output port to send the data packet through to provide the data packet to the target accelerator device kernel. Additionally, the circuitry is to send the data packet through the determined output port.

Claims (33)

1. An accelerator device comprising:

circuitry to:

determine availability data indicative of an availability of one or more accelerator device kernels in a system, including credit data indicative of a number of data packets permitted to be sent from an output port associated with a kernel of the present accelerator device to an input port associated with another accelerator device kernel, and including obtaining data indicative of physical communication paths between multiple accelerator device kernels of the accelerator device;

obtain a data packet to be processed by a target accelerator device kernel in the system;

determine, as a function of the credit data, an output port to send the data packet through to provide the data packet to the target accelerator device kernel; and

send the data packet through the determined output port.

2. The accelerator device of claim 1 , wherein to determine availability data comprises to determine a location of each accelerator device kernel in the system.

3. The accelerator device of claim 1 , wherein to determine availability data comprises to obtain data indicative of physical communication paths between the accelerator device kernels of different accelerator devices in the system.

4. The accelerator device of claim 1 , wherein to determine the output port to send the data packet through comprises to determine a path to the target accelerator device kernel through an output port that presently has at least one credit usable to send the data packet to an input port associated with a next accelerator device kernel in the path.

5. The accelerator device of claim 4 , wherein to determine the path further comprises to determine a path having the lowest number of intermediary kernels between the kernel of the present accelerator device and the target accelerator device kernel.

6. The accelerator device of claim 4 , wherein to determine the path further comprises to determine a path in which each output port associated with each accelerator device kernel in the path presently has credit usable to send the data packet to the next kernel in the path.

7. The accelerator device of claim 4 , wherein to determine the path further comprises to write data indicative of the determined path into the data packet.

8. The accelerator device of claim 1 , wherein to send the data packet through the determined output port comprises to remove the data packet from an input queue associated with an input port of the kernel of the present accelerator device.

9. The accelerator device of claim 8 , wherein the circuitry is further to determine to provide, in response to sending the data packet through the determined output port, a credit to an output port associated with an accelerator device kernel that sent the data packet to the present accelerator device.

10. The accelerator device of claim 1 , wherein to send the data packet through the determined output port comprises to send the data packet to an input port associated with a kernel on the present accelerator device.

11. The accelerator device of claim 1 , wherein to send the data packet through the determined output port comprises to send the data packet to an input port associated with a kernel on the same sled as present accelerator device.

12. The accelerator device of claim 1 , wherein the present accelerator device is located on a first sled of the system and wherein to send the data packet through the determined output port comprises to send the data packet to an input port associated with a kernel on a second sled in the system.

13. One or more non-transitory machine-readable storage media comprising a plurality of instructions stored thereon that, in response to being executed, cause an accelerator device to:

determine availability data indicative of an availability of one or more accelerator device kernels in a system, including credit data indicative of a number of data packets permitted to be sent from an output port associated with a kernel of the present accelerator device to an input port associated with another accelerator device kernel, and including obtaining data indicative of physical communication paths between multiple accelerator device kernels of the accelerator device;

obtain a data packet to be processed by a target accelerator device kernel in the system;

determine, as a function of the credit data, an output port to send the data packet through to provide the data packet to the target accelerator device kernel; and

send the data packet through the determined output port.

14. The one or more non-transitory machine-readable storage media of claim 13 , wherein to determine availability data comprises to determine a location of each accelerator device kernel in the system.

15. The one or more non-transitory machine-readable storage media of claim 13 , wherein to determine availability data comprises to obtain data indicative of physical communication paths between the accelerator device kernels of different accelerator devices in the system.

16. The one or more non-transitory machine-readable storage media of claim 13 , wherein to determine the output port to send the data packet through comprises to determine a path to the target accelerator device kernel through an output port that presently has at least one credit usable to send the data packet to an input port associated with a next accelerator device kernel in the path.

17. The one or more non-transitory machine-readable storage media of claim 16 , wherein to determine the path further comprises to determine a path having the lowest number of intermediary kernels between the kernel of the present accelerator device and the target accelerator device kernel.

18. The one or more non-transitory machine-readable storage media of claim 16 , wherein to determine the path further comprises to determine a path in which each output port associated with each accelerator device kernel in the path presently has credit usable to send the data packet to the next kernel in the path.

19. The one or more non-transitory machine-readable storage media of claim 16 , wherein to determine the path further comprises to write data indicative of the determined path into the data packet.

20. A method comprising:

determining, by an accelerator device, availability data indicative of an availability of one or more accelerator device kernels in a system, including credit data indicative of a number of data packets permitted to be sent from an output port associated with a kernel of the present accelerator device to an input port associated with another accelerator device kernel and including obtaining data indicative of physical communication paths between multiple accelerator device kernels of the accelerator device;

obtaining, by the accelerator device, a data packet to be processed by a target accelerator device kernel in the system;

determining, by the accelerator device and as a function of the credit data, an output port to send the data packet through to provide the data packet to the target accelerator device kernel; and

sending, by the accelerator device, the data packet through the determined output port.

Assignments (3)
SECURITY INTEREST Recorded Sep 12, 2025
From: ALTERA CORPORATION
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 073431/0309 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2025
From: INTEL CORPORATION
To: ALTERA CORPORATION
Reel/Frame 072704/0307 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2020
From: BALLE, SUSANNE M.; CUSTODIO, EVAN
To: INTEL CORPORATION
Reel/Frame 053627/0994 →