Freitag, 28. November 2008

Schnell!

Vor langer, langer Zeit hab ich mal über mein Softwareprojekt, Partialwellenanlyse auf Grafikkarten geschrieben. Nun, unterdessen hab ich zusammen mit einem anderen Postdoc und einem Doktoranden das ganze in richtig schöne Software verwandelt und in letzter Zeit nochmals etwas getunt. Heute hab ich mal wieder nachgemessen, und tatsächlich sind wir bis zu 160 Mal schneller als die Software, die dazu früher benutzt wurde (auf dem selben PC wohlverstanden...). Toll nicht? Und der Physiker glaubt ja nichts ohne Plot, der soll hier drum auch nicht fehlen...

Die gelbe Linie zeigt die Zeit, die das alte Program für verschieden grosse Datensamples brauchte, blau das selbe für die vorletzte Version meines Codes und rot schliesslich die Messungen von heute. Hübsch, nicht (vor allem, wenn man beachtet, dass die vertikale Achse logarithmisch ist)?

Kommentare:

  1. Nik, was ist denn mit der low-number-event-iteratioszeit (resp. rechenschritt-frequenz) bei der letzten ueberarbeitung passiert? Kommafehler? Ausreisser? Oder noch schlimmer? Sieht aber schon schnell aus, wuerde mal zur sicherheit ein kleines patentchen aufsetzen...
    Ganbei,
    L.

    AntwortenLöschen
  2. Hallo Luk!
    Der Ausreisser ist verstanden und hat damit zu tun, dass 50'000 einen grossen Rest Modulo 32'000 hat (Organisation des GPU-Memories, um jetzt nicht allzu sehr ins Detail zu gehen...) und damit, dass ich da na der Grenze der Auflösung des Timers arbeite. Patent ist wohl nicht, komerzielle Partialwellenanlyse ist nicht so verbreitet und für Rechnen mit GPUs gibts "prior art". Aber so ein Paper sollte es wohl schon geben...

    AntwortenLöschen
  3. Noch eine Frage, Nik. Was genau limitiert den das schnelle Rechnen auf der Grafikkarte auf berechnungen von Partialwellen?
    L.

    AntwortenLöschen
  4. Na ja, mein Programm. Du kannst da auch andere tolle Sachen rechnen, es gibt z.B. "Folding at Home" wo man auf Playstations Proteine faltet. Gut geeignet sind Probleme mit vielen unabhängigen Eingangsdaten, die sehr rechenintensiv und nicht allzu speicherintensiv sind. Auch ist es für die GPUs gut, wenn man Vektoren verwendet (Lorentzvektoren der Teilchen, Positionen der Atome im Protein).

    AntwortenLöschen
  5. macht sinn. schöne adventszeit dann. hier erreicht der southern ocean langsam angenehmere bade- und schnorcheltemperaturen...
    L.

    AntwortenLöschen