IP Library › Granted Patent US 11,989,595
Granted Patent B2
US 11,989,595 · App. 17/526,097 · Granted May 21, 2024

Disaggregated computing for distributed confidential computing environment

Inventors: Reshma Lal (Portland, OR); Pradeep Pappachan (Tualatin, OR); Luis Kida (Beaverton, OR); Soham Jayesh Desai (Hillsboro, OR); Sujoy Sen (Beaverton, OR); Selvakumar Panneer (Portland, OR); Robert Sharp (Austin, TX)
Assignee: INTEL CORPORATION
G06F9/5083G06F9/3814G06F9/5027G06T1/20G06T1/60
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 11,989,595
App. No.
17/526,097
Granted
May 21, 2024
Kind
B2
Abstract

An apparatus to facilitate disaggregated computing for a distributed confidential computing environment is disclosed. The apparatus includes one or more processors to: provide a remote GPU middleware layer to act as a proxy for an application stack on a client platform separate from the apparatus; communicate, by the remote GPU middleware layer, with a kernel mode driver of the one or more processors to cause the host memory to be allocated for command buffers and data structures received from the client platform for consumption by a command streamer of a remote GPU of the apparatus; and invoke, by the remote GPU middleware layer, the kernel mode driver to submit a workload generated by the application stack, the workload submitted for processing by the remote GPU using the command buffers and the data structures allocated in the host memory as directed by the command streamer.

Claims (30)

1. A remote server platform comprising:

one or more processors communicably coupled to host memory and a remote graphics processing unit (GPU) hosted by the remote server platform, the one or more processors to:

provide a remote GPU middleware layer to act as a proxy for an application stack on a client platform that is separate from the remote server platform, wherein the remote GPU middleware layer comprises is to expose an abstraction of the remote GPU to userspace components of a remote GPU stack, the userspace components running on the client platform, and wherein the client platform is to execute a corresponding remote GPU middleware layer to interface with the remote GPU middleware layer of the remote server platform;

communicate, by the remote GPU middleware layer, with a kernel mode driver of the one or more processors to cause the host memory to be allocated for command buffers and data structures received from the client platform for consumption by a command streamer of the remote GPU; and

invoke, by the remote GPU middleware layer, the kernel mode driver to submit a workload generated by the application stack, the workload submitted for processing by the remote GPU using the command buffers and the data structures allocated in the host memory as directed by the command streamer.

2. The remote server platform of claim 1 , wherein the command buffers and the data structures are received from a runtime component and a user mode driver component of the client platform, and wherein the command buffers and the data structures are generated based on instructions from the application stack.

3. The remote server platform of claim 1 , wherein the kernel mode driver utilizes the command buffers and the data structures to prepare a context of the workload and schedule the workload on the remote GPU.

4. The remote server platform of claim 2 , wherein the userspace components of the remote GPU stack comprise the runtime component and the user mode driver.

5. The remote server platform of claim 1 , wherein the remote GPU middleware layer is a transport-agnostic interface for the application stack on the client platform.

6. The remote server platform of claim 1 , wherein the remote GPU middleware layer comprises a transport sublayer to communicate command and data between the client platform and the remote server platform.

7. The remote server platform of claim 1 , wherein the remote GPU comprises a network interface controller (NIC) for direct transfers of data between the client platform and the remote GPU.

8. The remote server platform of claim 1 , wherein a GPU local memory of the remote GPU is mapped to an address space of the application stack of the client platform to allow the application stack to access the GPU local memory directly.

9. The remote server platform of claim 1 , wherein the one or more processors comprise one or more of a GPU, a central processing unit (CPU), or a hardware accelerator.

10. A method comprising:

providing, by one or more processors of a remote server platform where the one or more processors are communicably coupled to a host memory and a remote graphics processing unit (GPU) hosted by the remote server platform, a remote GPU middleware layer to act as a proxy for an application stack on a client platform that is separate from the remote server platform, wherein the remote GPU middleware layer comprises is to expose an abstraction of the remote GPU to userspace components of a remote GPU stack, the userspace components running on the client platform, and wherein the client platform is to execute a corresponding remote GPU middleware layer to interface with the remote GPU middleware layer of the remote server platform;

communicating, by the remote GPU middleware layer, with a kernel mode driver of the one or more processors to cause the host memory to be allocated for command buffers and data structures received from the client platform for consumption by a command streamer of the remote GPU; and

invoking, by the remote GPU middleware layer, the kernel mode driver to submit a workload generated by the application stack, the workload submitted for processing by the remote GPU using the command buffers and the data structures allocated in the host memory as directed by the command streamer.

11. The method of claim 10 , wherein the command buffers and the data structures are received from a runtime component and a user mode driver component of the client platform, and wherein the command buffers and the data structures are generated based on instructions from the application stack.

12. The method of claim 10 , wherein the kernel mode driver utilizes the command buffers and the data structures to prepare a context of the workload and schedule the workload on the remote GPU.

13. The method of claim 11 , wherein the userspace components of the remote GPU stack comprise the runtime component and the user mode driver.

14. The method of claim 10 , wherein the remote GPU middleware layer comprises a transport sublayer to communicate command and data between the client platform and the remote server platform.

15. The method of claim 10 , wherein a GPU local memory of the remote GPU is mapped to an address space of the application stack of the client platform to allow the application stack to access the GPU local memory directly.

16. A non-transitory machine readable storage medium having stored thereon executable computer program instructions that, when executed by one or more processors, cause the one or more processors to perform operations to:

provide, by the one or more processors of a remote server platform where the one or more processors are communicably coupled to a host memory and a remote graphics processing unit (GPU) hosted by the remote server platform, a remote GPU middleware layer to act as a proxy for an application stack on a client platform that is separate from the remote server platform, wherein the remote GPU middleware layer comprises is to expose an abstraction of the remote GPU to userspace components of a remote GPU stack, the userspace components running on the client platform, and wherein the client platform is to execute a corresponding remote GPU middleware layer to interface with the remote GPU middleware layer of the remote server platform;

communicate, by the remote GPU middleware layer, with a kernel mode driver of the one or more processors to cause the host memory to be allocated for command buffers and data structures received from the client platform for consumption by a command streamer of the remote GPU; and

invoke, by the remote GPU middleware layer, the kernel mode driver to submit a workload generated by the application stack, the workload submitted for processing by the remote GPU using the command buffers and the data structures allocated in the host memory as directed by the command streamer.

17. The non-transitory machine readable storage medium of claim 16 , wherein the command buffers and the data structures are received from a runtime component and a user mode driver component of the client platform, and wherein the command buffers and the data structures are generated based on instructions from the application stack.

18. The non-transitory machine readable storage medium of claim 17 , wherein the kernel mode driver utilizes the command buffers and the data structures to prepare a context of the workload and schedule the workload on the remote GPU.

19. The non-transitory machine readable storage medium of claim 17 , wherein the userspace components of the remote GPU stack comprise the runtime component and the user mode driver.

20. The non-transitory machine readable storage medium of claim 16 , wherein a GPU local memory of the remote GPU is mapped to an address space of the application stack of the client platform to allow the application stack to access the GPU local memory directly.

Continuity (3)
Continuation 17133066 · Dec 23, 2020
Provisional Application 63083565 · Sep 25, 2020
Related Publication 20220100580A1 · Mar 31, 2022
Cited By (4)
US 12,229,605 US 12,260,263 US 12,284,115 US 12,405,838