Optimierte App: WICHTIGE Änderung, alle lesen!

nimm mal den neuesten geforce treiber 185.85, die cudart.dll und die cufft.dll aus folgendem Paket und wirf die libfft.dll komplett raus.

http://rapidshare.com/files/232061057/seti_optimized_120509.rar

Die Zeile mit den Flops solltest du ggf. auch anpassen. Den Wert hier bekommst du aus dem Boinc Message ganz oben:
12.05.2009 14:34:53 CUDA device: GeForce GTX 260 (driver version 18585, compute capability 1.3, 896MB, est. 102GFLOPS)
folgende Werte trägst du dann für folgende Apps ein:
Multibeam 608 flops = Est.Gflops x 0.2 (eg 102,000,000,000 x 0.2 = 24,000,000,000)
und trägst dann die Zeile entsprechend in die app_info ein
<flops>24000000000</flops>
 
Zuletzt bearbeitet:
Probiere ich gleich mal aus.

Momentan sieht es so aus:

<stderr_txt>
setiathome_CUDA: Found 1 CUDA device(s):
Device 1 : GeForce 8600 GT
totalGlobalMem = 268435456
sharedMemPerBlock = 16384
regsPerBlock = 8192
warpSize = 32
memPitch = 262144
maxThreadsPerBlock = 512
clockRate = 1188000
totalConstMem = 65536
major = 1
minor = 1
textureAlignment = 256
deviceOverlap = 0
multiProcessorCount = 4
setiathome_CUDA: CUDA Device 1 specified, checking...
Device 1: GeForce 8600 GT is okay
SETI@home using CUDA accelerated device GeForce 8600 GT
V10 modification by Raistmer
Priority of worker thread rised successfully
Priority of process adjusted successfully
Total GPU memory 268435456 free GPU memory 135716864
setiathome_enhanced 6.02 Visual Studio/Microsoft C++

Build features: Non-graphics VLAR autokill enabled FFTW x86
CPUID: Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz

Cache: L1=64K L2=2048K

CPU features: FPU TSC PAE CMPXCHG8B APIC SYSENTER MTRR CMOV/CCMP MMX FXSAVE/FXRSTOR SSE SSE2 HT SSE3
libboinc: 6.4.5

Work Unit Info:
...............
WU true angle range is : 0.524726
Cuda error 'cudaMalloc((void**) &dev_GaussFitResults' in file 'd:/BTR/SETI6/SETI_MB_CUDA/client/cuda/cudaAcceleration.cu' in line 317 : out of memory.
setiathome_CUDA: CUDA runtime ERROR in device memory allocation (Step 1 of 3). Falling back to HOST CPU processing...


Flopcounter: 13959540277499.879000

Spike count: 3
Pulse count: 0
Triplet count: 0
Gaussian count: 0

Wall-clock time elapsed since last restart: 16697.5 seconds
called boinc_finish

</stderr_txt>
WTF? 256MB auf der Graka sollten doch reichen, oder etwa nicht?

Die Karte ist ne 8600GT, Boinc schätzt 14Flops, deswegen habe ich (*0,2)
<flops>3000000000</flops>
eingetragen.
 
Zuletzt bearbeitet:
Mh also den gleichen Fehler hatte ich auch schonmal bei 1-2 WUs, vielleicht mal schauen was das zu anderen WUs sagt und ggf. mal im Seti@home Forum schauen ob die Karte für die oppt. App überhaupt geeignet ist.

Den 185.85 hast du drauf? Die CUDART.dll und CUFFT.dll laufen angeblich nur mit dem und nicht mit älteren (wegen CUDA 2.2).
 
Dann installiere ich die mal. Bisher läuft die 181.22
.
EDIT :
.

So, mit dem neuen Treiber läuft es. Teilweise wenigstens.

Nach einem Neustart des PCs berechnet Boinc genau eine CUDA-WU mit der Grafikkarte.
Währenddessen rechnet die CPU auf jedem Kern wunderbar Milkyway.
Nachdem die GPU-WU durch ist fängt er die nächste CUDA-WU an, rechnet sie aber offensichtlich auf der CPU.
Zwischendurch gibt es WUs die bei genau 2 Sekunden mit Berechnungsfehler abbrechen.

