[libc-commits] [PATCH] D148191: [libc][wip] Draft of concurrent GPU RPC

Jon Chesterfield via Phabricator via libc-commits libc-commits at lists.llvm.org
Wed Apr 12 20:12:11 PDT 2023


JonChesterfield created this revision.
JonChesterfield added reviewers: jhuber6, jdoerfert, tianshilei1992, michaelrj, sivachandra, tra, gchatelet.
Herald added subscribers: libc-commits, kosarev, mattd, asavonic, ecnelises, kerbowa, tschuett, Anastasia, jvesely.
Herald added projects: libc-project, All.
JonChesterfield requested review of this revision.

Extends the current model to handle N=64 concurrent calls.

State machine follows the same transitions as previously, each call is wholly
independent of one another. This is necessary for correctness under the opencl
concurrency model - one warp/wavefront cannot safely wait for another as that
other may not be scheduled fairly.

Extends the inbox/outbox variables to a bitmap which is mostly responsible for
mapping from an index into a specific bit in that structure. Moves the mailbox
operations into Process from the client/server classes so that invariants are
more readily tracked and models the state machine in the template parameters of
said index.

Does not handle wavefront size of 64, still undecided how best to represent
that from the Loader.cpp memory allocation side. There's a bug to fix in the
clang driver for nvptx freestanding before this can work there.

Extra testing is tbd, I haven't understood the libc framework for it yet.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D148191

Files:
  libc/src/__support/CPP/atomic.h
  libc/src/__support/OSUtil/gpu/io.cpp
  libc/src/__support/OSUtil/gpu/quick_exit.cpp
  libc/src/__support/RPC/rpc.h
  libc/src/__support/RPC/rpc_util.h
  libc/startup/gpu/amdgpu/start.cpp
  libc/startup/gpu/nvptx/start.cpp
  libc/utils/gpu/loader/amdgpu/Loader.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D148191.513050.patch
Type: text/x-patch
Size: 22227 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libc-commits/attachments/20230413/8c22e18e/attachment-0001.bin>


More information about the libc-commits mailing list