Aktionen

Credit-Berechnung

Aus SETI.Germany Wiki

Die Credit-Berechnung bei Boinc dient einzig der Vergleichsmöglichkeit verschiedener CPU oder GPU, bei demselben Projekt, zueinander. Ausser der Aussage, das Projekt X mehr credits/Tag ausgibt, als Projekt Y, ist zwischen unterschiedlichen Projekten keine Vergleichsmöglichkeit gegeben.

Historie der Credit-Berechnung

Die erste Credit-Berechnung

Die Credit-Berechnungen in der Anfangszeit waren noch relativ einfach strukturiert.

Kurz gesagt: Die Whetstone einer CPU multipliziert mit der CPU-Zeit, die für die Berechnung einer wu benötigt wurde, ergab die "Claimed-Credits".

Da nicht alle CPU gleich schnell sind und die Berechnungen gleicher WU somit auch unterschiedlich schnell vonstatten gingen, mussten bei Projekten mit Wingman die Differenzen der Claimed-Credit ausgeglichen werden. Bei diesen Projekten gab es hierzu zwei unterschiedliche Lösungsansätze. Entweder wurden am Ende die niedrigeren Claimed-Credits gutgeschrieben oder es wurde zwischen den beiden Ergebnissen das Mittel gebildet und dieses als Granted-Credit gutgeschrieben.

Zwei Probleme sah man bei Berkeley, bei dieser Berechnungsmethode.

  • Wesentlich stärkere CPU konnten für die gleichen Aufgaben ein Vielfaches an Claimed-Credits erlangen, als CPU mit wesentlich geringeren Whetstones.
  • Selbst eine Serie gleicher Arbeitspakete konnte bei der gleichen CPU zu uterschiedlichen Claimed-Credits führen

Also versuchte Berkeley mit einer Veränderungen (ausgehend von der ursprünglichen Version), diese mit der Zeit aufgekommenen Probleme der Berechnungsmethoik zu bereinigen.

Die reformierte Credit-Berechnung

Bei der zweiten Berechnungsmethodik kam von den Whetstone ab und setzte auf die FLOPs, welche mittels einer Schnittstelle im Programm für jedes Projekt ermittelt werden konnten. Nachdem Seti@Home diese Methodik implementieren konnte, wurde es für das Projekt allerdings notwendig, einen linearen Faktor mit einzubeziehen, um die claimed-credits dieser Berechnungsmethode denen der urspünglichen Version anzugleichen. Nicht jedes Projekt konnte die Schnittstelle nutzen, um die FLOPs zu berechnen. Andere Projektbetreiber glichen daher ihre Claimed-Credits an die Vergabe bei Seti@Home an, nachdem man dort die ermittelten durchschnittlichen Credits für die CPUs herausgab. Wiederum andere Projekte nutzten eigene Benchmarks, um die FLOPs der CPU zu ermitteln und auch diese Projekte nutzten die Faktorisierungsmethode der Claimed-Credits, um sie an die Creditvergabewerte bei Seti@home anzugleichen.

Gleich mehrere Probleme brachte die Einführung dieser Methode mit sich:

  • GPU-Projekte mussten eigenen Code entwerfen, um Credits vergeben zu können, da GPU-FLOPs nicht genau ermittelt werden konnten
  • Projekte, welche die FLOPs nicht selbst ermitteln konnten, hatten nach wie vor das Problem, dass die Creditvergabe über die verschiedenen CPUs und/oder GPUs hinweg, uneinheitlich blieb
  • Teilnehmer konnten bei Projekten, bei denen es keines Wingmans bedurfte, tricksen, um an mehr credits zu gelangen


Die aktuelle Credit-Berechnung (CreditNew)