Gelungene WU:
http://setiathome.berkeley.edu/result.php?resultid=1226667059


Sowas macht der Rechner momentan.
http://setiathome.berkeley.edu/results.php?hostid=4015937

Neustart von Boinc ändert nichts, nur Neustart des Rechners lässt ihn wieder genau eine CUDA-WU auf der Graka rechnen.
 
Hat das jemand schonmal mit 2 verschiedenen Karten zum laufen gebracht? Mein Problem liegt aber darin,das bei mir Win 7 auf der 2. Karte kein GPGPU zuläßt. *noahnung*
 
Hat das jemand schonmal mit 2 verschiedenen Karten zum laufen gebracht? Mein Problem liegt aber darin,das bei mir Win 7 auf der 2. Karte kein GPGPU zuläßt. *noahnung*
FalconFly hats mit 2 295ern = 4 GPUS laufen, allerdings gings auch da nicht unter W7 sondern nur unter XP: http://www.planet3dnow.de/vbulletin/showthread.php?p=3937837#post3937837
.
EDIT :
.

Währenddessen rechnet die CPU auf jedem Kern wunderbar Milkyway.
Nachdem die GPU-WU durch ist fängt er die nächste CUDA-WU an, rechnet sie aber offensichtlich auf der CPU.

http://setiathome.berkeley.edu/result.php?resultid=1226667059

Neustart von Boinc ändert nichts, nur Neustart des Rechners lässt ihn wieder genau eine CUDA-WU auf der Graka rechnen.
WU true angle range is : 0.448085
Cuda error 'cudaMalloc((void**) &dev_GaussFitResults' in file 'd:/BTR/SETI6/SETI_MB_CUDA/client/cuda/cudaAcceleration.cu' in line 317 : out of memory.
setiathome_CUDA: CUDA runtime ERROR in device memory allocation (Step 1 of 3). Falling back to HOST CPU processing...
Die Karte hat zuwenig Speicher und die WU ging auf die CPU rüber. Soweit alles in Ordnung ;-) Aber warum die Karte zuwenig Speicher meldet: keine Ahnung!

Zwischendurch gibt es WUs die bei genau 2 Sekunden mit Berechnungsfehler abbrechen.
http://setiathome.berkeley.edu/results.php?hostid=4015937


VLAR WU (AR: 0.023076 )detected... autokill initialised
SETI@home error -6 Bad workunit header
im Detail von
http://setiathome.berkeley.edu/result.php?resultid=1226686033

das ist bei der VLAR CUDA normal - die WUs werden abgebrochen auf der Karte, weil die dabei einfach viel zu ineffizient wäre.

Hab ich auch ab und an und ist vollkommen ok!



.
EDIT :
.

vielleicht liegt da noch was anderes im Argen - ich habe Boinc 6.6.28 und eine GTX260 und damit rennts wie gesagt 1a - ohne die obigen Speicherfehler.
 
Zuletzt bearbeitet:
Naja,das Problem liegt ja nicht an Boinc sondern am Treiber oder Win 7 selber.Wie gesagt,die 2. Karte wird von Win 7 erkannt,aber es wird kein GPGPU "freigeschalten".
 
Naja W7 ist eben doch nur ein RC und dafür kann halt eben nicht alles laufen ;-)
 
@JKuehl:
Danke erstmal. Ich installiere also mal die neueste Boinc-Version, setze Seti zurück und schaue was dann geht.

Mir ist noch was aufgefallen:
13.05.2009 17:57:51 CUDA device: GeForce 8600 GT (driver version 18585, compute capability 1.1, 256MB, est. 14GFLOPS)
Oben schrieb jemand von Cuda 2.0. *noahnung*
 
Ja das kanns auch schon sein - 185.85 bringt CUDA 2.2 mit und damit läufts auf der GTX260 auch 1a... müßte man dann wohl mal im Seti@Home-Forum oder bei Lunatics schauen.
 
Die Software unterstützt Cuda 2.2,aber die Hardware nur 1.1 bzw. 1.3 bei den G200 Karten.
 
CUDA Version != Compute Capability level ;-)
 
Gefällt mir jetzt aber mal garnicht das unter Win 7 die zweite GPU nicht mitmachen kann.Bleibt die Frage wie sieht es damit bei Virtualisation aus? Ich muß dazu noch sagen das ich davon keine Ahnung hab. *buck*
 
Grafikkarten virtualisieren geht kaum bist gar nicht...

Was bringt es mir eigentlich, die Flops in der App anzupassen, und muss ich da beide Werte ändern? Tritt ja zweimal auf...
 
So, ich möchte meinen Stand wiedergeben:

Problem: Mit optimierter Cuda-App und Boinc 6.6.20 rechnete er immer nur eine CUDA-WU, danach wurden CUDA-WUs auf der CPU berechnet.

1. Boinc 6.6.28 installiert.
-> CUDA nicht zum Laufen zu bewegen. Die App steht im Taskmanager und futtert 50% Auslastung weg.

2. Boinc deinstalliert, alle Verzeichnisse und Dateien gelöscht.
3. Boinc 6.6.28 installiert, nur Seti angemeldet.
-> Zieht sich CUDA-WUs und versucht sie mit der Stock-App zu bearbeiten. Wie unter "1" werden diese aber ausnahmslos auf der CPU berechnet.
4. Boinc 6.6.20 drübergeklatscht
-> Oh Wunder, er berechnet die WUs auf der GPU. Nun warte ich ab ob er mehr als eine davon auf der GPU berechnet. Danach kann es mit optimierten Apps, app_info.xml's usw. weitergehen.

Fazit für mich.
Vista32, Forceware 185.85 mit Boinc 6.6.28 + 8600GT berechnet CUDA-WUs nur auf der CPU.
 
Hm, meine GTX295 und auch die GTX285 melden unter BOINC 6.6.20 CUDA Version 1.3 (alle Karten laufen mit 185.85WHQL) - das scheint normal zu sein.

Ich meine im SETI Forum gelesen zu haben, dass einige WorkUnits fuer CUDA 512MB Video RAM benoetigen. Allerdings sollte BOINC dann eine entsprechende Fehlermeldung herausbringen (das hat BOINC 6.6.20 Win64 unter Win7 bei mir auch brav gemeldet, als es nur die NForce780a IGP des Motherboards mit CUDA-Faehigkeit sah, welche zu dem Zeitpunkt aber nur auf 64MB eingestellt war)

@gruenmuckel
Sobald du die app_info.xml eingesetzt hast, kann SETI keine Clients oder .dll mehr herunterladen; die muessen von dir per Hand alle dort mit dem Client hineinkopiert werden.
Die Fehlermeldung liest sich so, als seien die Dateien entweder nicht vorhanden oder evtl. an der falschen Stelle hineinkopiert worden (muessen in das Data-Verzeichnis/projects/setiathome)

BOINC 6.6.20 ist die korrekte Version und sie laeuft auch bestaetigter Weise unter Win32/Win64 mit CUDA. Ausnahme sind Dual GPU-Karten unter Win7, allerdings liegt es dort am NVidia-Treiber (Bug, der sich auch bei 3D-Anwendungen auswirkt). Der 185.85WHQL ist allerdings Pflicht, weil er bis auf den kleinen Bug bei Dual GPU-Karten sauber laeuft.

Ebenfalls moeglich, dass deine Stock App mit ihrer ersten WorkUnit gleich eine VLAR (Very Low Angle Range) gezogen hat, damit hat die Stock App massive Probleme. Durch den sog. VLAR-Bug zieht die standard CUDA App das komplette System gnadenlos in die Knie und kann auch Abstuerze/Freezes verursachen; wenn die App Crashfrei durchlaeuft, dauert die Bearbeitung der WorkUnit exzessiv lange.
Dadurch ergibt sich erst die Notwendigkeit der dafuer optimierten V11_VLARkill App, welche solche WorkUnits erkennt und mit einem erzwungenen Computing Error rauswirft (an einer eleganteren Loesung - die Uebergabe solcher VLAR-WorkUnits an die CPU - wird gerade mit Hochdruck gearbeitet)

