problems at using the "parfor" loop caused by "print " command

Hi All,
I'm having a problems at using the "parfor" loop. The main idea of the program, parallel processing txt files. For each txt file, I create two graphs based on the information contained in it. The graphs are created in the program "MainInd". Then I send the "handles" of the graphs to the function "Savegraphs". The task of the "Savegraphs" function, to save the created graphs using the cycle "for" via the command “print”. Error which Matlab returns is as follows:
_Error using parallel_function (line 598) Problem converting PostScript. System returned error: -1.Failed to convert to output format; Ghostscript status: -100. Unable to open the initial device, quitting. Unable to open the initial device, quitting. Error stack: ghostscript.m at 188 print>LocalPrint at 311 print.m at 237 Savegraphs.m at 17
Error in MainInd (line 10) parfor idxFileName = 1:N_
The functions "MainInd" and "Savegraphs" look as follow:
MainInd.m
clear
inFolder = 'C:\Program Files\MATLAB\Last\work\parallel_comp\Jobexample\In\';
listOfFiles = dir([inFolder '*.txt']);
N = length(listOfFiles);
fileNames = cell(1,N);
parfor idxFileName = 1:N
fileNames{idxFileName} = listOfFiles(idxFileName). name ;
fid = fopen([inFolder fileNames{idxFileName}]);
fprintf('file name: %s\n',fileNames{idxFileName});
vec = fscanf(fid,'%f ');
f1=figure(51);
set(f1,'Visible','off')
set(f1,'PaperUnits','inches','PaperPosition',[0 0 1920 1080])
plot(vec,sin(vec))
title('sin')
f2=figure(2);
set(f2,'Visible','off')
set(f2,'PaperUnits','inches','PaperPosition',[0 0 1920 1080])
plot(vec,cos(vec))
title('cos')
w = getCurrentTask();
Savegraphs(f1,f2,w.ID)
end
The Savegraphs.m:
function Savegraphs(f1,f2,idfold)
newdir = sprintf('%d',idfold);
if ~exist(['G:\',newdir], 'dir')
mkdir(['G:\',newdir]);
end
graphs=[f1,f2];
NamesGr={'f1.png','f2.png'};
filePNGQ={['G:\',newdir,'\',NamesGr{1}],['G:\',newdir,'\',NamesGr{2}]};
for bb=1:length(graphs)
print(graphs(bb),'-dpng','-r1',filePNGQ{bb})
end
If in the "MainInd" I change "parfor" to "for", and Savegraphs (f1, f2, w.ID) to Savegraphs (f1, f2, idxFileName) everything works. In order to run the program you need to change a variable “inFolder” in the "MainInd" – to the corresponding path in your machine and the path G: \ in the "SaveGraphs" - to the corresponding path also. The txt files I attached to the message.
B.R.
Y.

4 comentarios

Which version of MATLAB are you using?
Yura
Yura el 15 de Abr. de 2015
2013a
There were several printing problems that occurred on workers on releases prior to R2014b (the first with the new MATLAB graphics system) - I would recommend upgrading and trying again.
Yura
Yura el 20 de Abr. de 2015
Editada: Yura el 20 de Abr. de 2015
I tried to run the code using MATLAB R2014b, but it doesn’t work. Indeed, Matlab doesn’t returns errors, but also doesn’t returns results. After my attempt I was need, to restart the server, so it just hangs. I think that the question is whether the cores can work in parallel with the print command in automatic mode. If not, how this can be done manually. As I wrote earlier, without the "parfor", all works well, so the problem is not in the "print" command.

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Etiquetas

Preguntada:

el 14 de Abr. de 2015

Editada:

el 20 de Abr. de 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by