IP Library › Granted Patent US 10,970,133
Granted Patent B2
US 10,970,133 · App. 15/133,466 · Granted Apr 6, 2021

System and method for hardware acceleration for operator parallelization with streams

Inventors: Alexander Cook (Rochester, MN); Jonathan L. Kaus (Rochester, MN); David M. Koster (Rochester, MN); John M. Santosuosso (Rochester, MN)
Assignee: International Business Machines Corporation
G06F9/54G06F9/5083
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,970,133
App. No.
15/133,466
Granted
Apr 6, 2021
Kind
B2
Abstract

A method, computer program product, and computer system for consolidating, at a computing device, a number of parallel streams, entering a hardware accelerator in a cluster, into fewer streams. The fewer streams, exiting the hardware accelerator in the cluster, may be returned back into the number of parallel streams.

Claims (49)

1. A computer-implemented method comprising:

consolidating, at a computing device, a number of parallel streams, entering a hardware accelerator in a cluster, into fewer streams, wherein the hardware accelerator includes at least one Field-Programmable Gate Array (FPGA) processing the number of parallel streams;

deploying an arbitrary number of logical streams to the at least one FPGA, wherein deploying includes mapping the arbitrary number of logical streams to a number of physical streams;

returning the fewer streams, exiting the hardware accelerator in the cluster, back into the number of parallel streams;

identifying at least a portion of a number of available hardware accelerator blocks in the cluster;

identifying a size of operators in the plurality of parallel streams that are capable of running on a hardware accelerator in the cluster, wherein the operators comprise an FPGA optional attribute and further comprise at least one of an FPGA required attribute and a no FPGA capability attribute;

determining whether the operators are associated with a placement requirement for running on the at least one FPGA of the hardware accelerator, wherein the determining comprises identifying the FPGA optional attribute and the at least one of the FPGA required attribute and the no FPGA capability attribute; and

placing the operators based upon, at least in part, the placement requirement, wherein placement is accomplished based upon, at least in part, a priority order, wherein the priority order comprises a highest priority placement for any operator having an FPGA required attribute and a subsequent placement for an operator having the FPGA optional attribute and for any operator having the no FPGA capability attribute.

2. The computer-implemented method of claim 1 further comprising rebalancing at least a portion of the operators.

3. The computer-implemented method of claim 1 further comprising sharing an input Application Programming Interface (API) layer and an output API layer with the parallel streams and the hardware accelerator.

4. The computer-implemented method of claim 3 further comprising tagging one or more tuples associated with the operators to identify which stream of the parallel streams on which the one or more tuples were transported.

5. The computer-implemented method of claim 1 wherein two sets of code are provided for a common operator of the operators, wherein the two sets of code include a first set of code for the hardware accelerator and a second set of code for a normal process, and wherein at least one of the two sets of code is used based upon their respective placement on the hardware accelerator.

6. The computer-implemented method of claim 2 , further comprising evaluating streaming performance of the fewer streams to determine a first operator of the operators having a highest streaming performance and a second operator,

wherein the rebalancing comprises:

shifting the first operator off of the FPGA, and

on the FPGA replacing the first operator with the second operator.

7. A computer program product residing on a non-transitory computer readable storage medium having a plurality of instructions stored thereon which, when executed across one or more processors, causes at least a portion of the one or more processors to perform operations comprising:

consolidating a number of parallel streams, entering a hardware accelerator in a cluster, into fewer streams, wherein the hardware accelerator includes at least one Field-Programmable Gate Array (FPGA) processing the number of parallel streams;

deploying an arbitrary number of logical streams to the at least one FPGA, wherein

deploying includes mapping the arbitrary number of logical streams to a number of physical streams;

returning the fewer streams, exiting the hardware accelerator in the cluster, back into the number of parallel streams;

identifying at least a portion of a number of available hardware accelerator blocks in the cluster;

identifying a size of operators in the plurality of parallel streams that are capable of running on a hardware accelerator in the cluster, wherein the operators comprise an FPGA optional attribute and further comprise at least one of an FPGA required attribute and a no FPGA capability attribute;

