Ile wątków przypada na rdzeń przy obliczaniu GFLOPS kart Nvidia GPU?

Jestem zainteresowany uzyskaniem liczby nano sekund potrzebnych do wykonania 1 podwójnej precyzji FLOP na GeForce GTX 550 Ti.

W tym celu postępuję zgodnie z tym podejściem: odkryłem, że szczytowa wydajność pojedynczej precyzji karty wynosi 691,2 GFLOPS, co oznacza, że ​​szczytowa wydajność podwójnej precyzji wynosiłaby 1/8, tj. 86,4 GFLOPS. Następnie, aby uzyskać FLOPS na rdzeń, dzielę 86,4 GFLOPS przez liczbę rdzeni 192, co daje mi 0,45 GFLOPS na rdzeń. 0,45 GFLOPS oznacza 0,45 FLOPS na nano sekundę na rdzeń. Jeśli postępuję zgodnie z właściwym podejściem, chciałbym wiedzieć, ile wątków na rdzeń jest uruchamianych w celu uzyskania tych numerów GFLOPS i gdzie mogę znaleźć te informacje?

Ponadto mój mały test pokazany poniżej wykonuje się w 236000232 cyklach tylko przez jeden wątek. Aby znaleźć czas (w nano sekundach) na wykonanie 1 iteracji pętli, wykonuję 236000232/10 ^ 6 = 236 cykli. Zegar modułu cieniującego wynosi 1800 MHz, co oznacza, że ​​wykonanie jednej iteracji pętli zajmuje 236 / 1.8 = 131 nano sekund. Ta liczba jest znacznie większa niż ta powyżej (0,45 nanosekund na rdzeń). Jestem pewien, że czegoś tu brakuje, ponieważ liczby są bardzo różne. Pomóż mi zrozumieć matematykę, która za tym stoi.

    __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);
}

Dziękuję Ci,

questionAnswers(2)

yourAnswerToTheQuestion