URL: https://www.overclockers.at/coding-stuff/c_libraries_fuer_matrixoperationen_und_matlab_117037/page_3 - zur Vollversion wechseln!
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.
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.
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.
gibts gute literatur für cache manager?
"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.
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.
Es gibt aber ausgezeichnete papers über extreme lanscape visualisation, könnte ich wiederfinden wenn ich mal zeit hab.
Ist das unter Windows auch so? Unter Linux gibts eben (1-3), 2-2, 3-1 configs.Zitat von RingdingWegen 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.
3-1 gibt's auch unter Windows. Ich weiß zwar nicht, wie man's aktiviert, aber möglich ist es.
ah, k 
Zitat von Ringding3-1 gibt's auch unter Windows. Ich weiß zwar nicht, wie man's aktiviert, aber möglich ist es.
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