I’m not familiar with your use case

I understand. I will try to simplify my use case.
I am trying to time the duration between from when the model execution started till when the outputs are first  ready to be read with minimal impact to performance. I am not interested in profiling individual kernel executions. With our discussion so far this is a possible solution:
1. Record start timestamp
2. model_outputs = torch_model.forward(input_tensors)
3. 
auto stream = at::cuda::getCurrentCUDAStream(); // or at::cuda::getDefaultCUDAStream())
AT_CUDA_CHECK(cudaStreamSynchronize(stream));
4. Record end timestamp
5. Read output tensor from `model_outputs`.

The alternative I propose is to attach a single host function to just capture the end of the execution on the default stream. The only assumption being the execution on all the streams being used by pytorch was over when default stream ends execution. The description of default stream being the one doing most of the work adds some credibility to above assumption. Hence, the warning should not apply here.
Something like below:
1. Record start timestamp
2. model_outputs = torch_model.forward(input_tensors)
3. Record end timestamp in a callback on default stream.
4. Read output tensor from `model_outputs`.

Description of default stream:

The default stream is where most computation occurs when you aren’t explicitly using streams.
Link 1