19. März 2024, 07:22:53 Uhr

CUDA/STREAM FAQ

Begonnen von lutzlustig, 05. November 2009, 11:09:37 Uhr

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

lutzlustig

05. November 2009, 11:09:37 Uhr Letzte Bearbeitung: 06. November 2009, 14:33:13 Uhr von lutzlustig
F: Was ist CUDA, Stream und OpenCL?
A: Programmierplattform u.a. für GPU (Grafikprozessor), wobei CUDA von NVIDIA, Stream von AMD(ATI) kommt und OpenCL plattformübergeifend ist.

F: Brauche ich spezielle Software für den Betrieb des Clienten mit einer Grafikkarte?
A: Ja, den Grafikkartentreiber vom jeweiligen Hersteller der Grafikkarte und den pasenden Dnetc-Clienten, momentan nur als Beta hier erhältlich: http://www.distributed.net/download/prerelease.php

F: Auf welchen BS laufen die GPU-Clienten?
A: Meistens zuerst auf Linux, fast immer auf Windows und ab und an bei Max OSX, ist ja alles noch Beta

F: Ist der Betrieb von mehreren Clienten möglich?
A: Ja! :) Dazu ist es erforderlich, einen CPU-Kern möglichst exklusiv an den GPU-Clienten zu binden, nur so entfaltet er seine volle Leistung.

F: Wie genau geht das?
A: Siehe folgende Beispiele:

1. Beispiel Steuerung mit launch.exe

Den Cuda-Clienten an einen Kern binden und den CPU-Clienten an die restlichen 1-3 Kerne.
ftp://ftp.heise.de/pub/ct/ctsi/launch16.zip
Mit launch.exe kann man ein Programm starten und es an bestimmte CPU-Kerne binden.

Z.B. so:
d:\programme\rc5-cpu
d:\programme\rc5-cuda
d:\programme\rc5-stream
d:\programme\rc5-lotto
da immer die launch.exe rein kopieren und jeweils eine Batchdatei erstellen mit folgendem Inhalt:



cd D:\programme\rc5-cpu
Launch.exe dnetc.exe /p="-multiok=1" /a=7



cd D:\programme\rc5-cuda
Launch.exe dnetc.exe /p="-multiok=1" /a=8



D.H. der Cuda-Client bekommt CPU-Kern 4 und der CPU-Client CPU-Kern 1-3, siehe folgende Tabelle
"-multiok=1"ist der Parameter für dnetc, der besagt das mehrere Clienten gleicheitig laufen können.


launch.exe dnetc-cuda.exe /a=8
startet den client nur auf Proz 4, wobei gilt:
1: Prozessor 1       0001
2: Prozessor 2       0010
3: Prozessor 1+2     0011
4: Prozessor 3       0100
5: Prozessor 1+3     0101
6: Prozessor 2+3     0110
7: Prozessor 1+2+3   0111
8: Prozessor 4       1000
9: Prozessor 1+4     1001
10:Prozessor 2+4     1010
11:Prozessor 1+2+4   1011
12:Prozessor 3+4     1100
13:Prozessor 1+3+4   1101
14:Prozessor 2+3+4   1110
15:Prozessor 1+2+3+4 1111

Achtung: Bei Umbenennen der dnetc.exe muß die .ini auch umbenannt werden! Also z.B. dnetc-cuda.ini :)
Die beiden Batchdateien in den Autostartordner und fertig.

Man kann auch launch.exe in den Systemordner kopieren, dann muß man aber die Pfade zu den Clienten angeben, bleibt also gehuppt wie gesprungen. ;-)

Beispiel 2:

Z.B. ein 'process -a explorer.exe 10' im HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run Key, das das beim Hochfahren erledigt; der Explorer vererbt die Affinität dann an alles, was von da gestartet wird.
Also bei Dualcore eine 10, bei Triplecore eine 110, bei Quadcore eine 1110, wobei dann alles Programme/Prozesse, die dann gestartet werden, CPU ab Nr. 2 benutzen und die 1. bleibt für den GPU-Clienten.

"process.exe" bekommt man hier:

http://www.beyondlogic.org/consulting/processutil/processutil.htm


Hier noch eine kleine Erläuterung für die Aufteilung der Kerne bei process.exe:

01>>>1. Kern
11>>>1.+2. Kern
111>>1.+2.+3. Kern
1111>1.+2.+3.+4. Kern

10>>>2. Kern
110>>2.+3. Kern
1110>2.+3.+4. Kern

100>>3. Kern
1100>3.+4. Kern

1000>4. Kern

Oder alternativ für Mausschubser: CPU-Control
http://ge.koma-code.de/index.php?option=com_content&task=view&id=79&Itemid=94

