Applicability of Using cuptiProfilerCounterDataImageInitialize to Clear the counterDataImage

Hello,

Is it applicable to call cuptiProfilerCounterDataImageInitializeto clear the counterDataImageto avoid maintaining previous records when reused? This functionality is not documented on the CUPTI Profiling API’s webpage. However, the call appears to have this functionality in extras/CUPTI/samples/profiling_injection/injection.cpp:

// Clear counterDataImage (otherwise it maintains previous records when it is reused)
CUpti_Profiler_CounterDataImage_Initialize_Params initializeParams = { CUpti_Profiler_CounterDataImage_Initialize_Params_STRUCT_SIZE };
initializeParams.pOptions = &(contextData.counterDataImageOptions);
initializeParams.sizeofCounterDataImageOptions = CUpti_Profiler_CounterDataImageOptions_STRUCT_SIZE;
initializeParams.counterDataImageSize = contextData.counterDataImage.size();
initializeParams.pCounterDataImage = contextData.counterDataImage.data();
CUPTI_API_CALL(cuptiProfilerCounterDataImageInitialize(&initializeParams));

Assuming the above functionality holds true, is it needed to callcuptiProfilerCounterDataImageInitializeScratchBufferdirectly afterwards as well to clear the scratch buffer?

You are correct, cuptiProfilerCounterDataImageInitialize does reset the counter data image so that user can reuse the same allocated memory for new data. And your assumption is correct regarding reseting the scratch buffer too, you can call the cuptiProfilerCounterDataImageInitializeScratchBuffer API to do so.

Thank you for the clarification!