IP Library Granted Patent US 12,393,467
Granted Patent B2
US 12,393,467 · App. 17/781,317 · Granted Aug 19, 2025

Data processing method and apparatus, distributed data flow programming framework, and related component

Inventors: Hongwei Kan (Jiangsu, CN); Nan Wu (Jiangsu, CN); Rengang Li (Jiangsu, CN); Yanwei Wang (Jiangsu, CN)
Assignee: INSPUR SUZHOU INTELLIGENT TECHNOLOGY CO., LTD.
G06F9/505G06F15/17331
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 12,393,467
App. No.
17/781,317
Granted
Aug 19, 2025
Kind
B2
Abstract

A data processing method, a data processing apparatus, a distributed data flow programming framework, an electronic device, and a storage medium. The data processing method includes: dividing a data processing task into a plurality of data processing subtasks (S 101 ); determining, in a Field Programmable Gate Array (FPGA) accelerator side, a target FPGA acceleration board corresponding to each of the data processing subtasks (S 102 ); and sending data to be computed to the target FPGA acceleration board, and executing the corresponding data processing subtask by use of each of the target FPGA acceleration boards to obtain a data processing result (S 103 ). According to the method, a physical limitation of host interfaces on the number of FPGA acceleration boards in an FPGA accelerator side may be avoided, thereby improving the data processing efficiency.

Claims (45)

1. A data processing method, for applying to a host side, wherein the host side is connected to a Field Programmable Gate Array (FPGA) accelerator side, the FPGA accelerator side comprises a plurality of FPGA acceleration boards, and the plurality of FPGA acceleration boards are connected to each other through a network, the data processing method comprises:

dividing, by the host side, a data processing task into a plurality of data processing subtasks, and determining target FPGA acceleration boards in the FPGA accelerator side corresponding to each of the plurality of data processing subtasks;

selecting a first target FPGA acceleration board and a second target FPGA acceleration board from all of the target FPGA acceleration boards;

sending all of the plurality of data processing subtasks and task distribution information to the first target FPGA acceleration board, and sending all of data to be computed and data distribution information to the second target FPGA acceleration board: wherein the task distribution information comprises correspondences between the plurality of data processing subtasks and the target FPGA acceleration boards, and the data distribution information comprises correspondences between the data to be computed and the target FPGA acceleration boards;

sending, by the first target FPGA acceleration board, the plurality of data processing subtasks to corresponding target FPGA acceleration boards according to the task distribution information, and sending, by the second target FPGA acceleration board, the data to be computed to corresponding FPGA acceleration boards according to the data distribution information; and

executing a corresponding data processing subtask of the plurality of data processing subtasks by each of the target FPGA acceleration boards to obtain a data processing result, wherein the data processing result comprises intermediate computing data or a final processing result of the data processing task, source data of each of the plurality of data processing subtasks comprises at least one of the data to be computed or the intermediate computing data, and the intermediate computing data is transmitted through the network between the target FPGA acceleration boards.

2. The data processing method of claim 1 , wherein after the sending, by the second target FPGA acceleration board, the data to be computed to corresponding FPGA acceleration boards according to the data distribution information, the method further comprises:

configuring a data address and data length of the data to be computed into the target FPGA acceleration boards, whereby the target FPGA acceleration boards store the data to be computed according to the data address and the data length.

3. The data processing method of claim 1 , further comprising:

configuring a computation result storage address into the target FPGA acceleration boards, whereby the target FPGA acceleration boards store at least one of the intermediate computing data or the final processing result into the computation result storage address.

4. The data processing method of claim 1 , wherein the sending, by the second target FPGA acceleration board, the data to be computed to corresponding FPGA acceleration boards according to the data distribution information comprises:

sending corresponding data to be computed to the target FPGA acceleration boards in a self-defined Remote Direct Memory Access (RDMA) transmission mode; and

correspondingly, the method further comprises:

sending the corresponding data processing subtask to the target FPGA acceleration boards in a preset transmission mode; wherein the preset transmission mode comprises streaming or integral packet transmission.

5. The data processing method of claim 1 , further comprising:

when the target FPGA acceleration boards send the intermediate computing data to other target FPGA acceleration boards based on the network, sending a data address and data length of the intermediate computing data to the other target FPGA acceleration boards, whereby the other target FPGA acceleration boards store the intermediate computing data according to the data address and the data length of the intermediate computing data.

6. The data processing method of claim 1 , wherein data is transmitted between the target FPGA acceleration boards by a Medium Access Control (MAC) interface; data is transmitted between the host side and the target FPGA acceleration boards by a Peripheral Component Interconnect Express (PCIE) interface; and data is transmitted between a remote device and the target FPGA acceleration boards by a second MAC interface.

7. The data processing method of claim 1 , wherein when the host side and the target FPGA acceleration boards are devices in a local area network, a packing operation is performed in a Medium Access Control (MAC) layer on communication data between the host side and the target FPGA acceleration boards; and

