c++ libraries für matrixoperationen und matlab - Seite 3

Seite 3 von 3 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_libraries_fuer_matrixoperationen_und_matlab_117037/page_3 - zur Vollversion wechseln!


mat schrieb am 13.06.2004 um 21:26

ich würde die ganze sache nicht auf 1x in den speicher laden sondern segmentiert auf der festplatte speichern und dann über einen CacheManager immer wieder teile davon einladen und mit diesen teilstücken dann relativ arbeiten.


NullSpace schrieb am 13.06.2004 um 21:27

genau das hab ich mir auch schon überlegt. aber es erhöht den arbeitsaufwand doch um einiges, deshalb wärs mir lieber wenn ich große matrizen (im bereich 10000x10000) laden könnte. aber vielleicht komm ich eh nicht drum rum.


Ringding schrieb am 13.06.2004 um 21:28

Jo aber genau dieser Cache Manager ist ja das komplizierte daran. Da kann schon mal leicht Käse rauskommen, wenn man nicht genau weiß, was man tut.


NullSpace schrieb am 13.06.2004 um 21:30

gibts gute literatur für cache manager?


mat schrieb am 13.06.2004 um 21:33

"CacheManager".. das war nur so dahingesagt. wennst einfach machen willst dann implementier einfach first in - last out und alles was dazu gehört. ansonsten brauchst ein "bewertungssystem", quasi ein scoreboard für deine tiles.

der vorteil des CacheManagers soll eigentlich in 1. linie nur die abstrahierung zu den rechenoperationen sein. du könntest ihn so programmieren, dass man die tiles wie bei einem normalen 2d array herausholt (overloaded operators). wenn du später draufkommst du brauchst den manager gar nicht oder wwi, dann kannst ihn einfach alle tiles laden lassen bzw. den caching algorithmus überspringen usw.


Ringding schrieb am 13.06.2004 um 21:35

Wegen einer PM von NullSpace werde ich kurz versuchen, zu erklären, wie das mit dem Adressraum ist.

Du willst eine Matrix von 800MB verarbeiten und einfachen Zugriff darauf haben. Zugriff auf das Element an der Stelle 4000, 3000 erfolgt dann ungefähr so: m[WIDTH * 4000 + 3000]. So einfach geht das. Es muss nicht unbedingt im RAM sein, es kann auch von der Platte gepaged werden. Das Problem ist nur, dass so eine 800MB Matrix 800MB Adressraum braucht, und auf 32bittigen Systemen hat ein Prozess üblicherweise 2GB Adressraum zur Verfügung (max. 3GB), d.h. du bringst genau 2 Matrizen unter und nicht mehr. Wenn du mehr brauchst, musst du komplizierte Verfahren erfinden, um das irgendwie hinzubiegen, oder du steigst auf eine 64bit-Architektur um, wo du über dieses Problem nur mehr lächeln kannst, weil du plötzlich terabyteweise Adressraum zur Verfügung hast.


SYSMATRIX schrieb am 13.06.2004 um 22:42

Es gibt aber ausgezeichnete papers über extreme lanscape visualisation, könnte ich wiederfinden wenn ich mal zeit hab.


SYSMATRIX schrieb am 13.06.2004 um 23:02

Zitat von Ringding
Wegen einer PM von NullSpace werde ich kurz versuchen, zu erklären, wie das mit dem Adressraum ist.

Du willst eine Matrix von 800MB verarbeiten und einfachen Zugriff darauf haben. Zugriff auf das Element an der Stelle 4000, 3000 erfolgt dann ungefähr so: m[WIDTH * 4000 + 3000]. So einfach geht das. Es muss nicht unbedingt im RAM sein, es kann auch von der Platte gepaged werden. Das Problem ist nur, dass so eine 800MB Matrix 800MB Adressraum braucht, und auf 32bittigen Systemen hat ein Prozess üblicherweise 2GB Adressraum zur Verfügung (max. 3GB), d.h. du bringst genau 2 Matrizen unter und nicht mehr. Wenn du mehr brauchst, musst du komplizierte Verfahren erfinden, um das irgendwie hinzubiegen, oder du steigst auf eine 64bit-Architektur um, wo du über dieses Problem nur mehr lächeln kannst, weil du plötzlich terabyteweise Adressraum zur Verfügung hast.
Ist das unter Windows auch so? Unter Linux gibts eben (1-3), 2-2, 3-1 configs.


Ringding schrieb am 13.06.2004 um 23:06

3-1 gibt's auch unter Windows. Ich weiß zwar nicht, wie man's aktiviert, aber möglich ist es.


SYSMATRIX schrieb am 13.06.2004 um 23:07

ah, k :D


that schrieb am 13.06.2004 um 23:20

Zitat von Ringding
3-1 gibt's auch unter Windows. Ich weiß zwar nicht, wie man's aktiviert, aber möglich ist es.

/3GB als Parameter in der boot.ini anhängen, und das Programm muss mit der richtigen Option gelinkt sein.

Geht angeblich mit WinXP und den Serverversionen.

http://www.microsoft.com/whdc/syste...PAE/PAEmem.mspx


Ringding schrieb am 13.06.2004 um 23:22

Hab's auch grad gesehen, geht mit folgenden Windosen (laut MSDN)

Windows NT 4.0 SP3 Server Enterprise Edition, Windows 2000 Advanced Server, and Windows .NET Server 2003 Enterprise Edition




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026