We previously provided the try_open facility to indicate if opening a
port failed. This is used on the server to continuously poll and quit if
there is no work. However the Client currently has no way to recover
from not finding a port and simply spins repeatedly. The abstraction
here costs us some resources. This patch changes the interface to only
allow open on the client side and merges the loops. This saves us a
branch and a good number of registers.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
The can't run out of ports because more are available than hardware resources doesn't really work with fewer ports than hardware resources, but that's an existing problem
Comment Actions
The hardware resource limit isn't something that's enforced yet. Right now we
just set it to the maximum amount of memory we allocate, which is 512. I believe
most GPUs will need more like 2048 to cover all hardware resources. We'll work
on that later once we have a smarter port allocation scheme. For now we would
probablyt replace the initialize at zero with the sm-id as a cheap way to
stagger them out. The smid can change during execution so it's not a perfect
solution.