Mit Einführung der aktuellen Credit-Berechnung verfolgte Berkeley gleich mehrere Ziele:

  • Das Programm BOINC sollte seinerseits die erforlerlichen Benchmarks durchführen, diese an die Projekte weitergeben und somit den Einsatz einer Schnittstellentechnik bei den Projekten selbst unnötig machen
  • Unterschiede zwischen den CPUs und GPUs sollten behoben werden - faktisch sollten also alle CPUs oder GPUs für dieselben Arbeitspakete dieselben credits erhalten, unabhängig der Dauer der Anwendung
  • Eine Einschränkung der Projektneutralität bei der Vergabe von credits sollte die Vergleichbarkeit der credits zwischen den Projekten wiederherstellen, wie sie anfangs einmal bestand
  • GPU-Anwendungen, die Effizient arbeiteten sollten jedoch durchaus höhere credits einfahren dürfen, als Ineffizientere GPU-Anwendungen
  • Das System sollte Tricksereien ein Ende bereiten

Probleme mit Einführung von Credit-New

  • Auf Grund großer Diskussionen von Nutzern aber auch Projektbetreibern, die einem Shitstorm ähnlich kommen, verwenden nur wenige Projekte das Credit-New-System:

yafu@home

Berechnungsbeispiel für das erste Creditsystem

Vom SG-Forenmitglied Jaaber wurde 2005 eine Beschreibung erstellt, wie die Credits einer Workunit berechnet werden. Die aus einem Forenthread kopierte Beschreibung:


Claimed Credit = (double-precision MIPS + VAX MIPS) * Rechenzeit in Sekunden / 1728000


Erläuterung der Formel:

Um die Rechenleistung der einzelnen Teilnehmer genauer vergleichen zu können, hat BOINC die Einheit Cobblestone eingeführt.

1 Cobblestone entspricht dabei 1/100 Tag Rechenzeit auf einem Referenzcomputer mit folgenden Leistungsdaten:

1000 double-precision MIPS (Whetstone)
1000 VAX MIPS (Dhrystone)

Der Referenzcomputer schafft am Tag also 100 Cobblestone's. Natürlich lässt sich das auch berechnen, und das werden wir jetzt gleich tun.

(1000 + 1000) * 86400 Sekunden (1 Tag) = 172800000

Da nun einmal festgelegt wurde, dass der Referenzcomputer 100 Cobblestone's am Tag schaffen soll muss die Formel noch ergänzt werden. Dazu teilt man das Ergebnis durch 1728000.

(1000 + 1000) * 86400 / 1728000 = 100 Cobblestone's.

Die Anwendung der Formel auf den eigenen Rechner:

Zuerst öffnen wir die client_state.xml im BOINC-Verzeichnis. Dort findet sich der folgende Abschnitt.

<p_model>Intel(R) Pentium(R) 4 CPU 2.80GHz</p_model>
<p_fpops>1383816616.710518</p_fpops>
<p_iops>2885938009.563386</p_iops>

Wir schreiben die Werte von p_fpops und p_iops heraus. Den Punkt und die Zahlen dahinter brauchen wir nicht, denn der Punkt stellt ein amerikanisches Komma dar.

Nun werden beide Werte durch 1000000 geteilt, denn MIPS bedeutet Million Instructions Per Second. In der client_state.xml stehen jedoch IPS Instructions Per Second.

double-precision MIPS = p_fpops / 1000000
VAX MIPS = p_iops / 1000000

1383816616 / 1000000 = 1384 double-precision MIPS
2885938009 / 1000000 = 2886 VAX MIPS

Die soeben errechneten MIPS-Werte können jetzt in die Formel zur Berechnung des Claimed Credit eingesetzt werden. In diesem Beispiel gehen wir von einer WU (Work-Unit) mit 3 Stunden (10800 Sekunden) Rechendauer aus.

(1384 + 2886) * 10800 Sekunden / 1728000 = 26,69

Eine WU mit 3 Stunden Rechenzeit würde also einen 'Claimed Credit' von 26,69 Cobblestone's anfordern.

Quelle

Bis auf die nicht anders gekennzeichneten Teile, entspringen die gemachten Angaben boinc.berkeley.edu

Single Sign On provided by vBSSO