Entwickler-Ecke

Algorithmen, Optimierung und Assembler - GPU statt CPU für berechnungen verwenden, WIE?


oOXTCOo - Di 24.11.09 17:05
Titel: GPU statt CPU für berechnungen verwenden, WIE?
Hallo!

Hat jemand Erfahrung wie man die GPU für berechnungen verwenden kann statt normal über die CPU?
Von NVIDIA scheint es da sowas wie CUDA für Visual Basic zu geben.

Ich würde gerne aufwändige berechnungen über die GPU laufen lassen, nur habe ich keinen Plan wie sowas funktionieren soll?

Wie sage ich der CPU das die Berechnung die GPU übernehmen soll?

Hat das schon jemand gemacht? Gibt es irgendwelche SDK´s oder Sources dazu?


Danke schonmal!

Grüße


BenBE - Di 24.11.09 19:10

Bei CUDA handelt es sich um ein SDK, mit dem die Berechnungen implementiert werden und das eine Schnittstelle zum Bedienen der nötigen Funktionen auf der Grafikkarte bereitstellt. Gibt von ATI sowas ähnliches, Name weiß ich grad nicht.

Zumindest läuft die Entwicklung solcher Anwendungen so ab, dass du deine eigentliche Berechnung für die Grafikkarte implementierst und compilierst und über das Framework (z.B. CUDA) nur noch die nötigen Befehle lieferst, um diesen Code in die Grafikkarte zu laden und auszuführen.

Je nach dem, wie man seine Berechnungen lagert, kann aber auch die etwas portablere Variante unter Zuhilfenahme von Shadern funktionieren. Dazu gab's IIRC mal im DGL-Forum einige Beiträge.


Marc. - Di 24.11.09 19:28

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Gibt von ATI sowas ähnliches, Name weiß ich grad nicht.

Es müsste sich dabei um die ATI Stream Technology [http://developer.amd.com/gpu/ATIStreamSDK/Pages/default.aspx] handeln. ;)


Jakob_Ullmann - Di 24.11.09 20:03

Klingt interessant. Aber man kann doch als Programmierer nicht einfach sein Programm auf Nvidia / ATI spezialisieren und den anderen ausschließen! Oder geht das irgendwie, dass man Möglichkeiten für beide Hersteller implementiert?


uall@ogc - Di 24.11.09 20:06

nennt sich OpenCL


oOXTCOo - Di 24.11.09 20:31

das programm soll möglichst schnell sha1 hash berechnungen durchführen können.

das hört sich auch gut an: Support for multiple GPUs in a single program.

meherer karte in einem server.


danielf - Mi 25.11.09 09:33

hehe.. was willst du den hacken? ;)

Aber interessantes Thema, bitte schreib deine Erfahrungen in den Thread.

Gruß Daniel


jaenicke - Mi 25.11.09 09:46

Ansonsten gibt es noch DirectX 11 mit den computing shaders, die das ebenfalls zur Verfügung stellen. Das habe ich auch schon ausprobiert (allerdings nicht mit Delphi), das funktioniert ganz gut.

Nachteil ist natürlich, dass man auch das entsprechende System mit DirectX 11 braucht.


oOXTCOo - Fr 27.11.09 03:13

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ansonsten gibt es noch DirectX 11 mit den computing shaders, die das ebenfalls zur Verfügung stellen. Das habe ich auch schon ausprobiert (allerdings nicht mit Delphi), das funktioniert ganz gut.

Nachteil ist natürlich, dass man auch das entsprechende System mit DirectX 11 braucht.


was das system braucht ist egal, da es sowieso nur am server laufen soll.

ich möchte die entsperrcodes für bestimmte handys per sha-1 bruteforce errechnen.
für mein programm: [url]http://www.entsperren.net/JAU[/url] kann bb5+ sl2 entsperren (braucht aber ein jaf oder ufs box als interface wegen flashbus und kann huawei modems und datenkarten direkt entsperren oder den code errechnen (ist das hier erlaubt? wenn nicht bitte löschen!)

hast du irgendwelche links, wo ich mir das mit directx 11 mal ansehen kann?

hat diese methode geschwindigkeitsnachteile?

wäre damit meherer grafikkarten bzw. gpu´s ansprechbar?


BenBE - Fr 27.11.09 09:46

Wenn's ruhig was kosten darf, würde ich eher zu nem FPGA greifen, weil du dann das Berechnen der Hashes extrem gut parallelisieren kannst und damit auf 1 Hash je Zyklus, bei ggf. ner Latenz von ~2000 Zyklen kommst (bei ~100 MHz). Sollte also genug Durchsatz für deine Zwecke bringen. Da kommen auch moderne Grafikkarten nicht hin ;-)


elundril - Fr 27.11.09 11:02

hat das FPGA auch nen deutschen namen/ne deutsche abkürzung? Wenn ichs google find ich nur was auf englisch und bei sowas is es besser wenn ich alles versteh was ich les.^^

kommando zurück, böses google wollt mir die deutsche wikipediaseite nur ned als ergebnis präsentieren. :D

lg elundril


BenBE - Fr 27.11.09 23:18

user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
kommando zurück, böses google wollt mir die deutsche wikipediaseite nur ned als ergebnis präsentieren. :D

Die ist ja auch irrelevant :mrgreen:


oOXTCOo - Sa 28.11.09 00:00

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
kommando zurück, böses google wollt mir die deutsche wikipediaseite nur ned als ergebnis präsentieren. :D

Die ist ja auch irrelevant :mrgreen:


davon hatte mir schon ein kolege erzählt.

und ich habe das hier gefunden:
Interested in a FPGA hardware and VHDL sources for this hardware who can process over 50000 Milions per second SHA-1 digests?

gibts da schon was fertig programmiertes?
preis?


minnime - Sa 28.11.09 00:24

Da schaust du zum Beispiel bei Reichelt, Schuricht oder bei einem anderen guten Elektronikhändler (also nicht bei Conrad). Der reine Baustein ist nicht das Problem der kostet nur ca. 20€ aber da muss noch eine entsprechende Peripherie dran. Das musst du dir wie einen normalen Prozessor vorstellen, der braucht auch ein Board mit Chipsatz, Stromverorgung und I/O. Dazu brauchst du noch ein Programmiergerät um das Ding mit der "Schaltung" zu füttern. Das wichtigste ist allerdings eine gehöhrige Portion Ahnung. Dann könntest du dir das Board selbst entwerfen und bauen, was dann auch relativ einfach und billig ist. Zusätzlich musst du noch eine Hardwareneschreibungssprache (z.B. VHDL) können um die Schaltung im FPGA zu erstellen. Das ist dann im Prinzip wie Assemblerprogrammierung (ja ich weiß eigentlich ist das was ganz anderes)nur dass eben keine Software sondern Hardware dabei entsteht.


oOXTCOo - Sa 28.11.09 00:27

user profile iconminnime hat folgendes geschrieben Zum zitierten Posting springen:
Da schaust du zum Beispiel hier:http://such001.reichelt.de/?SID=27j6dwUawQARsAAAhiVDIbc45e76a022b58148fba5b77c526b1d7;ACTION=444 oder bei einem anderen guten Elektronikhändler (also nicht bei Conrad). Der reine Baustein ist nicht das Problem der kostet nur ca. 20€ aber da muss noch eine entsprechende Peripherie dran. Das musst du dir wie einen normalen Prozessor vorstellen, der braucht auch ein Board mit Chipsatz, Stromverorgung und I/O. DAzu brauchst du noch ein Programmiergerät um das Ding mit der "Schaltung" zu füttern. Das wichtigste ist allerdings eine gehöhrige Portion Ahnung. Dann könntest du dir das Board selbst entwerfen und bauen, was dann auch relativ einfach und billig ist. Zusätzlich musst du noch eine Hardwareneschreibungssprache (z.B. VHDL) können um die Schaltung im FPGA zu erstellen. Das ist dann im Prinzip wie Assemblerprogrammierung (ja ich weiß eigentlich ist das was ganz anderes)nur dass eben keine Software sondern Hardware dabei entsteht.


tja nicht so einfach...

ich schau mal ob ich sowas fertig bekommen kann...

ich brüuchte einen universalprommer... ab 500€
mit dem passenden bga aufsätzen.

die platine entwerfen usw... da würde ich ja ewig brauchen, zumal ich mir da jemanden suchen müsste der sich damit auskennt...


BenBE - Sa 28.11.09 00:28

Scheinbar ja, und einige Anleitungen dazu:
http://www.gidf.de/VHDL%20FPGA%20SHA1


oOXTCOo - Sa 28.11.09 00:32

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Scheinbar ja, und einige Anleitungen dazu:
http://www.gidf.de/VHDL%20FPGA%20SHA1


danke, begriffen ;)


ich glaube ich habe was passendes gefunden...