Repository navigation
Does CUDA VMM teardown serialize across independent GPUs? #1543
Unanswered
number-eleven11
asked this question in
Q&A
Replies: 1 comment
|
Yes, this cross-GPU serialization is expected in the current Where the cross-GPU serialization comes fromEven though each worker has its own process, CUDA context, and GPU with no peer access, CUDA VMM teardown still enters global, driver-wide kernel locks rather than purely per-GPU locks:
Because each Is there a batched VMM teardown API?
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
When several processes release CUDA virtual memory concurrently, each on its own GPU, the time to finish teardown can be substantially longer than it is for a single process. Is this expected with the open GPU kernel modules?
The workload can be expressed using only the public CUDA Driver API:
Compare the elapsed interval from the first worker starting teardown to the last worker finishing, with one worker and then with several workers. Hold the number and size of allocations per GPU constant across those runs. No peer access, handle exchange, or GPU work is needed during teardown.
The workaround we tested is to keep the total allocated bytes constant, use fewer and larger VMM mappings, and suballocate logical buffers inside them. That reduces the number of unmap/release calls and shortened teardown.
Is there shared serialization between otherwise independent devices on this path? If so, is there a supported way to batch teardown while preserving allocation granularity, or is coarsening the mappings the recommended workaround?
All reactions