Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   scientific computing: mehr als 4 GB RAM nutzen!? (https://www.delphipraxis.net/157769-scientific-computing-mehr-als-4-gb-ram-nutzen.html)

xcs 24. Jan 2011 15:31

scientific computing: mehr als 4 GB RAM nutzen!?
 
Hallo,

mein Problem ist sehr speziell. Hoffe, jemand kennt sich damit aus.
Ich habe mit Delphi ein Programm für wissenschaftliche Berechnungen geschrieben - sowas wie FEM bzw. Reaktions-Diffusions-Gleichungen aus der Chemie etc.
Mit leistungsstärkeren Prozessoren kann ich nun die Berechnungen genauer machen, d.h. ich bekomme eine höhere räumliche Auflösung.
Problem: obwohl der Rechner 64 GB RAM hat, zeigt das Programm an "Zu wenig Arbeitsspeicher", wenn mehr als 4 GB in den Speicher geladen werden sollen.
Das liegt sicher daran, dass meine Delphi.Version (2006) nur einen 32-Bit-compiler hat.
Aber auch Delphi XE soll nur einen 32-Bit-Compiler haben!
Damit ist es unmöglich, mehr als 4 GB zu nutzen.

Habt ihr eine Idee, wie ich es trotzdem machen könnte? Gibt es schon 64-Bit-Compiler? Gibt es einen Trick oder eine Erweiterung?
(Anmerkung: Nein, ich kann das Programm nicht so optimieren, dass ich < 4 GB brauche)

Danke

mkinzler 24. Jan 2011 15:35

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
-Delphi XE2 soll einen 64Bit-Compiler bekommen
-FPC/Lazarus
-PAE

Memnarch 24. Jan 2011 15:42

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
ne richtig schmutzige methode wäre, das dein Hautprogramm ein subprogramm pro benötigtes Gigabyte(oder 4GByte) erstellt. Per pipelines/TCP kommuniziert dein Programm zwischen sich und den MemoryNodes. Jede node sollte so für sich 4GByte allokieren können.

Allerdings weiß ich nicht inwiefern die Daten bei dir gestreamed werden können.


MFG
Memnarch

s.h.a.r.k 24. Jan 2011 16:34

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
Im Moment würde ich dir den FreePascal-Compiler nahe legen, so wie mkinzler schon gesagt hat.

Ob XE2 einen 64-Bit Compiler enthalten wird, glaube ich erst, wenn ich es in den Händen halte :mrgreen:

Assarbad 24. Jan 2011 16:48

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
Es gibt noch eine Methode die auch auf 32bit Funktioniert. Man kann eine MMF benutzen, in der immer nur ein Stück gemappt wird, so daß man nie den Adressraum ausschöpft. Macht natürlich die Programmlogik nicht gerade einfacher ...

Übrigens, wenn du diese Methode mit der von Memnarch vorgeschlagenen kombinierst, könntest du noch besser wegkommen, insofern sich deine Berechnungen parallelisieren lassen. Denn: jeder einzelne Prozess hat 4 GiB Adressraum (wovon natürlich normalerweise nur 2 GiB für den UM bereitstehen). In dem Fall hast du eben nicht mehrere Threads im gleichen Prozess die an den Daten werkeln, sondern mehrere Threads in mehreren Prozessen. Damit haste dann (wie gesagt, wenn denn parallele Bearbeitung überhaupt geht) dann die Parallelisierung auch gleich abgedeckt.

mkinzler 24. Jan 2011 18:04

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
Wenn es nur um Daten geht wäre hier PAE besser, ich weiss nur nicht, wie/ob das mit Delphi funktioniert

Assarbad 24. Jan 2011 19:00

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
Zitat:

Zitat von mkinzler (Beitrag 1076957)
Wenn es nur um Daten geht wäre hier PAE besser, ich weiss nur nicht, wie/ob das mit Delphi funktioniert

Hier würfelst du scheinbar etwas durcheinander. PAE bedeutet nur, daß die CPU alles bereitstellt, damit der Kernel auch im 32bit-Adressmodus auf mehr als 4 GiB RAM zugreifen kann. Treiber müssen entsprechend darüber bescheidwissen. Anwendungen hingegen sehen nach wie vor nur 4 GiB (pro Prozeß).

Siehe: http://de.wikipedia.org/wiki/Physical_Address_Extension

Zitat:

Der in einem Prozess bzw. einem Task nutzbare Speicher ist jedoch weiterhin auf 4 GiB begrenzt, sofern man ein lineares Speichermodell („flat memory“) verwendet, da die verwendeten Adressregister nur 32 Bit breit sind.

mkinzler 24. Jan 2011 19:18

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
Die 32Bit Version von MSSQL kann damit aber mehr als 4GByte verwenden ( bei einem 64Bit OS)

Assarbad 24. Jan 2011 19:26

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
Zitat:

Zitat von mkinzler (Beitrag 1076968)
Die 32Bit Version von MSSQL kann damit aber mehr als 4GByte verwenden ( bei einem 64Bit OS)

Ich habe keinen Bock es zu reversen, aber ich bin mir ziemlich sicher, daß dabei der angesprochene Trick mit den MMFs zur Anwendung kommt. Mehr als 4 GiB gleichzeitig innerhalb eines (32bit-)Prozesses geht nämlich einfach nicht, egal was irgendwelche Quacksalber dir verkaufen/verkauft haben ;) ...

Aber welche Version ist es denn, die du meinst? Kann gern mal reinschauen. Glaube aber irgendwie nicht, daß es 32bittige Prozesse sind, wenn doch schon die Anforderung 64bit-OS existiert.

mkinzler 24. Jan 2011 19:32

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
Nein, die verwendete Software (Datev) unterstützt keine 64Bit Version des SqlServers ( solange sie noch 32Bit unterstützen, wegen Testaufwand). Früher wurden mehrer Instanzen eingesetzt nun raten sie davon ab und bieten die genannte Version ein (MSSQL 2005 SE).

Assarbad 24. Jan 2011 19:39

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
Und Marshaling kann es nicht sein? Es steht dem ja normalerweise nichts im Wege einen 32bittigen COM-Wrapper anzubieten, auch wenn die Anwendung 64bit wäre.

Problem ist, daß ich nur an die 2005er rankomme, die bei VS dabei ist. Und ich denke nicht, daß das die gleiche ist ;)

xcs 25. Jan 2011 05:51

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
Danke für Eure Tipps.

Hat einer von Euch Erfahrungen, was z.B. die Konvertierung eines Delphi-Projektes in ein Lazarus-Projekt betrifft. So ohne weiteres scheint das nicht zu funktionieren...
Gibt es bei Lazarus eine "Einstellung", wo man angibt, dass es mit 64 Bit compiliert werden soll, oder geht das automatisch oder gibt es Quelltext-Befehle?
Kann man den Free Pascal Compiler irgendwie mit Delphi verbinden?

Ich kenn mich mit diesem ganzen Zeug (verschiedene Compiler usw) leider nicht wirklich aus. Habe ursprünglich Delphi genommen, weil es so möglich war, straight forward eine Windows Anwendung zu erstellen. Dass ich über 4 GB RAM benötigen würde, war damals noch nicht abzusehen, und ich möchte nicht alles neu schreiben.

WM_CLOSE 25. Jan 2011 11:26

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
Man macht lazarus auf,
drückt auf importieren (in einem der Menüs oben)
und wählt als target 64 bit aus (In den Projektoptionen).
Dann kann es noch passieren, dass der FPC manche Spezialkonstrukte nicht kennt. Die musst du dann ändern.
Ansonsten genauso wie bei Delphi. Poste doch was schiefgeht, dann sehen wir weiter.

PS: du kannst auf einem 32er System natürlich kein 64-Bit debuggen (wie das mit dem Kompillieren aussieht weiß ich nicht).

xcs 26. Jan 2011 08:05

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
Ich habe jetzt erstmal folgendes Problem:
Habe mir Lazarus runtergeladen und installiert.
Anschließend habe ich mir den freepascal 64Bit-crosscompiler runtergeladen und installiert.
Dann habe ich in Lazarus unter einstellungen-->einstellungen bei compilerdateiname ppcrossx64.exe ausgewählt.
dann habe ich unter Prokekt-->Compilereinstellungen-->Quelltext-->Zielplattform bei Zielbetriebssystem Win64 und bei Ziel-CPU x86_64 und bei Zielprozessor (Voreinstellung) ausgewählt.

Wenn ich jetzt eine Hallo-Welt-Anwendung kompilieren will, werden keine Units mehr gefunden.
Wenn ich die Einstellungen rückgängig mache (wieder den 32Bit-compiler auswähle usw) findet er die Units auch nicht mehr!?
Woran liegt das? Warum findet er die Units nicht?

WM_CLOSE 26. Jan 2011 08:29

AW: scientific computing: mehr als 4 GB RAM nutzen!?
 
sind evtl die Libary-Pfade zerschossen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz