[all-commits] [llvm/llvm-project] 719d77: [libc] Begin implementing a library for the RPC se...

Joseph Huber via All-commits all-commits at lists.llvm.org
Thu Jun 15 09:02:40 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 719d77ed28b69101aaa03cf82d64ede3b29cafcd
      https://github.com/llvm/llvm-project/commit/719d77ed28b69101aaa03cf82d64ede3b29cafcd
  Author: Joseph Huber <jhuber6 at vols.utk.edu>
  Date:   2023-06-15 (Thu, 15 Jun 2023)

  Changed paths:
    M libc/src/__support/RPC/rpc.h
    M libc/utils/gpu/CMakeLists.txt
    M libc/utils/gpu/loader/Loader.h
    R libc/utils/gpu/loader/Server.h
    M libc/utils/gpu/loader/amdgpu/CMakeLists.txt
    M libc/utils/gpu/loader/amdgpu/Loader.cpp
    M libc/utils/gpu/loader/nvptx/CMakeLists.txt
    M libc/utils/gpu/loader/nvptx/Loader.cpp
    A libc/utils/gpu/server/CMakeLists.txt
    A libc/utils/gpu/server/Server.cpp
    A libc/utils/gpu/server/Server.h

  Log Message:
  -----------
  [libc] Begin implementing a library for the RPC server

This patch begins providing a generic static library that wraps around
the raw `rpc.h` interface. As discussed in the corresponding RFC,
https://discourse.llvm.org/t/rfc-libc-exporting-the-rpc-interface-for-the-gpu-libc/71030,
we want to begin exporting RPC services to external users. In order to
do this we decided to not expose the `rpc.h` header by wrapping around
its functionality. This is done with a C-interface as we make heavy use
of callbacks and allows us to provide a predictable interface.

Reviewed By: JonChesterfield, sivachandra

Differential Revision: https://reviews.llvm.org/D147054


  Commit: dcdfc963d7934a1313094b6fe9ce7aa04debe495
      https://github.com/llvm/llvm-project/commit/dcdfc963d7934a1313094b6fe9ce7aa04debe495
  Author: Joseph Huber <jhuber6 at vols.utk.edu>
  Date:   2023-06-15 (Thu, 15 Jun 2023)

  Changed paths:
    M libc/config/gpu/api.td
    M libc/config/gpu/entrypoints.txt
    M libc/config/gpu/headers.txt
    M libc/include/CMakeLists.txt
    A libc/include/gpu/rpc.h.def
    M libc/include/llvm-libc-types/CMakeLists.txt
    A libc/include/llvm-libc-types/rpc_opcodes_t.h
    A libc/spec/gpu_ext.td
    M libc/src/CMakeLists.txt
    M libc/src/__support/File/gpu/file.cpp
    M libc/src/__support/OSUtil/gpu/io.cpp
    M libc/src/__support/OSUtil/gpu/quick_exit.cpp
    M libc/src/__support/RPC/CMakeLists.txt
    M libc/src/__support/RPC/rpc.h
    M libc/src/__support/RPC/rpc_client.h
    A libc/src/gpu/CMakeLists.txt
    A libc/src/gpu/rpc_reset.cpp
    A libc/src/gpu/rpc_reset.h
    M libc/src/stdlib/gpu/free.cpp
    M libc/src/stdlib/gpu/malloc.cpp
    M libc/test/integration/startup/gpu/rpc_interface_test.cpp
    M libc/test/integration/startup/gpu/rpc_stream_test.cpp
    M libc/test/integration/startup/gpu/rpc_test.cpp
    M libc/utils/gpu/loader/CMakeLists.txt
    M libc/utils/gpu/server/CMakeLists.txt
    M libc/utils/gpu/server/Server.cpp
    M libc/utils/gpu/server/Server.h

  Log Message:
  -----------
  [libc] Export GPU extensions to `libc` for external use

The GPU port of the LLVM C library needs to export a few extensions to
the interface such that users can interface with it. This patch adds the
necessary logic to define a GPU extension. Currently, this only exports
a `rpc_reset_client` function. This allows us to use the server in
D147054 to set up the RPC interface outside of `libc`.

Depends on https://reviews.llvm.org/D147054

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D152283


Compare: https://github.com/llvm/llvm-project/compare/0608764d6f3b...dcdfc963d793


More information about the All-commits mailing list