determining whether the operators are associated with a placement requirement for running on the at least one FPGA of the hardware accelerator, wherein the determining comprises identifying the FPGA optional attribute and the at least one of the FPGA required attribute and the no FPGA capability attribute; and

placing the operators based upon, at least in part, the placement requirement, wherein placement is accomplished based upon, at least in part, a priority order, wherein the priority order comprises a highest priority placement for any operator having an FPGA required attribute and a subsequent placement for an operator having the FPGA optional attribute and for any operator having the no FPGA capability attribute.

8. The computer program product of claim 7 , wherein the operations further comprise rebalancing at least a portion of the operators.

9. The computer program product of claim 7 , wherein the operations further comprise sharing an input Application Programming Interface (API) layer and an output API layer with the parallel streams and the hardware accelerator.

10. The computer program product of claim 9 , wherein the operations further comprise tagging one or more tuples associated with the operators to identify which stream of the parallel streams on which the one or more tuples were transported.

11. The computer program product of claim 7 wherein two sets of code are provided for a common operator of the operators, wherein the two sets of code include a first set of code for the hardware accelerator and a second set of code for a normal process, and wherein at least one of the two sets of code is used based upon their respective placement on the hardware accelerator.

12. The computer program product of claim 8 , wherein the operations further comprise evaluating streaming performance of the fewer streams to determine a first operator of the operators having a highest streaming performance and a second operator, and

wherein the rebalancing comprises:

shifting the first operator off of the FPGA, and

on the FPGA replacing the first operator with the second operator.

13. A computing system including one or more processors and one or more memories configured to perform operations comprising:

consolidating a number of parallel streams, entering a hardware accelerator in a cluster, into fewer streams, wherein the hardware accelerator includes at least one Field-Programmable Gate Array (FPGA) processing the number of parallel streams;

deploying an arbitrary number of logical streams to the at least one FPGA, wherein deploying includes mapping the arbitrary number of logical streams to a number of physical streams;

returning the fewer streams, exiting the hardware accelerator in the cluster, back into the number of parallel streams;

identifying at least a portion of a number of available hardware accelerator blocks in the cluster;

identifying a size of operators in the plurality of parallel streams that are capable of running on a hardware accelerator in the cluster;

determining whether the operators are associated with a placement requirement for running on the at least one FPGA of the hardware accelerator, wherein the determining comprises identifying the FPGA optional attribute and the at least one of the FPGA required attribute and the no FPGA capability attribute; and

placing the operators based upon, at least in part, the placement requirement, wherein placement is accomplished based upon, at least in part, a priority order, wherein the priority order comprises a highest priority placement for any operator having an FPGA required attribute and a subsequent placement for an operator having the FPGA optional attribute and for any operator having the no FPGA capability attribute.

14. The computing system of claim 13 , wherein the operations further comprise rebalancing at least the portion of the operators.

15. The computing system of claim 13 , wherein the operations further comprise sharing an input Application Programming Interface (API) layer and an output API layer with the parallel streams and the hardware accelerator.

16. The computing system of claim 15 , wherein the operations further comprise tagging one or more tuples associated with the operators to identify which stream of the parallel streams on which the one or more tuples were transported.

17. The computing system of claim 13 wherein two sets of code are provided for a common operator of the one or more operators, wherein the two sets of code include a first set of code for the hardware accelerator and a second set of code for a normal process, and wherein at least one of the two sets of code is used based upon their respective placement on the hardware accelerator.

18. The computer system of claim 14 , wherein the operations further comprise evaluating streaming performance of the fewer streams to determine a first operator of the operators having a highest streaming performance and a second operator, and

wherein the rebalancing comprises:

shifting the first operator off of the FPGA, and

on the FPGA replacing the first operator with the second operator.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2016
From: COOK, ALEXANDER; KAUS, JONATHAN L.; KOSTER, DAVID M.; SANTOSUOSSO, JOHN M.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038330/0923 →
Continuity (1)
Related Publication 20170308504A1 · Oct 26, 2017