"We are back" « oc.at

c++ libraries für matrixoperationen und matlab

NullSpace 13.06.2004 - 18:10 2160 41
Posts

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25659
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

katzenknuddler
Registered: Apr 2001
Location: multiversum / li..
Posts: 658
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

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
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

katzenknuddler
Registered: Apr 2001
Location: multiversum / li..
Posts: 658
gibts gute literatur für cache manager?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25659
"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

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
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

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5019
Es gibt aber ausgezeichnete papers über extreme lanscape visualisation, könnte ich wiederfinden wenn ich mal zeit hab.

SYSMATRIX

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5019
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

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
3-1 gibt's auch unter Windows. Ich weiß zwar nicht, wie man's aktiviert, aber möglich ist es.

SYSMATRIX

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5019
ah, k :D

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
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

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
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
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz