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 

Parallelisieren von Schleifen



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!

15.03.2013, 11:01 (Dieser Beitrag wurde zuletzt bearbeitet: 15.03.2013 16:36 von jg.)
Beitrag #1

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
Parallelisieren von Schleifen
Hallo,

das Tool zum finden ist super nur habe ich ein Überlegungsprobem mit den Schleifen "möglicherweise parallelisierbar" und da geht es um mögliche Nebenwirkungen (side effects) der beinhaltenden VIs.

1. *side effects* ich denke, wenn das VI bei seiner Rechnung nichts beeinflusst, dass den Input dieses VI beeinflusst sollte das gehen? Also Output der VIs und globale Variabe. - stimmt das?

2. Aber damit das beinhaltende VI mehrfach laufen kann muss ich es doch reentrant kompilieren? - richtig?

3. aber auch die komplette VI Kette, wenn sie in Schleifen Werte speichert, reentrant?

Bitte um Hilfe

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
15.03.2013, 16:35
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: paralellisieren von Schleifen
(15.03.2013 11:01 )gottfried schrieb:  1. *side effects* ich denke, wenn das VI bei seiner Rechnung nichts beeinflusst, dass den Input dieses VI beeinflusst sollte das gehen? Also Output der VIs und globale Variabe. - stimmt das?
Sorry, verstehe deine Frage nicht.
(15.03.2013 11:01 )gottfried schrieb:  2. Aber damit das beinhaltende VI mehrfach laufen kann muss ich es doch reentrant kompilieren? - richtig?
Ja.
(15.03.2013 11:01 )gottfried schrieb:  3. aber auch die komplette VI Kette, wenn sie in Schleifen Werte speichert, reentrant?
Ja, wenn die SubVIs auch parallel laufen sollen.

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
16.03.2013, 10:54 (Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2013 10:57 von gottfried.)
Beitrag #3

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
RE: Parallelisieren von Schleifen
Hallo,

hier meine Erfahrungen:

* das in Frage kommende Programm mit Testdaten laufen lassen und das Resultat notieren
* mit dem Taskmanager schauen ob noch freie Kapazität da ist
* mit Profile die rechenzeitintensiven VIs ausfindig machen - die sind das Ziel der Parallelisierung
* die Schleife die diese VIs beinhaltet parallelisieren
* rechenzeitintensiven VIs reentrant machen (preallocate)
* alle sub VIs zwischen der Schleife und dem rechenintensiven VI müssen reentrant sein
* Programm noch einmal laufen lassen und sich freuen (oder wundern wieso etwas anderes herauskommt :-)
* Ist nun die Rechenzeit auf 100%? - OK

funktioniert toll.

Stolpersteine (für mich) waren:

* in VIs gespeicherte Werte - diese VIs sind grundsätzlich nicht parallelisierbar
* in Vision sind es die mit IMAQ_create eingegebenen (fixen) Namen. Da hilft sich die Referenz des VIs zu nehmen und nachzusehen ob das ein Clon ist und in diesem Fall den ClonNamen anzufügen.

Gottfried

PS.: vielleicht können noch Andere hier ihre Erfahrungen zu einem gemeinsamen Tutorium zusammenfügen.

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.03.2013, 11:07
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Parallelisieren von Schleifen
Hört sich alles gut an. Aber bevor ich selbst nach diesem sagenhaftem Tool google: Ein Link oder sonstiger Finde-Hinweis wäre schon nicht schlecht. Oder bin ich hier der einzige Ahnunglose und blamiere mich jetzt mit dieser Amerkung bis auf die Knochen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.03.2013, 11:29
Beitrag #5

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
RE: Parallelisieren von Schleifen
Dieses "Tool" ist Teil von LV:
Tools | Profile | find parallelizable Loops

So weit

Was mich aber irritiert (ich nicht erklären kann) ist warum die Anzeige "s/Function call" (unten) Schwachsinn ausgibt. Kannst Du das erklären?

Danke

Gottfried


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
16.03.2013, 12:13
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Parallelisieren von Schleifen
Hallo Gottfried,

definiere "Schwachsinn"... Big Grin

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.03.2013, 15:50
Beitrag #7

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
RE: Parallelisieren von Schleifen
"Schwachsinn" lt. EDV-Duden von 1732 als definiert offensichtlich unzutreffendes Resultat einer Sequenz von Maschinenbefehlen die auf den ersten Blick richtig aussehen.

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.03.2013, 16:03 (Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2013 16:04 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Parallelisieren von Schleifen
Hallo Gottfried,

du kennst das Spielchen doch schon: Welche Daten werden erwartet und welche werden stattdessen angezeigt?

Nur aufgrund der Aussage "Indicator zeigt Schwachsinn an", unterlegt mit einem Bildchen, kann hier wohl kaum jemand was substanzielles beitragen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.03.2013, 17:38
Beitrag #9

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
RE: Parallelisieren von Schleifen
Hallo GerW,

Du hast _absolut_ recht. Der Effekt war (für mich) tatsächlich verblüffend: die angezeigte Rechenzeit ist gestiegen, gestoppt ist sie aber gefallen - daher meine Reaktion "Schwachsinn".

Nach einigem Abstand musste ich aber den Begriff "Schwachsinn" in eine selbstktitischere Nomenklatur "adaptieren": der gewählte Code zeigt die Rechenzeit in einem Thread, und das wird mehr wenn der Prozessor überbeschäftigt ist. Wenn ich die Zeitnehmung außerhalb der Schleife mache bekomme ich tatsächlich etwa 1/3 der Rechenzeit ohne Parallelisierung.

Gottfried hat sich geirrt nicht der Compiler ... wieder einmal .... Cool

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
28.03.2013, 10:03 (Dieser Beitrag wurde zuletzt bearbeitet: 28.03.2013 10:06 von gottfried.)
Beitrag #10

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
RE: Parallelisieren von Schleifen
Hier noch einige Zusätze zu der weoter oben formulierten Punkteliste:

TEST:

* einen Durchlauf (aber mit heftiger CPU Last) ohne Parallelisierung investieren und einen mit
* wenn etwas anderes herauskommt die einzelnen Parallelisierungen einzeln ausschalten
* ... identische "Fälle" mehrfach "parallel" rechnen
* Paralellisierte Schleifen kann man im Prallelisierungs-Finde-Tool wieder finden Big Grin
* zuerst die CPU Zeit messen und _dann_ erst Paralellisieren, "kleine" Schleifen machen diesbezüglich keinen Sinn

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Kommunikation von mehreren Netzteilen mit gleicher instr.lib parallelisieren Leticron 7 5.115 20.05.2016 16:17
Letzter Beitrag: rolfk

Gehe zu: