BrookGPU ist die erste Schnittstelle die eine direkte Programmierung der GPU-Lowlevel-Fähigkeiten ermöglicht.
Was bedeutet das für den Normalanwender ?
Es könnten zukünftige Programme mit Hardware-Anforderungen auftauchen mit denen man früher nicht rechnen konnte,
z.B "CoolEdit 2004" (Ein Soundbearbeitungsprogramm) fordert als Optimal "DirectX9 fähige Grafikkarte".
Ebenso könnten Spiele dazu übergehen Brook zu nutzen, denn z.B auch Matrix-Berechnungen (3D-Vectoren) sind mit Brook möglich, dann steht z.B auf der Packung: "Mindestens 500Mhz Pentium II & Geforce FX oder Radeon 9700, oder 2 Ghz CPU und Ti 4200/Radeon 9600"
Für NVidia gibt es natives Interface, ATI-Karten werden bisher über eine DirectX9-Schnittstelle angebunden.
Was für mögliche Auswirkungen auf den "Grafikkartenmarkt" wird Brook haben ?
Wenn es sich durchsetzt: Erhebliche Auswirkungen !
1) Programme verwenden Brook, die Anforderungen an die GPUs ("Grafikkarten") wachsen.
2) Es entsteht bedarf für mehrere GPUs in einem Rechner (z.B wenn Raytracer anfangen Brook zu verwenden)
3) Es werden wieder mehr PCI-Grafikkarten erscheinen - da der Bedarf in dem Bereich wieder wächst.
4) Grafikkartenpreise werden fallen da die Karten nicht mehr nur im Grafikbereich relevant sind
5) Die Hersteller verdienen durch die größere Nachfrage mehr, so das schneller bessere Modelle erscheinen werden
Viele bekannte Persönlichkeiten der Stanford Universität haben daran mitgearbeitet, u.a Tim Foley & Ian Buck
Technische Zusammenfassung
Mit Brook kann man wie bei einem DSP (Digitaler Signal Prozessor) große Datenmenge miteinander verknüpfen/Operationen darauf anwenden, in modernen CPUs gibt es dafür die sogenannten Multimedia-Befehle, die dann den selben Befehl auf mehrere Daten anwenden.
Aber eine GPU dafür zu verwenden hat viele Vorteile:
Mehrere GPUs können parallel arbeiten.
Der Arbeitsspeicher auf Grafikkarten ist im moment viel schneller angebunden als auf jedem PC-Mainboard.
GPUs sind viel günstiger als DSPs.
Fast jeder hat eine NV30 oder höher GPU.
Ein kleines Brook-Codebeispiel:
Code:
kernel void foo(float a<>, float b<>, out float result<>) {
result = a + b;
}
float a<100>;
float b<100>;
float c<100>;
(...)
foo(a,b,c);
In C müsste man statt "result = a + b;" schreiben:
Code:
for (i=0; i<100; i++)
c[i] = a[i]+b[i];
das bedeutet das der Prozessor diese Schleife 100 mal durchlaufen muss, Brook macht das mit EINEM Befehl !
Innerhalb der letzten 6 Monate ist die Schnittstelle/Programmierung um den Faktor 3 beschleunigt worden (NV30).
Die Beta-Version V0.2 von BrookGPU ( http://www.sf.net/projects/brook ) ist jetzt frei verfügbar.