MATLAB DualCPU Hyper-Threading support

조회 수: 3 (최근 30일)
Emiliano Rosso
Emiliano Rosso 2019년 6월 30일
편집: Jan 2019년 7월 1일
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
Jan
Jan 2019년 6월 30일
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 2019년 6월 30일
[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?

댓글을 달려면 로그인하십시오.

채택된 답변

Jan
Jan 2019년 6월 30일
편집: Jan 2019년 7월 1일
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
Emiliano Rosso
Emiliano Rosso 2019년 6월 30일
Thanks for your answer.
The " ^ " instead of ".^ " was a mistake.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by