¿Cuántos subprocesos por núcleo se suponen al calcular GFLOPS de las tarjetas de GPU Nvidia?

Estoy interesado en obtener el número de nano segundos que se tardaría en ejecutar 1 FLOP de doble precisión en la GeForce GTX 550 Ti.

Para hacer esto, estoy siguiendo este enfoque: descubrí que el rendimiento máximo de precisión simple de la tarjeta es de 691.2 GFLOPS, lo que significa que el rendimiento máximo de doble precisión sería 1/8 de la misma, es decir, 86.4 GFLOPS. Luego, para obtener FLOPS por núcleo, divido los 86.4 GFLOPS por el número de núcleos, 192, lo que me da 0.45 GFLOPS por núcleo. 0.45 GFLOPS significa 0.45 FLOPS por nano segundo por núcleo. Si estoy siguiendo el enfoque correcto, me gustaría saber cuántos subprocesos por núcleo se ejecutan para obtener estos números de GFLOPS y dónde puedo encontrar esta información.

Además, mi pequeña prueba que se muestra a continuación se ejecuta en 236000232 ciclos por un solo hilo. Para encontrar el tiempo (en nano segundos) que se tarda en ejecutar 1 iteración del bucle, hago 236000232/10 ^ 6 = 236 ciclos. El reloj de sombreado de la tarjeta es 1800Mhz, lo que significa que toma 236 / 1.8 = 131 nano segundos para ejecutar una iteración del bucle. Este número es mucho mayor que el anterior (0,45 nanosegundos por núcleo). Estoy seguro de que me estoy perdiendo algo aquí, porque los números son muy diferentes. Por favor ayúdame a entender las matemáticas detrás de esto.

    __global__ void bench_single(float *data)
{
    int i;
    double x = 1.;
    clock_t start, end;
    start = clock();
    for(i=0; i<1000000; i++)
    {
        x = x * 2.388415813 + 1.253314137;
    }
    end = clock();
    printf("End and start %d - %d\n", end, start);
    printf("Finished in %d cycles\n", end-start);
}

Gracias,

Respuestas a la pregunta(2)

Su respuesta a la pregunta