Lizard - Skriptsprache für symbolische Berechnungen, beliebig große und genaue Zahlen, Parallel-Computing und mehr

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Lizard - Skriptsprache für symbolische Berechnungen, beliebig große und genaue Zahlen, und mehr

Beitrag von STARGÅTE »

Hallo Lord,
Die DLL hat meines Wissens nach keine weiteren Abhängigkeiten.
Als ich eben meinen alten Win 7 PC gestartet habe und es dort auch getestet habe, kann die DLL auch nicht geöffnet werden, also schon das OpenLibrary schlägt fehl (was etwas komisch ist, denn dann muss es ja was fundamentaleres sein).
Allerdings läuft die x86 Version auf dem Win 7 PC, kannst du das mal testen?
Ich suche derweilen nach dem Problem.

Edit: Selbst wenn ich die DLLs auf Windows 7 erstelle kann ich sie nicht laden und selbst wenn ich nur eine Test-DLL mit einer Funktion erstelle, schlägt diese beim Laden fehl. :?

Edit2: Test-DLL funktioniert doch glaube ich. Und ich habe festgestellt, dass auch die alte Version: viewtopic.php?p=358250#p358250 noch auf Win 7 funktioniert hatte.
Ich suche weiter nach der Ursache.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Lord
Beiträge: 313
Registriert: 21.01.2008 19:11

Re: Lizard - Skriptsprache für symbolische Berechnungen, beliebig große und genaue Zahlen, und mehr

Beitrag von Lord »

Ich habe jetzt auf PB5.73LTS (x86) getestet, da läuft es.
Die PB6beta in x86 habe ich jetzt gerade nicht hier.
Bild
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Lizard - Skriptsprache für symbolische Berechnungen, beliebig große und genaue Zahlen, und mehr

Beitrag von mk-soft »

Schau mal nach ob du irgendwo ein Zuweisung außerhalb einer Procedure durchführst.

Global xyz = etc

Das mag Windows 7 innerhalb einer DLL nicht. Stack Korruption!

Es muss aber nicht Innerhalt von 'AttachProcess' oder 'AttachThread' verlagert werden

Es geht auch

Code: Alles auswählen

Procedure InitVariables()
  ; do any
EndProcedure : InitVariables()

Procedure InitFunctions()
  ; do any
EndProcedure : InitFunctions()
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Lizard - Skriptsprache für symbolische Berechnungen, beliebig große und genaue Zahlen, und mehr

Beitrag von STARGÅTE »

mk-soft hat geschrieben: 05.06.2022 15:32 Schau mal nach ob du irgendwo ein Zuweisung außerhalb einer Procedure durchführst.
Global xyz = etc
Das mag Windows 7 innerhalb einer DLL nicht. Stack Korruption!
Es muss aber nicht Innerhalb von 'AttachProcess' oder 'AttachThread' verlagert werden
Es geht auch

Code: Alles auswählen

Procedure InitMyDLL()
  ; do any
EndProcedure : InitMyDLL()
Vielen dank mk-soft, genau das war es (mehr oder weniger). Aber geht denn sowas wie ... außerhalb einer Prozedure?:

Code: Alles auswählen

Global Dim MyArray(10)
Laut PB Hilfe ist das wohl auch nicht erlaubt.
Das heißt aber auch, dass ich durchaus Prozeduren (wie in deinem Beispiel) außerhalb von den DLL-Prozeduren aufrufen darf?

Das Hot-Fix reiche ich vermutlich morgen nach.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Lizard - Skriptsprache für symbolische Berechnungen, beliebig große und genaue Zahlen, und mehr

Beitrag von mk-soft »

Die eigenen Init Procedure werden genau so eingebunden wie AttachProcess.
Die gleichen Erfahrung mit DLL's und Crash habe ich mit meiner OOP BaseClassDispatch gemacht (und tausend mal getestet)

P.S.

Habe noch mal nachgeschaut.
Bei Attach Process wird die PB_DLLInit aufgerufen. In dieser werden dann die eigenen Prozeduren aufgerufen. (InitVariables, etc)
Sollte es ein "ProcedureDLL AttachProcess(Instance)" geben, wird diese nach PB_DLLInit aufgerufen.
Zuletzt geändert von mk-soft am 05.06.2022 16:21, insgesamt 1-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Lizard - Skriptsprache für symbolische Berechnungen, beliebig große und genaue Zahlen, und mehr

Beitrag von STARGÅTE »

Alles klar. danke mk-soft und danke an Lord fürs testen.
Hot-Fix ist draußen: Lizard - Symbolic computation script language (Version 0.4.3-0002)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Lord
Beiträge: 313
Registriert: 21.01.2008 19:11

Re: Lizard - Skriptsprache für symbolische Berechnungen, beliebig große und genaue Zahlen, und mehr

Beitrag von Lord »

:allright:
Gerade getestet: Example10_PlotFunctions.pb
funktioniert ohne Probleme.
Danke!
Bild
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Lizard - Skriptsprache für symbolische Berechnungen, beliebig große und genaue Zahlen, und mehr

Beitrag von Nino »

Stargate,

vielen Dank für das Update! :allright:
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Lizard - Skriptsprache für symbolische Berechnungen, beliebig große und genaue Zahlen, und mehr

Beitrag von STARGÅTE »

Hallo Leute,

nach dem "Bug-Fixes"-Update vom letzten mal möchte ich euch nun wieder mit einem "Feature"-Update versorgen. An dem folgenden Feature habe ich schon etwas länger geplant, bin aber erst in den letzten Monaten dazu gekommen es programmiertechnisch umzusetzen und konnte jetzt auch die ersten Tests erfolgreich absolvieren.
________________________________________
Lizard - Symbolic computation script language (Version 0.4.4-0002)
Beinhaltet die Lizard.dll (Windows x64 und x86), die Lizard.so (Linux x64), die Lizard.pbi, einige Beispiele zur Einbindung in Pure Basic und eine ausführliche Dokumentation zu Lizard mit vielen Beispielen.
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Das neue Feature gibt euch die Möglichkeit Berechnungen auf mehreren Kernen gleichzeitig auszuführen, also der erste Schritt Richtung "Parallel Computing".
Treu meinem Prinzip, in Lizard alles sehr einfach zu handhaben, wird es dann für ein paar Befehle einfach eine "Parallel"-Version geben, welche automatisch einen Thread-Pool erstellt, die Berechnungen dorthin verteilt, das "normale" Ergebnis wieder zusammenträgt und zurückgibt, ohne das der Nutzer sich über irgendwas Gedanken machen muss.

Ein Beispiel:
Während also "Iterate(f(x), {x, 1, 1000})" eine zeitintensive Funktion f nur auf einem Kern sequenziell ausführt, verteilt "IterateParallel(f(x), {x, 1, 1000})" diese Berechnung automatisch auf viele Kerne (Threads). Je nach Verhältnis der tatsächlichen Berechnungsdauer zum Zeitverbrauch für den "Thread-Verwaltungskram" ist die Gesamtausführungszeit dadurch meist deutlich schneller. Das trifft aber natürlich nicht auf einfache Funktionen zu, wo das parallelisieren ehr nachteilig ist.

Eine Übersicht der neuen Parallel-Computing-Befehle mit Beispielen ist hier zu finden: Lizard » Core Language » Parallel Computing
(Diese 6 Befehle mögen vielleicht recht wenig vorkommen, aber jede andere Funktion/Ausdruck kann natürlich innerhalb von IterateParallel() oder MapParallel() verwendet und so beschleunigt werden.

Nebenbei gibt noch ein paar andere neue Funktionen wie reziproke trigonometrische und hyperbolische Funktionen, ein bisschen Kleinkram, wieder ein paar Bug-Fixes und es gibt nun Funktions-Plots bei mathematischen Funktionen in der Dokumentation. Lizard » History

In diesem Sinn, viel spaß beim Testen und wie immer würde ich mich über Feedback freuen.

Edit: Hot-Fix 0.4.4-002
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten