System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing
First Claim
1. A system, comprising:
- at least one network interface comprising at least one first processor to;
receive a plurality of packets from a network;
for each packet in the plurality of packets, analyze packet contents to determine a specific data type to which the respective packet corresponds;
filter the plurality of packets into a plurality of groups, each group based on the specific data type;
insert the plurality of packets of a first group into a corresponding first buffer in memory of at least one graphics processing unit using direct memory access;
assign each of the packets of the first group an index representing an offset indicating a location in the memory of the at least one graphics processing unit;
determine that a pre-configured buffer flow capacity has been reached regarding the first buffer in the at least one graphics processing unit; and
transmit an interrupt to the at least one graphics processing unit corresponding to the pre-configured buffer flow capacity regarding the first buffer in the least one graphics processing unit; and
the at least one graphics processing unit connected to the at least one network interface over a bus and comprising at least one second processor to;
start a first kernel preconfigured with packet handling code adapted to process packets of the specific data type in response to the interrupt to process the packets in the first buffer;
wherein a substantially identical set of computer-readable instructions associated with the first kernel is executed on each of the packets in the first buffer;
wherein a plurality of threads are executed on the at least one graphics processing units to process the packets in the first buffer at the index location assigned to each corresponding packet;
wherein upon a failure of one or more graphics processing units, send packets to backup GPU buffers and transmit an interrupt to one or more backup graphics processing units.
0 Assignments
0 Petitions
Accused Products
Abstract
A system comprises a network interface to receive a stream of packets from a network, insert each of the packets into a buffer in memory of a graphics processing unit using direct memory access, assign each of the packets an index representing an offset indicating a location in the memory of the graphics processing unit, determine that a pre-configured buffer flow capacity has been reached regarding a first buffer in the graphics processing unit, and transmit an interrupt to the graphics processing unit corresponding to the pre-configured buffer flow capacity regarding the first buffer in the graphics processing unit. The graphics processing unit is connected to the network interface over a bus and starts a first kernel specific to the first buffer in response to the interrupt.
84 Citations
48 Claims
-
1. A system, comprising:
at least one network interface comprising at least one first processor to; receive a plurality of packets from a network; for each packet in the plurality of packets, analyze packet contents to determine a specific data type to which the respective packet corresponds; filter the plurality of packets into a plurality of groups, each group based on the specific data type; insert the plurality of packets of a first group into a corresponding first buffer in memory of at least one graphics processing unit using direct memory access; assign each of the packets of the first group an index representing an offset indicating a location in the memory of the at least one graphics processing unit; determine that a pre-configured buffer flow capacity has been reached regarding the first buffer in the at least one graphics processing unit; and transmit an interrupt to the at least one graphics processing unit corresponding to the pre-configured buffer flow capacity regarding the first buffer in the least one graphics processing unit; and the at least one graphics processing unit connected to the at least one network interface over a bus and comprising at least one second processor to; start a first kernel preconfigured with packet handling code adapted to process packets of the specific data type in response to the interrupt to process the packets in the first buffer; wherein a substantially identical set of computer-readable instructions associated with the first kernel is executed on each of the packets in the first buffer; wherein a plurality of threads are executed on the at least one graphics processing units to process the packets in the first buffer at the index location assigned to each corresponding packet; wherein upon a failure of one or more graphics processing units, send packets to backup GPU buffers and transmit an interrupt to one or more backup graphics processing units. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
12. A system, comprising:
at least one network interface comprising at least one first processor to; receive a stream of packets from a network; split the stream of packets into at least one packet stream subset; for each packet in the stream of packets, analyze packet contents to determine a specific data type to which the respective packet corresponds; filter the stream of packets into a plurality of groups, each group based on the specific data type; insert each packet of a first group into a corresponding first buffer in memory of at least one graphics processing unit using direct memory access; assign each of the packets of the first group an index representing an offset indicating a location in the memory of the at least one graphics processing unit; determine that a pre-configured buffer flow capacity has been reached regarding the first buffer in the at least one graphics processing unit; and transmit an interrupt to the at least one graphics processing unit corresponding to the pre-configured buffer flow capacity regarding the first buffer in the least one graphics processing unit; and the at least one graphics processing unit connected to the at least one network interface over a bus and comprising at least one second processor to; start a first kernel preconfigured with packet handling code adapted to process packets of the specific data type in response to the interrupt to process the packets in the first buffer; wherein a substantially identical set of computer-readable instructions associated with the first kernel is executed on each of the packets in the first buffer; wherein a plurality of threads are executed on the at least one graphics processing units to process the packets in the first buffer at the index location assigned to each corresponding packet; wherein upon a failure of one or more graphics processing units, send packets to backup GPU buffers and transmit an interrupt to one or more backup graphics processing units. - View Dependent Claims (13)
-
14. A server, comprising:
at least one network interface comprising at least one first processor to; receive a plurality of packets from a network; for each packet in the plurality of packets, analyze packet contents to determine a specific data type to which the respective packet corresponds; filter the plurality of packets into a plurality of groups, each group based on the specific data type; insert the plurality of packets of a first group into a corresponding first buffer in memory of at least one graphics processing unit using direct memory access; assign each of the packets of the first group an index representing an offset indicating a location in the memory of the at least one graphics processing unit; determine that a pre-configured buffer flow capacity has been reached regarding the first buffer in the at least one graphics processing unit; and transmit an interrupt to the at least one graphics processing unit corresponding to the pre-configured buffer flow capacity regarding the first buffer in the least one graphics processing unit; and the at least one graphics processing unit connected to the at least one network interface over a bus and comprising at least one second processor to; start a first kernel preconfigured with packet handling code adapted to process packets of the specific data type in response to the interrupt to process the packets in the first buffer; wherein a substantially identical set of computer-readable instructions associated with the first kernel is executed on each of the packets in the first buffer; wherein a plurality of threads are executed on the at least one graphics processing units to process the packets in the first buffer at the index location assigned to each corresponding packet; wherein upon a failure of one or more graphics processing units, send packets to backup GPU buffers and transmit an interrupt to one or more backup graphics processing units. - View Dependent Claims (15)
-
16. A method, comprising:
-
receiving, by at least one network interface comprising at least one first processor, a plurality of packets from a network; analyzing, by the at least one network interface comprising at least one first processor, packet contents of each packet in the plurality of packets to determine a specific data type to which the respective packet corresponds; filtering, by the at least one network interface comprising at least one first processor, the plurality of packets into a plurality of groups, each group based on the specific data type; inserting, by the at least one network interface comprising the at least one first processor, each of the plurality of packets of a first group into a corresponding first buffer in memory of at least one graphics processing unit using direct memory access; assigning, by the at least one network interface comprising the at least one first processor, each of the packets of the first group an index representing an offset indicating a location in the memory of the at least one graphics processing unit; determining, by the at least one network interface comprising the at least one first processor, that a pre-configured buffer flow capacity has been reached regarding the first buffer in the at least one graphics processing unit; transmitting, by the at least one network interface comprising the at least one first processor, an interrupt to the at least one graphics processing unit corresponding to the pre-configured buffer flow capacity regarding the first buffer in the at least one graphics processing unit; and starting, by the at least one graphics processing unit comprising at least one second processor, a first kernel preconfigured with packet handling code adapted to process packets of the specific data type in response to the interrupt to process the packets in the first buffer; wherein a substantially identical set of computer-readable instructions associated with the first kernel is executed on each of the packets in the first buffer; wherein a plurality of threads are executed on the at least one graphics processing units to process the packets in the first buffer at the index location assigned to each corresponding packet; wherein upon a failure of one or more graphics processing units, send packets to backup GPU buffers and transmit an interrupt to one or more backup graphics processing units. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A method, comprising:
-
receiving, by at least one network interface comprising at least one first processor, a stream of packets from a network; splitting, by the at least one network interface comprising the at least one first processor, the stream of packets into at least one packet stream subset; analyzing, by the at least one network interface comprising at least one first processor, packet contents of each packet in the at least one packet stream subset to determine a specific data type to which the respective packet corresponds; filtering, by the at least one network interface comprising at least one first processor, the at least one packet stream subset into a plurality of groups, each group based on the specific data type; inserting, by the at least one network interface comprising the at least one first processor, each packet of a first group into a corresponding first buffer in memory of at least one graphics processing unit using direct memory access; assigning, by the at least one network interface comprising the at least one first processor, each of the packets of the first group an index representing an offset indicating a location in the memory of the at least one graphics processing unit; determining, by the at least one network interface comprising the at least one first processor, that a pre-configured buffer flow capacity has been reached regarding the first buffer in the at least one graphics processing unit; transmitting, by the at least one network interface comprising the at least one first processor, an interrupt to the at least one graphics processing unit corresponding to the pre-configured buffer flow capacity regarding the first buffer in the at least one graphics processing unit; and starting, by the at least one graphics processing unit comprising at least one second processor, a first kernel preconfigured with packet handling code adapted to process packets of the specific data type in response to the interrupt to process the packets in the first buffer; wherein a substantially identical set of computer-readable instructions associated with the first kernel is executed on each of the packets in the first buffer; wherein a plurality of threads are executed on the at least one graphics processing units to process the packets in the first buffer at the index location assigned to each corresponding packet; wherein upon a failure of one or more graphics processing units, send packets to backup GPU buffers and transmit an interrupt to one or more backup graphics processing units. - View Dependent Claims (29, 30)
-
-
31. A system, comprising:
-
at least one network interface and at least one graphics processing unit communicating over a bus to execute computer-executable instructions to; receive a plurality of packets from a network by the at least one network interface; for each packet in the plurality of packets, analyze packet contents to determine a specific data type to which the respective packet corresponds; filter the plurality of packets into a plurality of groups, each group based on the specific data type; insert the plurality packets of a first group into a corresponding first buffer in memory of the at least one graphics processing unit using direct memory access; assign each of the packets of the first group an index by the at least one network interface representing an offset indicating a location in memory of the at least one graphics processing unit; transmit an interrupt to the at least one graphics processing unit regarding the first buffer in the least one graphics processing unit; and start a first kernel preconfigured with packet handling code adapted to process packets of the specific data type in the at least one graphics processing unit in response to the interrupt to process the packets in the first buffer; wherein a substantially identical set of computer-readable instructions associated with the first kernel is executed on each of the packets in the first buffer; wherein a plurality of threads are executed on the at least one graphics processing units to process the packets in the first buffer at the index location assigned to each corresponding packet; wherein upon a failure of one or more graphics processing units, send packets to backup GPU buffers and transmit an interrupt to one or more backup graphics processing units. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42)
-
-
43. A system, comprising:
-
at least one network interface and at least one graphics processing unit communicating over a bus to execute computer-executable instructions to; receive a stream of packets from a network by the at least one network interface; split the stream of packets into at least one packet stream subset by the at least one network interface; for each packet in the stream of packets, analyze packet contents to determine a specific data type to which the respective packet corresponds; filter the stream of packets into a plurality of groups, each group based on the specific data type; insert each packet of a first group into a corresponding first buffer in memory of the at least one graphics processing unit using direct memory access; assign each packet of the first group an index by the at least one network interface representing an offset indicating a location in the memory of the at least one graphics processing unit; transmit an interrupt to the at least one graphics processing unit regarding the first buffer in the least one graphics processing unit; and start a first kernel preconfigured with packet handling code adapted to process packets of the specific data type in the least one graphics processing unit in response to the interrupt to process the packets in the first buffer; wherein a substantially identical set of computer-readable instructions associated with the first kernel is executed on each of the packets in the first buffer; wherein a plurality of threads are executed on the at least one graphics processing units to process the packets in the first buffer at the index location assigned to each corresponding packet; wherein upon a failure of one or more graphics processing units, send packets to backup GPU buffers and transmit an interrupt to one or more backup graphics processing units. - View Dependent Claims (44, 45)
-
-
46. A server comprising:
-
at least one network interface and at least one graphics processing unit communicating over a bus to execute computer-executable instructions to; receive a stream of packets from a network by the at least one network interface; for each packet in the stream of packets, analyze packet contents to determine a specific data type to which the respective packet corresponds; filter the stream of packets into a plurality of groups, each group based on the specific data type; insert each of the packets of a first group into a corresponding first buffer in memory of the at least one graphics processing unit using direct memory access; assign each of the packets of the first group an index by the at least one network interface representing an offset indicating a location in the memory of the at least one graphics processing unit; transmit an interrupt to the at least one graphics processing unit regarding the first buffer in the at least one graphics processing unit; and start a first kernel preconfigured with packet handling code adapted to process packets of the specific data type in the at least one graphics processing unit in response to the interrupt to process the packets in the first buffer; wherein a substantially identical set of computer-readable instructions associated with the first kernel is executed on each of the packets in the first buffer; wherein a plurality of threads are executed on the at least one graphics processing units to process the packets in the first buffer at the index location assigned to each corresponding packet; wherein upon a failure of one or more graphics processing units, send packets to backup GPU buffers and transmit an interrupt to one or more backup graphics processing units. - View Dependent Claims (47, 48)
-
Specification