% Master-Programm: %----------------- % Slave-Prozesse starten slaves=dpspawn(hosts,'slave'); % Auftraege verteilen dpscatter(slaves,tasks); % Ergebnisse empfangen results=dpgather(slaves);
% Slave-Programm: %---------------- % Auftraege empfangen subtasks=dprecv(); ... % Ergebnisse senden dpsend(subresults);
results=dpeval(hosts,'slave',tasks);
results=dfeval('slave',tasks);Die bisherigen Codefragmente zeigen deutlich, dass sich der im Beitrag diskutierte höhere Parallelisierungsaufwand keineswegs in der Anzahl der Programmzeilen, die in unmittelbarem Zusammenhang mit der Parallelverarbeitung stehen, widerspiegelt. In allen drei vorangegangenen Lösungen wurden funktionsorientierte Schnittstellen der DP- bzw. DC-Toolbox genutzt. Die DC-Toolbox stellt darüberhinaus auch eine objektorientierte Schnittstelle zur Verfügung, deren Verwendung das nachfolgende Codefragment präsentiert.
% Jobmanager finden jm=findResource('jobmanager'); % Job erzeugen job=jm.createJob; % Tasks erzeugen for i=1:length(tasks) job.CreateTask('slave',1,tasks{i}); end % Job absenden job.submit; % Ergebnisse auslesen results=job.getAllOutputArguments;Das Codefragment zeigt, dass der Codierungsaufwand auf Basis der objektorientierten Schnittstelle gegenüber der funktionsorientierten Schnittstelle wesentlich höher ist. Über die objektorientierte Schnittstelle der DC-Toolbox stehen dem Anwender umfangreiche Steuerungsmöglichkeiten zur Verfügung. Ein direkter Nutzen im Rahmen des Testproblems ergibt sich daraus jedoch nicht.
21. März 2006, R. Fink, S. Pawletta