Beispiel 3 für Linux:
Der Befehl "taskset" unter Linux macht die Zuordnung von Processen zu beliebigen CPUs möglich.



Wer noch Vorschläge hat für die FAQ, immer her damit! :)


Legende: ;-)
F: = Frage
A: = Antwort


http://strammermax.meinbrutalo.de
http://www.lordofultima.com/ref/2278509259

LiLaLux

Ja, einmal das neueste Launch nehmen
ftp://ftp.heise.de/pub/ct/ctsi/launch16.zip
die readme ist diesmal richtig gut und launch bietet noch mehr Möglichkeiten, die hier zu erläutern den Rahmen sprengen würde.

Das zweite wäre, die Installation der launch.exe.
Etwas unsauber diese mehrmals in jedes Verzeichnis reinzukopieren. ;)

Besser gefällt mir (auch unsauber) launch ins Systemverzeichnis (%SystemRoot%\System32) zu packen,
oder gleich ins eigene Verzeichnis und unter Systemeigenschaften -> Umgebungsvariablen -> Systemvariablen den Pfad zum launch.exe-Verzeichnis zusätzlich einzutragen (Vorsicht, restliche Pfade nicht ändern).

Ansonsten sehr schön, daß du das einmal zusammengetragen hast.
Bitte das ganze auch ins IQ-Hardware-Forum und von Framige festpinnen lassen.
__

Man muß die Tatsachen kennen, bevor man sie verdrehen kann.
Mark Twain

lutzlustig

Im Programmverzeichnis ist es dann zwar mehrfach, aber man hat keine Probleme mit Pfaden oder bei BS-neuinstallation oder Multi-Boot-Systemen. Der Trend geht stark zu portablen Programmen, so ganz ohne installieren Programme einfach benutzen, das hat schon was. :)
Man kann da auch auf die Spitze treiben und alles in ein Verzeichnis rein, die jeweiligen .exe passend benennen und die .ini auch. :)


http://strammermax.meinbrutalo.de
http://www.lordofultima.com/ref/2278509259

LiLaLux

05. November 2009, 14:55:11 Uhr #3 Letzte Bearbeitung: 05. November 2009, 14:57:17 Uhr von LiLaLux
ROFL
Darf ich dann ins Verzeichnis auch noch mit meinem Quirl rein? ;D

BTW das mit der exe des clients umbenennen hat auch noch den anderen Vorteil, daß man die clients auch im taskmanager unterscheiden kann.

Danke für die schöne Übersicht auch in IQ-Hardware, da sollten keine großen Fragen mehr kommen.
Außer vielleicht über die dnetc.ini (preferred-blocksize, max-threads). Pardon, fiel mir eben erst ein.

Kannst ja bis zur Final CUDA/Stream FAQ bis zum WochenEnde erst mal sammeln.
Denke daß tyco, geschissenberger und andere auch noch den ein oder anderen guten Tip auf Lager haben.
__

Man muß die Tatsachen kennen, bevor man sie verdrehen kann.
Mark Twain

lutzlustig

Zitat von: LiLaLux am 05. November 2009, 14:55:11 Uhr
ROFL
Darf ich dann ins Verzeichnis auch noch mit meinem Quirl rein? ;D
Nix da, lass den Quirl da, wo er ist!  ;D


http://strammermax.meinbrutalo.de
http://www.lordofultima.com/ref/2278509259

tyco

05. November 2009, 17:35:13 Uhr #5 Letzte Bearbeitung: 05. November 2009, 17:43:01 Uhr von tyco
Super Anleitung!

Allerdings startet die launch.exe nicht mit deiner obigen Batch-Datei:

Zitierencd D:\programme\rc5-cpu
Launch16.exe dnetc.exe /p="-multiok=1" /a=7

Grund: Eine Launch16.exe gibt es nicht, sondern nur eine Launch.exe. Also entweder Launch.exe in Launch16.exe umbenennen oder einfacher...gleich den richtigen Namen in die bat-Datei schreiben. Die bat-Datei sieht dann so aus:

cd D:\programme\rc5-cpu
Launch.exe dnetc.exe /p="-multiok=1" /a=7
Bitte keine Supportanfragen per PM stellen.

lutzlustig

so ne Sauerei, bei launch12 hieß das noch launch12.exe :)


http://strammermax.meinbrutalo.de
http://www.lordofultima.com/ref/2278509259

Schnellantwort

Achtung: Dieser Beitrag wird erst angezeigt, wenn er von einem Moderator genehmigt wurde.

Name:
E-Mail:
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Wo findet das Oktoberfest statt?:
Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau