MATLAB: Convert code to run on parallel

cpuforgpuloopsMATLABparallel computingParallel Computing Toolboxparfor

Hi guys,
I have a file that takes 340 seconds to run, I've learned just now that I can use my GPU instead of the CPU to run this code faster.
How is that done? is there any good recommendations for where and how to learn to use the Parallel computing toolbox?
Here's part of my code, if anyone can give me an example on it that'd be amazing.
%% Scan for news, filter them and assign tickers
for symboli = 1:NofStocks
newsone = news(cMoneyNet,'Number',NewsNum,'Symbol',symbol(symboli),'SearchTerm',term); % get news type 1
newstwo = news(cMoneyNet,'Number',NewsNum,'Symbol',symbol(symboli),'Category',category); % get news type 2
% Filter the news (type 1)
filteri = startsWith(newsone.ArticleTitle,"Analyst Actions") ...
| contains(newsone.ArticleTitle,"PT") ...
& not(contains(newsone.ArticleTitle,"OPTIONS"));
newsone = newsone(filteri,:);
% Assign a ticker to each piece of news
newsone.Ticker(:,1) = symbol(symboli);
newstwo.Ticker(:,1) = symbol(symboli);
% Join the news - type 1 and type 2
newsonetwo = vertcat(newsone,newstwo);
% Store the news from this ticker before moving to the next one
newsdata{symboli,1} = newsonetwo;
end

Best Answer

  • It's hard to tell exactly what computations you're performing there. It would be better if you could give us a reproducible example of something that is particularly time-consuming in your workflow. Use the MATLAB Profiler to work out where this might be, and slim this down to a standlone piece of code that we can run.
  • The Profiler might already give you some idea as to where you can save time. It's always worthwhile improving your "serial" code as much as you can before you attempt to go parallel
  • Whether the GPU is appropriate depends very much on your problem type. GPUs are great when you have big chunks of numeric data on which you wish to apply vectorised operations. It looks like perhaps you have table data containing text, the GPU would not work for that, but perhaps process-based parallelism might help (i.e. using parfor).
  • It might help to look through this page telling you which Parallel Computing option might work best for you.
Related Question