开发者

Non-linear performance of Java function in parallel MATLAB

Recently, I implemented parallelisation in my MATLAB program, much to the suggestions offered in Slow xlsread in MATLAB. However, implementing the parallelism has cropped up another problem - non-linearly increasing processing time with increasing scale.

The culprit seems to be the java.util.concurrent.LinkedBlockingQueue method as can be seen from the attached images of profiler and the corresponding condensed graphs.

Problem: How do I remove this non-linearity as my work involves processing more than 1000 sheets in single run - which would take an insanely long time?

Note: The parallelised part of the program involves just reading all the .xls files and storing them in matrices, after which I start the remainder of my program. dlmwrite is used towards the end of the program and optimization on its time is not really required, although cou开发者_开发技巧ld also be suggested.


Non-linear performance of Java function in parallel MATLAB

Non-linear performance of Java function in parallel MATLAB


Non-linear performance of Java function in parallel MATLAB

Non-linear performance of Java function in parallel MATLAB


Culprit:

Non-linear performance of Java function in parallel MATLAB

Code being parallelised:

parfor i = 1:runs
    sin = 'Sheet';
    sno = num2str(i);
    sna = strcat(sin, sno);

    data(i, :, :) = xlsread('Processes.xls', sna, '' , 'basic');
end


Doing parallel IO operation is likely to be a problem (could be slower in fact) unless maybe if you keep everything on an SSD. If you are always reading the same file and it's not enormous, you may want to try reading it prior to your loop and just doing your data manipulation in parallel.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