[CUDA] RC6 / Serpent / Twofish / AES / MARS

Ich habe gerade mal testweise RC6 am Benchmarksystem (2x GTX 560 Ti SLI) laufen lassen:

Capture.JPG

^^ Nachdem das Ergebnis sehr ähnlich zu dem von Sebi's GTX 560 Ti ist, gehe ich davon aus, dass die Codes auch am Benchmarksystem wohl nicht mit SLI laufen. Ist jetzt aber auch keine Tragik. Interessant wär's halt gewesen. Meint ihr, ich könnte (rein gedanklich) die Performance für SLI x2 rechnen? Oder wäre das auch hier eher so wie in Spielen, dass sich die durch die zweite Grake eher um 20 - 80 % erhöhen würde, aber sicher nicht verdoppeln?

Weitere Ergebnisse von den anderen Codes werde ich noch hier posten ...
 
SLI funktioniert generell nicht mit CUDA, du musst mehrere GPUs explizit über deinen Code ansprechen. Einfach so "verdoppeln" geht übrigens in der Regel auch nicht, das hängt davon ab, wie gut dein Problem skaliert (z.B. strong vs. weak scaling)
 
Ich würde schon sagen, dass sich die Leistung einfach verdoppeln wird. Da du eh nur die Leistung des Algos selbst misst und nicht das Kopieren zur Grafikkarte und zurück. Außerdem können beide Grafikkarten unabhängig voneinander rechnen und müssen nich untereinander Daten austauschen. Die Performance wird also meiner Meinung nach ziemlich exakt das doppelte betragen.
 
^^ Im Moment kämpfen wir (mein Projektteam und ich) sehr damit, die Codes unter Windows (Visual Studio) zum Laufen zu kriegen. In RC6, Serpent, AES-256 und AES-192 ist mir das durch das Hinzufügen einiger Bibliotheken (u. a. cuda_runtime_api.h, device_launch_parameters.h, etc.) gelungen, aber Twofish/MARS (beide mit dem selben std_defs.h Header File) melden irgendwas von wegen lrotr Host-Funktion kann nicht von Device aus aufgerufen werden. Schön und gut, der Fehler ist ein alter bekannter, aber diese Funktion gibt's weder im Twofish- noch im MARS-Code. Und im std_defs.h File kriege ich nen Systax Error, wenn ich da __device__ vor die genannte Funktion schreibe, weil die schon einen Bezeichner hat ...

Aber das kurioseste ist AES-128! 1:1 der selbe Code, wie seine "großen Brüder" (habe zur Sicherheit sogar extra copy-gepastet), nur eben mit dem klitzekleinen Unterschied, dass key = 128 da steht. Und trotzdem geht der als einziger von den dreien unter Windows nicht. :huh:

Zur Not müssen wir dann bei der Präsentation am PC (Show-PC wird dann über eine GTX 460 verfügen) eine Linux-Live-CD verwenden ...
Außer, hier kann mir bitte noch jemand helfen, die Codes auch unter Windows zum Laufen zu kriegen.
 
Zuletzt bearbeitet:
Was heißt der AES-128 Code geht unter Windows nicht? Compiliert nicht? Fehlermeldung von CUDA wenn man es startet? Das mit Live-CD könnte auch ein Spaß werden, da zumindest ich nicht wüsste wie man der CD beibringt direkt mit dem richtigen CUDA Treiber von NVidia zu starten.
 
Leider ist das Benchmark-System (via VPN/VNC) mal wieder nicht erreichbar, weil "Java unavailable" (habe jetzt ne halbe Stunde herumprobiert, und Java ist in v7 Update 51 definitiv am aktuellen Stand). Mir reicht's langsam damit! Ich weiß die genaue Fehlermeldung nicht mehr auswendig, nur, dass es mich extrem irritiert hatte, dass bei IDENTEM Code nur die 128er Version nicht ging ...

Das WE von 17. - 19. kann/muss ich mich nochmal richtig ins Benchmarking reinhängen, um dann auch alles für die Präsentation auf der Messe am 24. vorzubereiten. Wenn ich in den nächsten Tagen nochmal das Benchmarksystem benutzen kann, poste ich, was genau bei AES-128 als Error kommt. Compiliert hat's sogar, wenn ich mich richtig erinnere.

Das mit der Live-CD habe ich gestern probehalber mit einem 8 GB USB Stick ausprobiert, allerdings war das anscheinend schon zu wenig Platz für Ubuntu + CUDA?! Jedenfalls hat sich CUDA nicht installieren lassen und bei allen von mir durchprobierten Ordnern/Verzeichnissen hieß es entweder, 'nicht groß genug' oder 'keine Schreibrechte'. Das wird wirklich noch ein "Spaß".
 
Mit USB Stick könnte das ganze schon eher was werden. Aber das ist ja dann keine Live-CD mehr sondern einfach eine Installation auf den USB-Stick. Oder was hast du da probiert? Wenn du nur den USB-Stick ansteckst und die Live-CD startest dann läuft alles vom RAM aus und wird wohl tatsächlich nicht genug Platz haben um CUDA zu installieren.

Edit: Warum brauchst du überhaupt Java auf dem Benchmark System? Eigentlich doch nur für Eclipse aber das compilieren kann man zur Not auch über die Shell (ins Verzeichnis mit den *.cu Dateien wechseln und 'nvcc *alle .cu Dateien mit Leerzeichen getrennt hier*' eintippen) oder auf einem anderen PC machen.
 
Zuletzt bearbeitet:
Eigentlich hatte ich eine richtige Installation am USB-Stick vorgehabt, und bin auch davon ausgegangen, dass der Linux Live USB Creator das auch machen würde ... aber als ich dann am Laptop von dem Stick Ubuntu gestartet habe, wurde ich gleich gefragt, ob ich es (am Laptop) installieren oder einfach nur als Live Version ausprobieren wolle.
Das muss ich mir nochmal anschauen, wie ich das wirklich fix am USB-Stick installieren kann ...

Jave bräuchte ich nicht am Benchmarksystem, sondern hier auf meinem lokalen für den browserbasierten Aufbau der VPN-Verbindung:

Capture.JPG

^^ Hier scheitert's (seit ca. 3 Tagen). Dabei habe ich extra erst gestern Java auf's aktuelle Update 51 geupdatet. :huh:
Aber eine laufende Verbindung zum Benchmarksystem herzustellen war eh immer schon mehr Glück als sonst was ... *seufz*
 
Zurück