Einzelnen Beitrag anzeigen

Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#71

AW: Delphi 64 Bit langsamer als 32 Bit

  Alt 9. Aug 2013, 08:26
Um mal noch kurz einzustreuen, wie das bei Free Pascal ist:
Sind Anwendungen, wie die des Threaderstellers, eigentlich eine Zielgruppe für Pascal Compiler Entwickler ?

Leute die solche Berechnungen mit Millionen Daten und Millarden Operationen darauf machen, haben ja meist dicke Rechner mit mehreren Prozessoren. (GPUs usw. lassen wir mal ganz außen vor.) Bei den oben erwähnten C++ Lösungen dafür hat man ja heute Libs zum z.B. große Arrays auf CPUs zu partitionieren und hinterher die Teillösungen zusammenzubringen.
Es sehe hier durchaus Anwendungsmöglichkeiten für Pascal Compiler. Aktuell ist FPC und vielleicht auch die Laufzeitbibliothek nicht unbedingt darauf ausgelegt, aber das heißt ja nicht, dass das so bleiben muss. Vor allem bei einem Open Source Projekt, wo jeder was beitragen kann.
Meine Idee ist zum Beispiel die Funktionalität von Vector Pascal in FPC zu integrieren, was eine native Nutzung von SIMD Units ermöglichen würde (FPC unterstützt zwar aktuell SIMD Instructions, wendet die aber nur für einzelne Werte an, also eher als FPU-Ersatz). Dann müssten auch noch ein paar Optimierungen her wie Auto Vectorizing oder sonstige Nettigkeiten, wie sie LLVM zur Zeit bekommt. Vielleicht auch ein paar Threading Erweiterungen wie sie Oxygene kennt (z. B. parallel for ).

Sind die Delphi/Pascal Lösungen dafür Assemblerroutinen und Threads ? Tiling, Loadbalancing usw. alles händisch ? Arbeitet nicht die Zeit gegen solche Lösungen ? Es gibt schliessich immer mehr Kerne auf CPUs, die aber einzeln nicht schneller werden.
Meine Anmerkung mit Assembler betraf zwei Grundroutinen, die sehr häufig implizit aufgerufen werden. Wenn die nicht schnell sind, dann bringt dir auch die ganze sonstige Optimiererei nicht allzu viel. Und auch wenn natürlich der Compiler auch entsprechend optimieren können muss gibt es hier und da Routinen wo es besser ist, wenn man von Hand ne Assemblerroutine schreibt (eben zum Beispiel diese beiden besagten Routinen FillChar und Move ), da hierdurch Prozessorbefehle verwendet werden können, die der Compiler normalerweise nicht verwendet (ein Compiler reizt das Instruction Set eines Prozessors normal nie voll aus).
Was aktuell (zumindest so weit ich das Überblicke) allerdings tatsächlich noch fehlt sind Frameworks (ich nenn es mal einfach so), die einem das Arbeiten mit und Verwalten von vielen Threads abnehmen (du magst das nennen wie du willst, aber von der OS Perspektive her sind es am Ende immer noch Threads, die da parallel laufen).

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat