se puede hacer algo como esto:
__global__ void kernelSample(int *runtime)
{
// ....
clock_t start_time = clock();
//some code here
clock_t stop_time = clock();
// ....
runtime[tidx] = (int)(stop_time - start_time);
}
que da el número de ciclos de reloj entre las dos llamadas. Tenga un poco de cuidado, sin embargo, el temporizador se desbordará después de un par de segundos, por lo que debe estar seguro de que la duración del código entre las llamadas sucesivas es bastante corta. También debe tener en cuenta que el compilador y el ensamblador realizan el reordenamiento de la instrucción por lo que es posible que desee verificar que las llamadas de reloj no terminen colocadas una al lado de la otra en la salida SASS (use cudaobjdump
para verificar).
Amin, (hace algunos años) aceptó una respuesta que es información útil pero no responde su pregunta real. ¿Te importaría no aceptar o editar la pregunta para reflejar la respuesta? – einpoklum