Erroneous eigenvalue computation for large matrices in R2016a when forcing single threaded execution
Show older comments
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"
Accepted Answer
More Answers (0)
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!