P
US10795840B2ActiveUtilityPatentIndex 61

Persistent kernel for graphics processing unit direct memory access network packet processing

Assignee: AT & T IP I LPPriority: Nov 12, 2018Filed: Nov 12, 2018Granted: Oct 6, 2020
Est. expiryNov 12, 2038(~12.4 yrs left)· nominal 20-yr term from priority
Inventors:AMENTO BRIAN SPURDY KERMIT HALJANG MINSUNG
G06F 15/17325G06F 13/28G06T 1/20H04L 69/324G06F 15/17331G06F 2213/28
61
PatentIndex Score
1
Cited by
36
References
20
Claims

Abstract

A graphics processing unit may, in accordance with a kernel, determine that at least a first packet is written to a memory buffer of the graphics processing unit by a network interface card via a direct memory access, process the at least the first packet in accordance with the kernel, and provide a first notification to a central processing unit that the at least the first packet is processed in accordance with the kernel. The graphics processing unit may further determine that at least a second packet is written to the memory buffer by the network interface card via the direct memory access, process the at least the second packet in accordance with the kernel, where the kernel comprises a persistent kernel, and provide a second notification to the central processing unit that the at least the second packet is processed in accordance with the kernel.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method comprising:
 determining, by a graphics processing unit in accordance with a kernel, that at least a first packet is written to a memory buffer of the graphics processing unit by a network interface card via a direct memory access, wherein the kernel is executed by at least one streaming multiprocessor of the graphics processing unit; 
 processing, by the graphics processing unit, the at least the first packet in accordance with the kernel; 
 providing, by the graphics processing unit, a first notification to a central processing unit that the at least the first packet is processed in accordance with the kernel; 
 determining, by the graphics processing unit in accordance with the kernel, that at least a second packet is written to the memory buffer by the network interface card via the direct memory access; 
 processing, by the graphics processing unit, the at least the second packet in accordance with the kernel, wherein the kernel comprises a persistent kernel; and 
 providing, by the graphics processing unit, a second notification to the central processing unit that the at least the second packet is processed in accordance with the kernel. 
 
     
     
       2. The method of  claim 1 , wherein the kernel remains assigned to the at least one streaming multiprocessor from the processing of the at least the first packet to the processing of the at least the second packet. 
     
     
       3. The method of  claim 1 , wherein the determining that the at least the first packet is written to the memory buffer comprises:
 receiving, by the graphics processing unit from the central processing unit, a first indicator that the at least the first packet is written to the memory buffer by the network interface card via the direct memory access. 
 
     
     
       4. The method of  claim 3 , wherein the determining that the at least the second packet is written to the memory buffer comprises:
 receiving, by the graphics processing unit from the central processing unit, a second indicator that the at least the second packet is written to the memory buffer by the network interface card via the direct memory access. 
 
     
     
       5. The method of  claim 4 , wherein the first indicator and the second indicator comprise notification flags written to a shared memory of the graphics processing unit by the central processing unit. 
     
     
       6. The method of  claim 4 , wherein the first indicator and the second indicator comprise instructions from the central processing unit to a scheduler of the graphics processing unit. 
     
     
       7. The method of  claim 1 , wherein the determining that the at least the first packet is written to the memory buffer comprises:
 inspecting a first memory address of the memory buffer for new data. 
 
     
     
       8. The method of  claim 7 , wherein the determining that the at least the second packet is written to the memory buffer comprises:
 inspecting a second memory address of the memory buffer for new data. 
 
     
     
       9. The method of  claim 8 , wherein the first memory address and the second memory address are in accordance with a read pointer for the memory buffer. 
     
     
       10. The method of  claim 9 , wherein the at least the first packet is written to the memory buffer by the network interface card via the direct memory access in a first block of packets of a defined size, and wherein the at least the second packet is written to the memory buffer by the network interface card via the direct memory access in a second block of packets of the defined size. 
     
     
       11. The method of  claim 1 , wherein the memory buffer comprises a ring buffer. 
     
     
       12. The method of  claim 1 , further comprising:
 allocating, by the graphics processing unit, the memory buffer of the graphics processing unit for the direct memory access by the network interface card. 
 
     
     
       13. The method of  claim 12 , further comprising:
 receiving, by the graphics processing unit, a request from the central processing unit to allocate the memory buffer for the direct memory access by the network interface card. 
 
     
     
       14. The method of  claim 1 , further comprising:
 obtaining, by the graphics processing unit, the kernel from the central processing unit. 
 
     
     
       15. The method of  claim 14 , further comprising:
 assigning, by the graphics processing unit, the kernel to the at least one streaming multiprocessor of the graphics processing unit. 
 
     
     
       16. The method of  claim 14 , wherein the kernel comprises:
 kernel code for execution as a plurality of threads; and 
 instructions for arranging the plurality of threads of the kernel into at least one thread block. 
 
     
     
       17. The method of  claim 16 , wherein the at least one streaming multiprocessor comprises a plurality of streaming multiprocessors, wherein each of the at least one thread block is assigned to a respective streaming multiprocessor of the plurality of streaming multiprocessors of the graphics processing unit. 
     
     
       18. The method of  claim 1 , wherein the at least the second packet is written to the memory buffer after the processing the at least the first packet via the kernel. 
     
     
       19. A non-transitory computer-readable medium storing instructions which, when executed by a graphics processing unit, cause the graphics processing unit to perform operations, the operations comprising:
 determining that at least a first packet is written to a memory buffer of the graphics processing unit by a network interface card via a direct memory access; 
 processing the at least the first packet in accordance with the instructions, wherein the instructions comprise a kernel; 
 providing a first notification to a central processing unit that the at least the first packet is processed in accordance with the kernel; 
 determining that at least a second packet is written to the memory buffer by the network interface card via the direct memory access; 
 processing at least the second packet in accordance with the instructions, wherein the kernel comprises a persistent kernel; and 
 providing a second notification to the central processing unit that the at least the second packet is processed in accordance with the kernel. 
 
     
     
       20. A device comprising:
 a graphics processing unit; and 
 a non-transitory computer-readable medium storing instructions which, when executed by the graphics processing unit, cause the graphics processing unit to perform operations, the operations comprising:
 determining that at least a first packet is written to a memory buffer of the graphics processing unit by a network interface card via a direct memory access; 
 processing the at least the first packet in accordance with the instructions, wherein the instructions comprise a kernel; 
 providing a first notification to a central processing unit that the at least the first packet is processed in accordance with the kernel; 
 determining that at least a second packet is written to the memory buffer by the network interface card via the direct memory access; 
 processing at least the second packet in accordance with the instructions, wherein the kernel comprises a persistent kernel; and 
 providing a second notification to the central processing unit that the at least the second packet is processed in accordance with the kernel.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.