when the host side and the target FPGA acceleration boards are devices in a public network, a second packing operation is performed in a User Datagram Protocol (UDP) payload layer on the communication data between the host side and the target FPGA acceleration boards, and a third packing operation is performed in the UDP payload layer on communication data between the target FPGA acceleration boards.

8. A non-transitory computer readable medium comprising computer readable program code that when executed by a processor enables the processor to execute a distributed data flow programming framework, comprising a Central Processing Unit (CPU) acceleration stack and a Field Programmable Gate Array (FPGA) acceleration stack;

the CPU acceleration stack is configured to provide an underlying support for dividing a data processing task, and is further configured to provide a host-side Application Programming Interface (API) for scheduling a data processing subtask;

the FPGA acceleration stack is configured to provide an acceleration interface corresponding to the host-side API, and is further configured to provide an acceleration data control program and a kernel control program during execution of the data processing subtask;

wherein when the distributed data flow programming framework is operating, the CPU acceleration stack divides the data processing task into a plurality of data processing subtasks, and determines target FPGA acceleration boards in an FPGA accelerator side corresponding to each of the plurality of data processing subtasks; selects a first target FPGA acceleration board and a second target FPGA acceleration board from all of the target FPGA acceleration boards; sends all of the plurality of data processing subtasks and task distribution information to the first target FPGA acceleration board, and sends all of data to be computed and data distribution information to the second target FPGA acceleration board; wherein the task distribution information comprises correspondences between the plurality of data processing subtasks and the target FPGA acceleration boards, and the data distribution information comprises correspondences between the data to be computed and the target FPGA acceleration boards; the first target FPGA acceleration board sends the plurality of data processing subtasks to corresponding target FPGA acceleration boards according to the task distribution information, and the second target FPGA acceleration board sends the data to be computed to corresponding FPGA acceleration boards according to the data distribution information; and the FPGA acceleration stack executes a corresponding data processing subtask of the plurality of data processing subtasks by use of each of the target FPGA acceleration boards to obtain a data processing result, wherein the data processing result comprises intermediate computing data or a final processing result of the data processing task, source data of each of the plurality of data processing subtasks comprises at least one of the data to be computed or the intermediate computing data, and the intermediate computing data is transmitted through a network between the target FPGA acceleration boards.

9. The non-transitory computer readable medium of claim 8 , wherein the FPGA acceleration stack comprises:

a static region, configured to execute the plurality of data processing subtasks distributed by the CPU acceleration stack, and further configured to send the data processing result to the CPU acceleration stack or another target FPGA acceleration board; and

an FPGA acceleration engine, configured to send the plurality of data processing subtasks to a local acceleration unit or an acceleration unit of other target FPGA acceleration boards to perform an accelerated computation operation.

10. An electronic device, comprising a memory and a processor, wherein the memory has a computer program thereon; and the processor, when calling the computer program in the memory, implements steps of a data processing method, wherein the data processing method comprises:

dividing, by a host side, a data processing task into a plurality of data processing subtasks, and determining target Field Programmable Gate Array (FPGA) acceleration boards in an FPGA accelerator side corresponding to each of the plurality of data processing subtasks;

selecting a first target FPGA acceleration board and a second target FPGA acceleration board from all of the target FPGA acceleration boards;

sending all of the plurality of data processing subtasks and task distribution information to the first target FPGA acceleration board, and sending all of data to be computed and data distribution information to the second target FPGA acceleration board; wherein the task distribution information comprises correspondences between the plurality of data processing subtasks and the target FPGA acceleration boards, and the data distribution information comprises correspondences between the data to be computed and the target FPGA acceleration boards;

sending, by the first target FPGA acceleration board, the plurality of data processing subtasks to corresponding target FPGA acceleration boards according to the task distribution information, and sending, by the second target FPGA acceleration board, the data to be computed to corresponding FPGA acceleration boards according to the data distribution information; and

executing a corresponding data processing subtask of the plurality of data processing subtasks by each of the target FPGA acceleration boards to obtain a data processing result, wherein the data processing result comprises intermediate computing data or a final processing result of the data processing task, source data of each of the plurality of data processing subtasks comprises at least one of the data to be computed or the intermediate computing data, and the intermediate computing data is transmitted through a network between the target FPGA acceleration boards.

11. The electronic device of claim 10 , wherein after the sending, by the second target FPGA acceleration board, the data to be computed to corresponding FPGA acceleration boards according to the data distribution information, the method further comprises:

configuring a data address and data length of the data to be computed into the target FPGA acceleration boards, whereby the target FPGA acceleration boards store the data to be computed according to the data address and the data length.

12. The electronic device of claim 10 , wherein the data processing method further comprises:

configuring a computation result storage address into the target FPGA acceleration boards, whereby the target FPGA acceleration boards store at least one of the intermediate computing data or the final processing result into the computation result storage address.

13. The electronic device of claim 10 , wherein the sending, by the second target FPGA acceleration board, the data to be computed to corresponding FPGA acceleration boards according to the data distribution information comprises:

sending the corresponding data to be computed to the target FPGA acceleration boards in a self-defined Remote Direct Memory Access (RDMA) transmission mode; and