------- edit ---------

Hier mal meine Anleitung, nach der ich vorgegangen bin :
Begruendungen fuer die Schritte in blau

Voraussetzungen
- BOINC 6.6.20
- Treiber 185.85WHQL
- Multi-GPU im Treiber deaktiviert
...angeblich soll es auch mit aktiviertem Multi-GPU Rendering funktionieren, aber die Meldungen anderer User sind nicht eindeutig - better safe than sorry
- Falls eine CUDA-faehige IGP im System steckt :
--- diese entweder deaktivieren
--- oder im BIOS das VRAM auf einen deutlich nicht SETI-faehigen kleinen Wert stellen (64MB oder weniger).
--- Hybrid SLI oder vergleichbar sollte im BIOS deaktiviert sein
BOINC wird diese IGP zuerst und als erstes Device sehen; falls nur diese als CUDA-device angezeigt wird, kann das an Hybrid SLI liegen

- alte BOINC-Version deinstalliert
- alte BOINC-Verzeichnisse geloescht
...um alte Config-Dateien loszuwerden
- BOINC 6.6.20 neu installiert
Protected Mode execution sollte hier deaktiviert werden, da es Userberichten zufolge Probleme verursachen kann
- BOINC gestartet (noch nicht am Projekt anmelden)
- nach CPU-benchmark Run Mode auf "Suspend"
...der Client soll sich spaeter erstmal nicht komplett mit neuen WorkUnits fuer Standard Apps versorgen, damit bei einem Fehler in der app_info.xml oder sonstwo nicht gleich ein randvoller Cache-Bunker verworfen wird
- Attach Project : SETI
...sollte nach einer Weile grundlegende Dateien herunterladen, inklusive standard Apps. Die entsprechenden Meldungen unter "Messages" Tab im BOINC Manager verfolgen und im "Transfers" Tab auf Fertigstellung der Downloads warten. Falls es hier schon hakt, mal den Server Status pruefen
- BOINC beenden

- Optimierten Client inkl. der 3 .dll's, sowie der app_info.xml installieren (Datenverzeichnis/projects/setiathome/ sowie evtl. cudart.dll im Systemverzeichnis)
...aus der Anleitung von Raistmer geht nicht klar hervor, ob die mit BOINC 6.6.20 standardmaessig mitgelieferte cudart.dll im BOINC Systemverzeichnis durch die cudart.dll aus dem Raistmer-Paket ersetzt werden soll. Ich habe das getan und es funktioniert jedenfalls (habe in einem System allerdings immer noch manchmal einen Freeze, kann aber an der Hardware-Config und Beta BIOS liegen), die BOINC-cudart.dll ist ~447k, die welche mit dem Raistmer-Paket kommt ist jedoch eine andere. Da es sich um die NVidia CUDA runtime handelt, koennte dieses nicht dokumentierte Detail durchaus wichtig sein.
Ich wuerde empfehlen, es zuerst mal ohne die cudart.dll im BOINC Systemverzeichnis zu Uueberschreiben versuchen, bei Fehlern dann einmal mit Ueberschreiben der cudart.dll im BOINC Systemverzeichnis


- sofern man ein System mit eingeschraenkten Rechten betreibt, Ausfuehr-Rechte der .dlls und der optimierten app pruefen und ggf. setzen
- tief durchatmen

- BOINC starten
...und im "Messages" Tab auf jegliche Fehlermeldungen achten. Wenn mehr als eine GPU im System steckt, sollten entsprechend mehrere CUDA-Meldungen x Mal aneinander gereiht sein. Bei Meldungen "Project has no jobs available" nochmal Server Status (WorkUnits ready to send) checken, ansonsten hilft hier nur Geduld, da der Server immer nur 100 WorkUnits im Shared Memory zum Download anbietet; wenn man dort einige Minuten nicht zum Zuge kommt, ist das voellig normal

