-
Notifications
You must be signed in to change notification settings - Fork 164
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Summary: Pull Request resolved: #686 The cuptiFinalize() call is dangerous as the calling thread will race with other threads calling CUPTI APIs. This resulted in a SIGSEGV during cuptiActivityFlushAll. This patch will teardown CUPTI appropriately after a profiling session via the CUPTI API exit callsite. - Teardown at the end of processing to ensure the Activity Buffers are forcefully flushed, and buffers have transferred ownership. - Uses the recommendation from CUPTI on teardown through callback APIs' exit callsite: https://docs.nvidia.com/cupti/r_main.html#r_dynamic_detach - Using mutex and cond var to synchronize finalize for runtime and driver domains. - Follows the flow: flush forcefully, all runtime domain apis hits callback, cuptiFinalize is called, cv notifies finalize is complete. - Teardown is on a separate thread because PyTorch Profiler forces CUPTI Runtime and Driver calls to be synchronous. Therefore we need a teardown thread to wait on the CUPTI callback api's cuptiFinalize. - Added tracingEnabled flag to early return if already enabled or disabled. - Renamed clearActivities to clearCuptiActivities for readability and align with existing API names. This is used to flush buffers after warmup. - Added logs for CuptiActivityApi to monitor Cupti teardown start / end. The CuptiActivityProfiler will follow this flow: - Waiting for request - Request comes in, enables cupti activities (attaches to cupti), starts warmup - When warmup is over, clear (ie. flush) cupti activities - Collection starts and finishes - In Post Processing, activity buffers are processed (force flush here) - After Post Processing, trace data reset will trigger cupti flush and finalize. (effectively detaching from cupti) Test Plan: CI Tests Reviewed By: chaekit Differential Revision: D40964557 Pulled By: aaronenyeshi fbshipit-source-id: 066ccddecdf31fc537716450f97dbe1ea3d0c7a1
- Loading branch information
1 parent
14b9e08
commit c7c76c3
Showing
5 changed files
with
91 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters