MATLAB DualCPU Hyper-Threading support
    5 views (last 30 days)
  
       Show older comments
    
Hello everyone.
I'm going to buy a dual CPU workstation and would like to know if a vectorized MATLAB code uses 
all the cores of both CPUs without the need to 
use the Parallel Computing Toolbox.
Thanks!
4 Comments
  Jan
      
      
 on 30 Jun 2019
				I do not understand what 
  use of " : " instead of  " for " loop
means. Of course it depends on the specific code, how it is executed. Calling the colon operator "." a "vectorization function" is strange. 
If your code exhausts 12 threads, you can expect that it let 8 threads work efficiently also. So what exactly is your question?
Accepted Answer
  Jan
      
      
 on 30 Jun 2019
        
      Edited: Jan
      
      
 on 1 Jul 2019
  
      Yes. Matlab will use the available cores. At least most likely. Matlab might split the array columnwise and if the input has 5 columns, there is a chance that only 5 cores are used. Many functions are multi-threaded, but this is applied for "large" arrays only.
I'm not sure, if hyper-threading is used in Matlab. Maybe only the physical cores are used for the reason of efficiency.
Note that:
[m,n]=size(matrix);
for i=1:m
  for l=1:n
    matrix(i,l) = matrix(i,l)^2;
  end
end
and
[m,n]=size(matrix)
matrix(:,:)=matrix(:,:)^2;
do not compute the same result. The 2nd code works for square matrices only and is a matrix multiplication. Equivalent to the first code would be:
% No need to determine the size...
matrix(:,:) = matrix(:,:) .^ 2;
%                         ^ elementwise squaring
It would be even more efficient, to omit the (:,:):
matrix = matrix .^ 2;
More Answers (0)
See Also
Categories
				Find more on Performance and Memory in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!