MATLAB DualCPU Hyper-Threading support

1 visualización (últimos 30 días)
Emiliano Rosso
Emiliano Rosso el 30 de Jun. de 2019
Editada: Jan el 1 de Jul. de 2019
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 comentarios
Jan
Jan el 30 de Jun. de 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?
Emiliano Rosso
Emiliano Rosso el 30 de Jun. de 2019
[m,n]=size(matrix);
for i=1:m
for l=1:n
matrix(i,l)=matrix(i,l)^2;
end
end
I vectorize the code :
[m,n]=size(matrix)
matrix(:,:)=matrix(:,:)^2
if I use 1 cpu xeon w3550 4 cores 8 thread:
1200 sec.
if I use 1 cpu xeon w3680 6 cores 12 thread:
800 sec.
The 2 cpu are identical except for the number of cores and I can verify that all thread are
working in both cases.
Now :
if I use 2 cpu xeon w3680 6 cores 12 thread does my code will use the second cpu?

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 30 de Jun. de 2019
Editada: Jan el 1 de Jul. de 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;
  1 comentario
Emiliano Rosso
Emiliano Rosso el 30 de Jun. de 2019
Thanks for your answer.
The " ^ " instead of ".^ " was a mistake.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre MATLAB Coder en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by