- Sofern keine Fehlermeldungen kamen, nun Run Mode auf "Based on Preferences" oder "Always" setzen
...und dabei die Tasks ansehen, bei Erscheinen von Computing errors kann die optimierte CUDA-App VLAR-WorkUnits rausgeworfen haben, muss aber nicht.

Bei verdaechtig vielen Fehlern (kein Task laeuft laenger als wenige Sekunden) SETI sofort auf "No new Work" stellen, danach einmal "Update Project" klicken. Sobald die Tasks gemeldet werden, BOINC beenden und auf der SETI Page beim entsprechenden Host mal in die Details schauen. Sind es alles SETI Enhanced WorkUnits mit einer sehr niedrigen Angle Range (0.0xxxx), hat V11_VLARkill lediglich seinen Job gemacht.

Falls dort Astropulse-WorkUnits oder Enhanced WorkUnits mit normaler/hoher Angle Range stehen (~0.2xxxxx oder hoeher), steckt der Wurm drin.
 
Zuletzt bearbeitet:
Danke für diese herrliche Anleitung, die gehe ich gleich nochmal Schritt für Schritt durch.

Eine Frage habe ich aber noch:
Du hast mir oben ein Paket mit der optimierten APP, den DLLs und der app_info.xml verlikt.
Dort ist aber auch ne AK_v8_win_x64.SSSE3x.exe drin und die app_info bezieht sich auch darauf.
64bit nutze ich nicht, muss ich sie trotzdem in den Ordner kopieren?
Sind die DLLs universal oder nicht doch vielleicht für die 64bit Version?
Ist die enthaltene App_info korrekt oder muss ich da was rausnehmen?

Das hier steht drin:
<app>
<name>setiathome_enhanced</name>
</app>
<file_info>
<name>AK_v8_win_x64_SSSE3x.exe</name>
<executable/>
</file_info>
<file_info>
<name>MB_6.08_mod_CUDA_V11_VLARKill_refined.exe</name>
<executable/>
</file_info>
<file_info>
<name>cudart.dll</name>
<executable/>
</file_info>
<file_info>
<name>cufft.dll</name>
<executable/>
</file_info>
<app_version>
<app_name>setiathome_enhanced</app_name>
<version_num>603</version_num>
<flops>3269311494</flops>
<file_ref>
<file_name>AK_v8_win_x64_SSSE3x.exe</file_name>
<main_program/>
</file_ref>
</app_version>
<app_version>
<app_name>setiathome_enhanced</app_name>
<version_num>608</version_num>
<avg_ncpus>0.227970</avg_ncpus>
<max_ncpus>0.227970</max_ncpus>
<flops>1000000000</flops>
<plan_class>cuda</plan_class>
<file_ref>
<file_name>MB_6.08_mod_CUDA_V11_VLARKill_refined.exe</file_name>
<main_program/>
</file_ref>
<file_ref>
<file_name>cudart.dll</file_name>
</file_ref>
<file_ref>
<file_name>cufft.dll</file_name>
</file_ref>
<coproc>
<type>CUDA</type>
<count>1</count>
</coproc>
</app_version>
</app_info>

Und was muss ich da bei Flops für CPU und Graka eintragen? Boincmanager meldet 14 Gigaflops für die Graka, wieviele die CPU hat weiß ich nicht wirklich.
 
Das Paket hatte ich oben verlinkt und das galt nur als Beispiel für meine Konfiguration.

Da musst du dir für deinen Prozessor und dein OS (32/64 Bit) die passende Multibeam EXE von Luntics besorgen und die auch entsprechend in deiner app_info.xml anpassen.

Ich lasse Seti gerade leerlaufen habe nur noch 1GB Freitraffic für den Rest vom Monat und das frisst mir einfach zuviel. Außerdem hat es Spinhenge immer auf den letzten Platz verdrängt..
 
Zuletzt bearbeitet:
Das Paket hatte ich oben verlinkt und das galt nur als Beispiel für meine Konfiguration.

