__builtin_prefetch, wie viel liest es?

Lesezeit: 1 Minute

builtin prefetch wie viel liest es
Michail

Ich versuche, etwas C++ zu optimieren (RK4) durch die Nutzung

__builtin_prefetch

Ich kann nicht herausfinden, wie eine ganze Struktur vorab abgerufen werden kann.

Ich verstehe nicht, wie viel davon const void *addr ist gelesen. Ich möchte die nächsten Werte von haben from und to geladen.

for (int i = from; i < to; i++)
{
    double kv = myLinks[i].kv;
    particle* from = con[i].Pfrom;
    particle* to = con[i].Pto;
    //Prefetch values at con[i++].Pfrom & con[i].Pto;
    double pos = to->px- from->px;
    double delta = from->r + to->r - pos;
    double k1 = axcel(kv, delta, from->mass) * dt; //axcel is an inlined function
    double k2 = axcel(kv, delta + 0.5 * k1, from->mass) * dt;
    double k3 = axcel(kv, delta + 0.5 * k2, from->mass) * dt;
    double k4 = axcel(kv, delta + k3, from->mass) * dt;
    #define likely(x)       __builtin_expect((x),1)
    if (likely(!from->bc))
    {
            from->x += (( k1 + 2 * k2 + 2 * k3 + k4) / 6);
    }
}

Verknüpfung: http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/

  • Ich glaube nicht, dass eine solche Mikrooptimierung für andere als Lernzwecke viel Sinn macht. Moderne CPUs sind sehr gut im Prefetching von selbst.

    – ronag

    10. Dezember 2011 um 22:59 Uhr


  • Wahrscheinlich, aber ich habe eine Funktion, die fast 1 Milliarde Mal aufgerufen wird.

    – Michail

    10. Dezember 2011 um 23:01 Uhr

  • Was ist “RK4”?

    – Peter Mortensen

    7. November 2018 um 19:25 Uhr

  • Ja: Wenn Sie dies tun möchten, stellen Sie sicher, dass Sie Ihre Schleife vorher und nachher mit einem Benchmarking versehen. Es besteht die Möglichkeit, dass Sie es verschlimmern oder keinen Unterschied machen.

    – 111111

    10. Dezember 2011 um 23:05 Uhr

  • Danke für deinen Beitrag. Ich habe 3 Benchmarks gemacht: keine Optimierung = 100 %, vorauslesen [i+3] 100% und mit [i+10] 200%+. Alle wurden mit -03 und schneller Mathematik erledigt

    – Michail

    11. Dezember 2011 um 4:56 Uhr


914840cookie-check__builtin_prefetch, wie viel liest es?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy