Moien
da, also ich beschäftige mich mit cuda,
diesem SDK für GPU-Programmierung
von Nvidia ab Modell 8800 GTS.
Ach deshalb das Verfahren. Ich dachte irgendein Uniprof hätte eine der alten SIMD-Architekturen ausgegraben und würde damit Studis quälen.
Die 8800 ist aber auch ne tolle Graphikkarte,
für Spiele etc, man soll ja das angenehme mit dem nützlichen
verbinden. Ohne CUDA hätt ich die 350 € aber nicht dafür
auf den Ladentisch gelegt.
GPU-Programmierung ist nicht mein Gebiet. Von CUDA hab ich gehört, sieht lustig aus. Allerdings scheint ATI den Forschern besser zu gefallen. Folding@Home läuft nur auf ATI X19XX Karten. Angeblich weil die ATI längere Laufzeiten und mehr Code für ihre Shaderprogramme erlauben. OK, der normale Mensch wird mit „normalen“ Aufgaben die Rechnerpower so oder so nicht auslasten können. Und der ATI-Support ist eher bescheiden und Treiber meistens Schrott. Ein CUDA-mässiges Programm hab ich bei ATI noch nicht gesehen.
Ich weis auch gar nicht ob es sich lohnen wird,
die so >100 Millionen Zahlen die in die 640 MB
Graphikkartenspeicher passen, sind mit standard qsort in so 2
sekunden sortiert, etwa 0,5 sek braucht der Transfer in die
Graphikkarte, und 0,5 zurück, also
ist schon rund eine sekunde verbraucht.
Sortieren ist nicht gerade das Ziel von GPUs. Ich glaube mit sortieren alleine wird die Karte nicht glücklich. Da müssen weitere Programmteile drauf wandern.
Ich hab so in den frühen 90ern auf Convex und Nec SX3
gerechnet. Da machte das alles der Fortran Compiler,
(also nicht sortieren, aber Matrizen und Vektoren mit ±*/
Operationen), was manchmal auch schwierig war,
aber man hatte nichts mit der Technik zu tun.
Die Kollegen sagten, die Crays seien nicht so schnell wie die
Nec,
aber der Compiler der Cray holts wieder raus, die gewonnene
Arbeitszeit macht die Cray als ganzes dann doch wieder
wesentlich schneller als die Nec, das durfte man aber nicht
laut sagen.
Sicherlich meintest du noch ältere Crays.
An den Anfängen gab es in Crays Entwürfen separate Einheiten für so ziemlich alles. Diese Einheiten sind superschnell aber unflexibel. So Sachen wie Vektorprodukt, Matrixmultiplikation,… usw waren damals (~1980-85) als reale Hardwareschaltung implementiert. Aber halt nur für bestimmte Grössen. Die Compiler haben die realen Matrixgrössen dann drauf angepast. Padding ist in dem Fall deutlich schneller als das ganze auf den normalen Prozessoren durchzukauen. Auf bestimmte Systeme optimierte Fortrancompiler waren Meister des Umbauen von Vektoren und missbrauchen von Einheiten für die absurdesten Zwecke. Aber ab einem gewissen Punkt war das aber nicht mehr interessant, weil zu teuer. Es kostete zuviel Zeit, Busbandbreite (und Nerven der Compilerbauer) im Vergleich zu inzwischen schnelleren normalen Prozessoren. Ein anderer Quell solcher Algos war die CM-1 (und teilweise die CM-2). Auch der Transputer wurde von einigen Forschern für sowas benutzt.
Die Shader2 fähigen GPUs und Intels brandneuer Teraansatz wird den ganzen Kram wieder auferstehen lassen. Das wird noch sehr lustig …
cu