correspondingly, the method further comprises:

sending the corresponding data processing subtask to the target FPGA acceleration boards in a preset transmission mode; wherein the preset transmission mode comprises streaming or integral packet transmission.

14. The electronic device of claim 10 , wherein the data processing method further comprises:

when the target FPGA acceleration boards send the intermediate computing data to other target FPGA acceleration boards based on the network, sending a data address and data length of the intermediate computing data to the other target FPGA acceleration boards, whereby the other target FPGA acceleration boards store the intermediate computing data according to the data address and the data length of the intermediate computing data.

15. The electronic device of claim 10 , wherein data is transmitted between the target FPGA acceleration boards by a Medium Access Control (MAC) interface; data is transmitted between the host side and the target FPGA acceleration boards by a Peripheral Component Interconnect Express (PCIE) interface; and data is transmitted between a remote device and the target FPGA acceleration boards by a second MAC interface.

16. The electronic device of claim 10 , wherein when the host side and the target FPGA acceleration boards are devices in a local area network, a packing operation is performed in a Medium Access Control (MAC) layer on communication data between the host side and the target FPGA acceleration boards; and

when the host side and the target FPGA acceleration boards are devices in a public network, a second packing operation is performed in a User Datagram Protocol (UDP) payload layer on the communication data between the host side and the target FPGA acceleration boards, and a third packing operation is performed in the UDP payload layer on communication data between the target FPGA acceleration boards.

Assignments (2)
LICENSE Recorded Jun 30, 2026
From: IEIT SYSTEMS CO., LTD
To: AIVRES SYSTEMS INC.
Reel/Frame 075857/0939 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2022
From: KAN, HONGWEI; WU, NAN; LI, RENGANG; WANG, YANWEI
To: INSPUR SUZHOU INTELLIGENT TECHNOLOGY CO., LTD.
Reel/Frame 060060/0066 →
Priority Claims (1)
CN 202010080853.6 · Feb 5, 2020 · national
Continuity (1)
Related Publication 20230004433A1 · Jan 5, 2023
References Cited (36)
US 10719517B1 · Li · 2020 [cited by examiner]
US 10868707B1 · Friedman · 2020 [cited by examiner]
US 20080148227A1 · McCubbrey · 2008 [cited by applicant]
US 20150058614A1 · Degenaro · 2015 [cited by examiner]
US 20150143003A1 · Trout · 2015 [cited by examiner]
US 20170262567A1 · Vassiliev · 2017 [cited by applicant]
US 20190155239A1 · Salhuana · 2019 [cited by examiner]
US 20190213029A1 · Liu et al. · 2019 [cited by applicant]
US 20200073849A1 · Dormitzer · 2020 [cited by examiner]
US 20200104269A1 · Pope · 2020 [cited by examiner]
US 20200226124A1 · Chishti · 2020 [cited by examiner]
US 20200265052A1 · Fujikawa · 2020 [cited by examiner]
CN 103345461A · 2013 [cited by applicant]
CN 105183683A · 2015 [cited by applicant]
CN 106354574A · 2017 [cited by applicant]
CN 107273331A · 2017 [cited by applicant]
CN 108319563A · 2018 [cited by applicant]
CN 108776648A · 2018 [cited by applicant]
CN 108776649A · 2018 [cited by applicant]
CN 109739833A · 2019 [cited by applicant]
CN 109787918A · 2019 [cited by applicant]
CN 110069441A · 2019 [cited by applicant]
CN 110083558A · 2019 [cited by applicant]
CN 110399221A · 2019 [cited by examiner]
CN 110519090A · 2019 [cited by applicant]
CN 110618871A · 2019 [cited by applicant]
CN 110619595A · 2019 [cited by applicant]
Unknown Author, “OpenFlow Switch Specification—Version 1.0.0”, Dec. 2009 (Year: 2009). [cited by examiner]
Unknown Author, “TCP—How are Mac addresses used in routing packets?”, , stackoverflow.com/questions/23935095/how-are-mac-addresses-used-in-routing-packets, May 2014 (Year: 2014). [cited by examiner]
International Search Report of corresponding PCT application PCT/CN2020/087157, mailed Nov. 11, 2020, 6 pages. [cited by applicant]
Written Opinion of International Searching Authority of corresponding PCT application PCT/CN2020/087157, mailed Nov. 11, 2020, 9 pages. [cited by applicant]
First Office Action of corresponding CN priority application 202010080853.6, mailed Feb. 1, 2021, 15 pages. [cited by applicant]
Reasons for Refusal cited in JP 2022-532624 mailed Nov. 1, 2022, 10 pages. [cited by applicant]
Reasons for Refusal cited in JP 2022-532624 mailed May 1, 2023, 10 pages. [cited by applicant]
Communication pursuant to Article 94 cited in EP 20917386.3, mailed Apr. 15, 2024, 9 pages. [cited by applicant]
European Search Report cited in EP 20917386.3, mailed Jun. 15, 2023, 12 pages. [cited by applicant]