Boinc Scheduler bei GPU Anwendungen

orpheus2k

Grand Admiral Special
Mitglied seit
15.09.2003
Beiträge
2.429
Renomée
126
Standort
Altkreis Lübbecke
  • Docking@Home
  • BOINC Pentathlon 2011
  • BOINC Pentathlon 2012
  • BOINC Pentathlon 2013
  • BOINC Pentathlon 2019
  • BOINC Pentathlon 2020
Die meisten GPU Apps basieren auf OpenCL und benötigen neben der GPU meistens auch einen CPU Thread:
Collatz Conjecture
2.09 collatz (ati13ati)
0.01C + 1 ATI GPU

DistrRTgen
3.52 Distributed Rainbow Table Generator (distrrtgen) (opencl_ati_101)
0.978C + 1 ATI GPU

Einstein@Home
1.32 Binary Radio Pulsar Search (Arecibo) (opencl-ati)
0.5C + 1 ATI GPU

Milkyway@Home
1.02 MilkyWay@Home (opencl_amd_ati)
0.05C + 1 ATI GPU

Poem@Home
1.03 POEM++ OpenCL version (opencl_ati_100)
1C + 1 ATI GPU

per app_info.xml:
Poem@Home
1.03 POEM++ OpenCL (opencl_ati_100)
0.33C + 0.16ATI


PrimeGrid
1.38 PPS (Sieve) (ati13ati)
0.901C + 1 ATI GPU

World Community Grid
7.05 Help Conquer Cancer (ati_hcc1)
1C + 1 ATI GPU
Leider belegt der Boinc Scheduler bei einem vier Kern System für CPU Anwendungen alle vier Kerne, falls die GPU App nicht den ganzen Kern belegt (z.B. DistrRTgen, Einstein@Home, PrimeGrid). Auch bei POEM kann das Problem entstehen, wenn man in der app_info bei <avg_ncpus> und <max_ncpus> einen Wert von 0.33 oder 0.16 verwendet.
Wie kann man dieser Problem lösen?
Man könnte in den lokalen Einstellungen den Wert bei 'On multiprocessor systems, use at most X % of the processors' ändern. Nur wie kann man dies speziell für die oben genannten GPU Apps machen?
.
EDIT :
.

Kann ein Admin den Post bitte in DC-Allgemein verschieben, hab mich da im Unterforum vertan!
 
Zuletzt bearbeitet:
Zumindest bei Einstein funktioniert das völlig problemlos. Es laufen 4 CPU WUs und zusätzlich eine Einstein WU. Diese hat dabei immer Priorität, während eine der CPUs WUs etwas langsamer unterwegs ist.
Muss aber nicht allgemein gelten, beim GPUgrid wurde mein Rechner nahezu unbenutzbar*noahnung*

Man muss bloß aufpassen, falls man "nutze xx% der Prozessor Zeit" einstellt, da kam es bei mir vor, dass die Auslatung zwischen 20% und 100% springt, was sicher net effizient ist.
 
Die CPU-Anteile können sich zudem verändern, man wird also stets kontrollieren müssen, ob noch alles passt.

Betrifft grundsätzlich auch CUDA. Mit GPUgrid läuft es bei mir über Multiprozessorsysteme @88% ganz gut, nahezu 100% Auslastung, trotzdem keine auffälligen Performance-Verluste. Monitor wird über iGPU angesteuert, deshalb keine lags durch die GPU-Nutzung.

 
88% entsprecht 7/8 der CPU Threads, sprich einer bleibt frei für GPU Grid.
Hier funktioniert das noch, wenn aber bei POEM 4 WUs zu je 0,25 CPU laufen, dann macht der Scheduler automatisch einen Kern frei und durch die Änderung auf 88% bleibt ein CPU Thread ohne Last.
Momentan muss man den Wert bei 'On multiprocessor systems, use at most X % of the processors' je nach GPU App anpassen und das stört mich
 
Wenn ich das jetzt richtig verstehe wäre es also gut, z.B. 5 poemWUs rechnen zu lassen ( = 0,2 ) und z.B. 0,6 CPUs freizugeben.. denn 1 / 0,2 = 5; 5 * 0,6 = 3 CPU.. alles glatte Zahlen.. ?
 
Wenn ich das jetzt richtig verstehe wäre es also gut, z.B. 5 poemWUs rechnen zu lassen ( = 0,2 ) und z.B. 0,6 CPUs freizugeben.. denn 1 / 0,2 = 5; 5 * 0,6 = 3 CPU.. alles glatte Zahlen.. ?
Genau so habe ich es beobachtet.

Ich weiß nur noch nicht wie sich in diesem Fall die Laufzeit der "2ten" WU verhält, die vom ersten Kern die restlichen 0.4 (= 1 minus 0.6) und vom zweiten Kern 0.2 beansprucht. Diese muss letztendlich zwischen den Instruktionseinheiten von 2 Kernen springen.
Deshalb teile ich die CPU Kerne einzeln auf, also 2 oder 4 WUs pro CPU Kern (2x 0.5 CPU = 1.0 CPU bzw 4x 0.25 CPU = 1.0 CPU)
 
Zurück
Oben Unten