Da musst du dir für deinen Prozessor und dein OS (32/64 Bit) die passende Multibeam EXE von Luntics besorgen und die auch entsprechend in deiner app_info.xml anpassen.

Ich lasse Seti gerade leerlaufen habe nur noch 1GB Freitraffic für den Rest vom Monat und das frisst mir einfach zuviel. Außerdem hat es Spinhenge immer auf den letzten Platz verdrängt..
Ok, danke soweit. Ich möchte Seti gerne nur auf der GPU rechnen und andere Projekte eventuell auf der CPU. Das aber erst wenn CUDA zuverlässig läuft.

Ist denn die von FalconFly geschriebene app_info.xml korrekt?

<app_info>
<app>
<name>setiathome_enhanced</name>
</app>
<file_info>
<name>MB_6.08_mod_CUDA_V11_VLARKill_refined.exe</name>
<executable/>
</file_info>
<file_info>
<name>cudart.dll</name>
<executable/>
</file_info>
<file_info>
<name>cufft.dll</name>
<executable/>
</file_info>
<file_info>
<name>libfftw3f-3-1-1a_upx.dll</name>
<executable/>
</file_info>

<app_version>
<app_name>setiathome_enhanced</app_name>
<version_num>608</version_num>
<flops>21400000000</flops>
<plan_class>cuda</plan_class>
<avg_ncpus>0.150000</avg_ncpus>
<max_ncpus>0.150000</max_ncpus>
<coproc>
<type>CUDA</type>
<count>1</count>
</coproc>
<file_ref>
<file_name>MB_6.08_mod_CUDA_V11_VLARKill_refined.exe</file_name>
<main_program/>
</file_ref>
<file_ref>
<file_name>cudart.dll</file_name>
</file_ref>
<file_ref>
<file_name>cufft.dll</file_name>
</file_ref>
<file_ref>
<file_name>libfftw3f-3-1-1a_upx.dll</file_name>
</file_ref>
</app_version>

</app_info>
Welchen Wert muss ich bei "Flops" eintragen? 2 800 000 000 wenn Boinc 14 GFlops meldet?
 
14GLFops x 0.2 = 2,8

=> 2800000000 ist korrekt

Da ich auch immer die CPU mitrechnen lasse, habe ich lediglich die CPU Apps entfernt.
Nach allem was ich weiss, sollte diese app_info.xml fuer SETI GPU-only korrekt sein und keine Arbeit auf die CPU gehen.
 
Zuletzt bearbeitet:
So, ich habe jetzt alles genauso gemacht wie du es aufgeschrieben hast, bis zum Tief durchatment und Boinc starten.
Ergebnis: Die Vlarkill.exe rechnet die WU wiedermal auf der CPU.

Mir ist allerdings aufgefallen das beine cudart.dll aus dem Paket statt 477kb nur 288kb hat und das in dem Paket nur 2 dlls sind anstatt 3 wie oben beschrieben.
Die cudart.dll habe ich danach im Systemverzeichnis ersetzt, trotzdem wieder nur Berechnung auf der CPU.

 
Sehr komisch, hab zwei Rechner am Laufen, einmal den Q9550 mit der GTX 260, und einmal einen Q6600 mit einer 8800 GT 256 MB. Beide Rechner gleiches OS, gleiche Boincversion, gleiche App-Info usw., blöder Weise rechnet die GT nicht mit, die GTX aber schon. Keine Ahnung warum, versteh das irgendwie nicht, mit der alten GPU-App hat die GT mitgerechnet.
 
Scheinbar wollen sie mehr als 256mb Spiecher haben,aber wenn es mit der "alten" App funzte würde ich nicht lange fackeln und diese wieder draufschmieren.
 
Wenn die App auf der CPU läuft, braucht sie aber komischer Weise nicht einmal 100 MB vom Arbeitsspeicher.
 
Die brauch auch wenn die GPU sie berechnet nur um die 100mb Arbeitsspeicher,aber was brauch sie an Grakaspeicher? Gab es da nicht ein Programm wo man den Verbrauch sehen konnte?
 
Zurück
Oben Unten