PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Number Crunching mit PS/VS 2.0


White_Shadow
2003-11-04, 22:31:35
Hi Ho,
also ich wollte mal von den Experten (demi, zeckensack und der ganze rest ;) ) wissen ob es Theoretisch möglich wäre eine Number Cruncher auf ner Graka zu implementieren (wenn ja würde ich das nämlich als Diplomarbeit bearbeiten). Als spezielles Verfahren sollte dabei ein Gleichungslöser verwendet werden wie sie z.B. auch in Matlab benutzt werden (z.B. Gauselemination CG-Verfahren). Jetzt ist natürlich die große Frage ob das überhaupt möglich ist (am besten mit OpenGL wegen Plattformunabhängigkeit da Mathematiker Windows nich mögen!) und wenn ja welche Vorrausetztungen die Grafikkarte erfüllen müsste VS/PS 2.0, 1.4, 1.1 oder 1.0 da man ja mindestens ein double Format nach IEEE Standart unterstützen muss um Rundungsfehler klein zu halten. Mir ist natürlich durchaus bewusst das dass nen Großen Programmieraufwand bedeutet da man die normalen Rechenoperationen u.U. noch selbst Programmmieren muss. Achja wenn es nicht besonders schnell ist auch egal da ich ehe vorhabe das zu "parallelisieren" also mit CPU und Graka zurechen und da die Matrizen ziemlich groß sind bis 10^5x10^5 wäre da jede zusätzliche Operation pro sec. sehr hilfreich!
Mfg
White Shadow

P.S. Wäre auch cool wenn jemand vielleicht nen tut oder doku über PS/VS für OpenGL (ich weiß das die da anders heißen aber ich kann das nie auseinander halten) angeben würde.

Demirug
2003-11-04, 23:32:32
Theoretisch auf jeden Fall.

Praktisch wird es allerdings stark von genauen mathematischen Problem abhängen ob man es lössen kann und welche Hardware man benötigt.

Aber selbst wenn man es machbar ist heist das noch nicht das es auch wirklich etwas bringt. Die Grafikkarte muss ja nach wie vor von der CPU angesteuert werden. Ist dieser Steueraufwand grösser als das was man spart ist es natürlich irgendwie sinnloss.

Problematisch ist zum Beispiel die Forderung nach einem IEEE double Format. Das beste was Grafikkarten derzeit können ist ein 32 Bit single Format (NV3X). ATI begnügt sich mit einem 24 Bit Format (R3XX). Zudem rechnen beide nicht 100% IEEE konform. In Grenzfällen (zB Division durch 0) ist das Verhalten anders.

Dokumentationen über die Shader findest du in den Entwicklerbereichen von ATI und nVidia.

Chris Lux
2003-11-05, 08:24:21
Original geschrieben von White_Shadow
Vorrausetztungen die Grafikkarte erfüllen müsste VS/PS 2.0, 1.4, 1.1 oder 1.0 da man ja mindestens ein double Format nach IEEE Standart unterstützen muss um Rundungsfehler klein zu halten.


hi, ich sitz grad an was ähnlichem. aus meiner sicht auf jeden fall ps2.0, da erst ab hier wirklich viele arithmetische sachen berechnet werden können und fliesskommatypen zur verfügung stehen. dann würde ich weiter zu nvidiahardware tendieren, da diese echte unconstrained 32bit float bieten als rendertargets, texturen und natürlich für berechnungen. des weiteren ist es IMO möglich mit nvidia hardware längere programme zu schreiben, was bei dieser thematik sehr grosser vorteil sein kann, da aber meist doch nur sehr kurze programme benötigt werden und das problem auf mehrere interationen mit dem ergebnis der letzten berechnung als input für die nächste, ist die programmlänge ein kleineres problem (imo können auch ati karten jetzt lange programme, aber bieten eben nur 24bit und imo keine 32bit pro kanal float pbuffer und texturen. genauso bietet nvidia hw für berechnungen mit weniger genauigkeitsansprüchen den half typ (16bit floatingpoint), welcher dann auch benutzt werden kann um nicht nur 4 werte aus einer berechnung zu erhalten sondern 8 (2x16bit gepackt in einem 32bit kanal).
kurz und knapp denke ich das nvidia hardware zur zeit besser geeignet ist für solche aufgaben.


Matrizen ziemlich groß sind bis 10^5x10^5 wäre da jede zusätzliche Operation pro sec. sehr hilfreich!


ich glaube das wird ein problem, da man die matrizen als textur für die eingabe an das fragment program benutzt und diese als pbuffer zur zeit nur maximal 4096x4096 sein können. aber wenn es irgendwie möglich ist könnte man ja die matritzen zerlegen und mehrere eingabe texturen daraus bilden (ka ob das überhauüt sinn macht). dabei ist aber der unglaublich grosse speicheraufwand zu beachten, was dann sicher zu problemen mit der bandbreite führt.



P.S. Wäre auch cool wenn jemand vielleicht nen tut oder doku über PS/VS für OpenGL (ich weiß das die da anders heißen aber ich kann das nie auseinander halten) angeben würde.

da kann ich dich auch nur an die entwicklerbereiche verweisen. und auf das:
http://www.multires.caltech.edu/pubs/GPUSim.pdf
"Jens Krger and Rdiger Westermann. Linear algebra operators for GPU implementation of numerical algorithms. ACM Transactions on Graphics, 22(3), July 2003."