Trace CUPTI synchronization events.
- cuEventSynchronize - cuStreamWaitEvent - cuStreamSynchronize - cuCtxSynchronize PiperOrigin-RevId: 353984518 Change-Id: Ib3a5a1f50993248ae71f32baa54390fe8b29d298
This commit is contained in:
		
							parent
							
								
									470e4535d8
								
							
						
					
					
						commit
						747ca958fa
					
				| @ -776,6 +776,36 @@ void AddMemsetActivityEvent(CuptiTraceCollector *collector, | ||||
|   collector->AddEvent(std::move(event)); | ||||
| } | ||||
| 
 | ||||
| void AddSynchronizationActivityEvent( | ||||
|     CuptiTraceCollector *collector, const CUpti_ActivitySynchronization *sync) { | ||||
|   CuptiTracerEvent event{}; | ||||
|   event.type = CuptiTracerEventType::Generic; | ||||
|   event.source = CuptiTracerEventSource::Activity; | ||||
|   switch (sync->type) { | ||||
|     case CUPTI_ACTIVITY_SYNCHRONIZATION_TYPE_EVENT_SYNCHRONIZE: | ||||
|       event.name = "cuEventSynchronize"; | ||||
|       break; | ||||
|     case CUPTI_ACTIVITY_SYNCHRONIZATION_TYPE_STREAM_WAIT_EVENT: | ||||
|       event.name = "cuStreamWaitEvent"; | ||||
|       break; | ||||
|     case CUPTI_ACTIVITY_SYNCHRONIZATION_TYPE_STREAM_SYNCHRONIZE: | ||||
|       event.name = "cuStreamSynchronize"; | ||||
|       break; | ||||
|     case CUPTI_ACTIVITY_SYNCHRONIZATION_TYPE_CONTEXT_SYNCHRONIZE: | ||||
|       event.name = "cuCtxSynchronize"; | ||||
|       break; | ||||
|     default: | ||||
|       event.name = "unknown synchronization event"; | ||||
|       break; | ||||
|   } | ||||
|   event.start_time_ns = sync->start; | ||||
|   event.end_time_ns = std::max(sync->end, sync->start + 1); | ||||
|   event.correlation_id = sync->correlationId; | ||||
|   event.context_id = sync->contextId; | ||||
|   VLOG(5) << "Cuda activity " << event.name; | ||||
|   collector->AddEvent(std::move(event)); | ||||
| } | ||||
| 
 | ||||
| // This hook uses cupti activity api to measure device side activities.
 | ||||
| class CuptiDriverApiHookWithActivityApi : public CuptiDriverApiHook { | ||||
|  public: | ||||
| @ -1901,6 +1931,11 @@ Status CuptiTracer::ProcessActivityBuffer(CUcontext context, uint32_t stream_id, | ||||
|           AddMemsetActivityEvent( | ||||
|               collector_, reinterpret_cast<CUpti_ActivityMemset *>(record)); | ||||
|           break; | ||||
|         case CUPTI_ACTIVITY_KIND_SYNCHRONIZATION: | ||||
|           AddSynchronizationActivityEvent( | ||||
|               collector_, | ||||
|               reinterpret_cast<CUpti_ActivitySynchronization *>(record)); | ||||
|           break; | ||||
|         default: | ||||
|           LOG(ERROR) << "Activity type " << record->kind << " not supported."; | ||||
|           break; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user