profiling function call in backgroundpool
2 views (last 30 days)
Show older comments
Matthias Wurm
on 27 Feb 2025
Answered: Matthias Wurm
on 28 Feb 2025
I have two versions of my function (OLD and NEW).
I am trying to optimize the speed of my code. In normal mode, NEW runs faster than OLD.
When I use parfeval to run the functions in the backgroundpool, OLD is faster than NEW.
How can I find out what slows down NEW in the backgroundpool?
3 Comments
Oliver Jaehrig
on 27 Feb 2025
Can you check if you can use:
Rick Amos
on 27 Feb 2025
The mpiprofile feature is not yet supported for thread-based pools, however the underlying profile feature has been since R2023b. If you have R2023b or later, you can do the following to profile code running on the background until we do have something like mpiprofile:
info = fetchOutputs(parfeval(backgroundPool, @profileMyExample, 1));
profview(0, info);
function info = profileMyExample
profile("on");
runMyExample;
profile("off");
info = profile("info");
end
function runMyExample
% Some code to be profiled
for ii = 1:10
eig(rand(1000));
end
end
In terms of the differences in performance, the main suspect would be whether the function is itself implicitly multi-threaded and something changed when running from the background. If you do maxNumCompThreads(1), does the performance match between running normally and running in the background?
Accepted Answer
More Answers (0)
See Also
Categories
Find more on Programming Utilities in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!