[libc-commits] [libc] [libc][Docs] Update the GPU RPC documentation (PR #79069)
Nick Desaulniers via libc-commits
libc-commits at lists.llvm.org
Tue Jan 23 10:30:56 PST 2024
================
@@ -11,10 +11,298 @@ Remote Procedure Calls
Remote Procedure Call Implementation
====================================
-Certain features from the standard C library, such as allocation or printing,
-require support from the operating system. We instead implement a remote
-procedure call (RPC) interface to allow submitting work from the GPU to a host
-server that forwards it to the host system.
+Traditionally, the C library abstracts over several functions that interface
+with the platform's operating system through system calls. The GPU however does
+not provide an operating system that can handle target dependent operations.
+Instead, we implemented remote procedure calls to interface with the host's
+operating system while executing on a GPU.
+
+We implemented remote procedure calls using unified virtual memory to create a
+shared communicate channel between the two processes. This memory is often
+pinned memory that can be accessed asynchronously and atomically by multiple
+processes simultaneously. This supports means that we can simply provide mutual
+exclusion on a shared better to swap work back and forth between the host system
+and the GPU. We can then use this to create a simple client-server protocol
+using this shared memory.
+
+This work treats the GPU as a client and the host as a server. The client
+initiates a communication while the server listens for them. In order to
----------------
nickdesaulniers wrote:
s/them/requests/
https://github.com/llvm/llvm-project/pull/79069
More information about the libc-commits
mailing list