Erroneous eigenvalue computation for large matrices in R2016a when forcing single threaded execution
8 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2018 年 1 月 2 日
回答済み: MathWorks Support Team
2018 年 1 月 3 日
Why does MATLAB R2016a produce wrong eigenvalues for large matrices (N>7799) when forced to run as a single threaded application?
Example code:
%Diagonalization of a tridiagonal matrix.
t=1; %off-diagonal elements
tic;
%creates tridiagonal matrix of size NxN
T=gallery('tridiag',N,t,0,t);
T=full(T);
T(1,N)=t;
T(N,1)=t;
[V,D]=eig(T,'vector');%compute eigenvalues and store in vector
fprintf('Invoking "eig()" yields eigenvalues:\n')
fprintf('max: %2.4f \n',max(D))
fprintf('min: %2.4f \n',min(D))
toc;
exit
Execution Command:
taskset -c 0 /opt/MATLAB/R2016a/bin/matlab -nodisplay -nodesktop -nosplash -nojvm -r "N=7800;test"
The above command yields wrong eigenvalues. The correct max and min eigenvalues are supposed to be 2 and -2 respectively.
However, the following multithreaded implementation produces accurate results:
taskset -c 0,1 /opt/MATLAB/R2016a/bin/matlab -nodisplay -nodesktop -nosplash -nojvm -r "N=7800;test"
採用された回答
MathWorks Support Team
2018 年 1 月 2 日
CAUSE:
This error is due to a bug in the Intel Math Kernel Library 11.2.3 that was shipped with MATLAB R2016a. This is a bug that is present only in MATLAB R2016a.
SOLUTION:
Please upgrade to a different release of MATLAB in order to avoid this error.
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!