Gibt es eine Möglichkeit, eine Anzahl von Variablen an die Arbeiter eines Parpools zu senden?Wie sende ich eine Anzahl von Variablen an die Arbeiter eines Parpools in MATLAB?
Zum Beispiel möchte ich jedem Arbeiter die Gesamtzahl der Arbeiter im Parpool mitteilen. Oder ich habe vielleicht ein paar Berechnungen, die nur einmal gemacht und zwischen bestimmten Arbeitern oder allen geteilt werden. Ich denke, dass es für jeden Arbeiter eine Verschwendung von Ressourcen und Zeit ist, die Berechnungen so zu machen, dass sie nur einmal gemacht werden.
Eg.
*Some calculations processed and a number of variables generated
NumWorkers = 32;
ParallelPool = parpool(NumWorkers);
*Pass the just variables generated to the workers
pctRunOnAll NumWorkers = 32;
pctRunOnAll ParallelScript
Im Moment, ich sage jedem Arbeiter die Gesamtzahl der Arbeiter der pctRunOnAll Befehl Funktion, aber ich mag das nicht, weil ich die Zahl der Arbeitnehmer an zwei Stellen ändern müssen, und es ist wahrscheinlich zu verursachen ein Fehler, wenn ich vermasseln. Ich möchte das auch so erweitern, dass ich eine Reihe von Variablen weitergeben kann.
Dank
Warum bereuen Sie es, Dinge als Skripte statt als Funktionen auszuführen? Ich denke, abhängig davon, was Sie mit ihnen machen wollen und wie viel Sie sie bearbeiten müssen, ist der entscheidende Faktor, ob Code als Skript oder als Funktion ausgeführt werden soll. Ich hätte Parfor verwendet, aber der Simulator, den ich benutze, mag Parfor nicht, weshalb ich stattdessen pctRunOnAll verwende. Haben Sie Ideen, wie Sie Variablen an die Mitarbeiter weitergeben können? Meine einzige Lösung besteht darin, Daten in eine Datei zu schreiben und dann die Worker dazu zu bringen, die Datei zu laden. Aber ich fühle, dass dies eine chaotische Lösung ist. – Bobby
Ich bedauere normalerweise laufende Skripte aus vielen Gründen. Unter anderem bedeutet der globale Arbeitsbereich von Skripts, dass ich Änderungen an Variablen immer ausgeblendet habe, und es ist schwierig, Ein-/Ausgaben in Bezug auf Skripts zu verwalten. Wie Sie hier finden. Es scheint, als ob das Hauptproblem, das Sie haben, ist, dass "Parfor" nicht funktioniert. Warum nicht? Was meinst du "Simulator, den ich benutze, mag Parfor nicht"? Es scheint eine lustige Hacking-Übung zu sein, um den Arbeitern Variablen zuzuweisen, ohne die entsprechenden Werkzeuge (Funktionen und Parfor) zu verwenden, aber ich würde es hassen, sich darauf zu verlassen. (Ich habe mir auch nicht viel Gedanken gemacht.) – Pursuit
Der Simulator mag Parfor nicht, weil er nur einmal instanziiert werden möchte. Das Erstellen mehrerer Instanzen des Simulators funktioniert nicht und verursacht einen Fehler.Parfor arbeitet nicht an einer zeilenweisen Simulation, da der instanziierte Simulator nur jeweils eine Simulation akzeptiert. Daher funktioniert die Verwendung des Simulators mit Parfor nicht und es kann nur an mehreren Instanzen von MATLAB arbeiten - also pctRunOnAll. Es ist genau so, wie der Entwickler die Software erstellt hat. – Bobby