INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

number crunching in LV = nix gut



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

13.12.2009, 17:29
Beitrag #1

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
number crunching in LV = nix gut
Hallo,

nur so eine Erfahrung: in LV realisierte Berechnung mit 200.000 Elementen Großen 3D Matritzen und einem Haufen Indexschaufelei (Formula Node) ist keine gute Idee:

Rechenzeit LV 650
Rechenzeit (alter) FOR Compiler 12

Das heisst der Compiler ist um den Faktor 55 schneller. Der Compiler ist sehr alt - hat keine Ahnung von mehreren Kernen! Ich rechne das auf meinem Laptop mit 2 Kernen.

Im übrigen ist die Formula Node sonderbar:

Die gibt Units weiter - na gut das stört nicht weiter aber
Array Index Fehler werden nicht bemerkt - das stört mich gewaltig

Viele Grüße

Gottfried

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.12.2009, 22:13
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
number crunching in LV = nix gut
Wenn man jetzt wüsste, was genau du berechnest, dann könnte man dir bei der Optimierung vielleicht helfen. Denn wenn ich schon lese, Formula-Node und Arrays, da möchte ich bezweifeln, ob das wirklich optimal ist...

http://digital.ni.com/public.nsf/allkb/020...6256D0E006615E9
http://digital.ni.com/public.nsf/websearch...39?OpenDocument

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2009, 09:12 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2009 09:19 von rolfk.)
Beitrag #3

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
number crunching in LV = nix gut
Die Formula Node ist ein veredelter Interpreter mit C Syntax. Wenn Du denkst die zu verwenden weil es schneller ist als die LabVIEW Built-in Nodes, dann hast Du Dir gewaltig in die Finger geschnitten. NI macht in dieser Hinsicht auch keinerlei Hoffnungen. Die Formula Node ist da, für die die sich mit Formeln halt einfach komfortabler fühlen, aber ist sicher kein integrierter optimalisierender C Compiler.

Was Out of Index angeht, C crasht oft einfach. Ein Crash in LabVIEW ist per Definition ein Bug (obwohl im Falle von Zugriff zu externem Code ein Bug in der Konfiguration der CIN or CLN oder ein Bug im externen Code, also ausserhalb der Kontrolle von LabVIEW selber).

Bei normalen Nodes ist es etwas schwieriger um Out of Index Operationen zu erreichen da sehr viel Operationen automatisch mit der kleineren Arraygrösse arbeiten, aber die Index Array Funktion liefert bei Out of Index Zugriffen auch einfach den Default-Default Wert zurück statt zu crashen Rolleyes
Vielleicht dass Dir Fortran hier schöne Exceptions zurückgibt, was eigentlich auch einfach ein Crash ist, wenn auch kontrolliert, aber das ist nicht wie LabVIEW arbeitet oder in irgendeiner Weise vorgesehen. Die LabVIEW Weise um mit so was umzugehen ist soviel möglich trotzdem etwas mehr oder weniger sinnvolles zu tun (Default-Default Wert in der Index Array Funktion beispielsweise) oder einen Runtime Error zu erzeugen. Dazu benötigte die Formula Node aber einen Error Cluster und das ist bis heute nicht implementiert und im Hinblick auf die neueren Formula Node Ersatzlösungen wie Script Node und Mathscript auch eher unwahrscheinlich um noch hinzugefügt zu werden.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2009, 10:36 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2009 10:37 von gottfried.)
Beitrag #4

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
number crunching in LV = nix gut
Hallo,

danke für Eure Kommentare. In der Anlage seht Ihr meine Vorgangsweise. Das ist eine brute force Wärmeleitungsgleichung instationär in 3D.

Das Ganze in Array-arithmetik zu rechnen ist in LV sicher möglich aber ich müsste auch die verschobenen Arrays, also was ich mit x(1,j,k-1) etwa anspreche nochmals speichern. Ein Array hat aber 3,3M Elemente - diese Vorgangsweise fand ich nicht gangbar.

Das die Formula Node nicht kompiliert wird, war mir neu. Auch das das Ding irgendetwas mit units mach auch. Die Frage "wo steht das" geht wohl wie immer ins Leere....Wink

Mathscript ist Quatsch (völliger! - keine Debugmöglichkeit für gerufene Functions), extrem langsam, muss extra bezahlt werden... was ich auch schon oft lautstark kundgetan habe.

Die Sache läuft, was ich noch interessant finde ist ein Versuch in Array-Arthmetik in FORTRAN.

Danke Euch


Angehängte Datei(en) Thumbnail(s)
   

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2009, 11:16 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2009 11:20 von rolfk.)
Beitrag #5

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
number crunching in LV = nix gut
Ich wollte nicht sagen dass die Formula Node den Code interpretiert, ich dachte eigentlich eher nicht, aber dass das alles ausser ein optimalisiernder C Compiler ist. Moderne Bytecode Implementation (die ein Zwischending zwischen Interpreter und Compiler sind) können die Formulanode so wie sie heute besteht aber lange in den Schatten stellen. Es war auch nicht Ziel um in LabVIEW mit der Formulanode auch noch gleich einen C Compiler zu integrieren sondern halt einfach die Eingabe von Textformeln möglich zu machen. Der Code wird zwar meines Wissens in Maschinencode umgesetzt, aber nicht mit Hinblick auf Schnellheit sondern auf sichere Ausführbarkeit ohne Crash. Das heisst auch dass in Loops beispielsweise alle Arrayindexes jedesmal gecheckt werden um einen Crash unter allen Umständen zu vermeiden. Das kostet sehr viel Laufzeit.

Könnte NI die Formulanode optimalisieren? Natürlich!
Werden Sie es tun? Ich schätze die Chance dafür sehr klein. Das würde wohl ein weteres Redesign der ganzen Formulanode erfordern mit hinzufügen eines richtigen C Compilers in LabVIEW was die Komplexität für den Unterhalt und den Umfang von LabVIEW extrem vergrössern würde. Also wohl eher nicht.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2009, 21:07
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
number crunching in LV = nix gut
Hallo, Gottfried,

wenn ich nichts falsch gemacht habe, sollte dies deine Formula-Node sein (allerdings ist bei mit die Matrix v1 komplett besetzt).
Durchlauf-Zeit bei 60x60x60-Arrays auf meinem Rechner ca. 50 ms
Und da ist sicher noch einige Optimierungsmöglichkeiten drin:
Lv09_img2
Sonstige .vi  number_crunching_2009.vi (Größe: 23,65 KB / Downloads: 217)


Mich würde ein Vergleich mit realen Arrays auf deinem Rechner interessieren.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.12.2009, 16:54 (Dieser Beitrag wurde zuletzt bearbeitet: 16.12.2009 16:59 von gottfried.)
Beitrag #7

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
number crunching in LV = nix gut
Du beeindruckst mich immer wieder.

Deine Lösung Laufzeit auf meinem Rechner 54ms.
Rechenzeit LV 650 mit Formula Node
Rechenzeit (alter) FORTRAN Compiler 12 (geschwindigkeitsoptimiert)
FORTRAN mit allen Debug Zeugs ca 60ms

Was man aber ehrlicherwiese sagen muss (sorry) die Textfassung ist ein wenig (ganz ganz ganz ganz klein wenig) leserlicher als der Datenfluss (um das Wort LabVIEW zu vermeiden)

ad rolfk: die FormulaNode mach überhaupt keine Arraychecks.

ad alle: was macht die (toll dokumentiere) Formulanode mit den Einheiten? Bitte Antworten ohne auszuprobieren

was mich noch juckt: die Rechenzeit in Arrayarithmetik

Danke

Gottfried

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.12.2009, 17:06 (Dieser Beitrag wurde zuletzt bearbeitet: 16.12.2009 17:06 von rolfk.)
Beitrag #8

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
number crunching in LV = nix gut
' schrieb:ad rolfk: die FormulaNode mach überhaupt keine Arraychecks.

Eben doch, anders würde es crashen. Was sie aber tut ist einfach einen Null-Wert verwenden für nicht vorhandene Arrayelemente. Das bedingt aber einen Arrayboundscheck und der ist bei nicht optimalisierter Codeerzeugung halt in jeder Iteration aufs Neue.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.12.2009, 16:37
Beitrag #9

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
number crunching in LV = nix gut
ad Jens: Du hast Dir viel Arbeit gemacht aber das VI ergibt nur Nullen. Der Eingang v1 ist bei Dir auch nicht verwendet.

Macht nichts - ich habe meine DLL. BTW wenn man das VI von Jens als SubVI einbindet braucht es um 6 bis 10ms länger. Das ist, so finde ich für einen call by Value von so vielen Daten eigentlich toll.

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.12.2009, 00:32
Beitrag #10

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
number crunching in LV = nix gut
' schrieb:ad Jens: Du hast Dir viel Arbeit gemacht aber das VI ergibt nur Nullen.
Wie das? Bsp mit Zufallszahlen zeigt doch, dass das Ausgangsarray v1 nicht nur Nullen enthält?!
' schrieb:Der Eingang v1 ist bei Dir auch nicht verwendet.
Innerhalb der geposteten Formulanode verwendest du v1 doch gar nicht, v1 werden nur Werte zugewiesen... Das ist mein Ausgangsarray. Wenn du das immer wieder neu überschreiben willst, wo ist das Problem, einfach per ReplaceArraySubset machen...

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Schieberegister Initialisierung mit Array => Not a Number Roland 7 8.234 03.07.2017 15:58
Letzter Beitrag: Roland
  String zu Number umwandeln galilio 6 6.532 01.09.2016 15:38
Letzter Beitrag: GerdW
  Boolean Array (>32-Bit!) to Number Daniel_S 2 6.179 27.07.2016 13:44
Letzter Beitrag: jg
  Fract/Exp String To Number Function grba123 2 4.386 17.08.2015 11:44
Letzter Beitrag: GerdW
  MultiColumn Listbox Reihen number Fabian257 6 5.364 16.06.2015 10:36
Letzter Beitrag: Fabian257
  Probleme mit "Fract/Exp String To Number Function " Schmankerl 3 5.078 23.01.2014 12:53
Letzter Beitrag: jg

Gehe zu: