I have an ill-conditioned 1005x256 matrix and I can't compute its SVD in a reasonable amount of time. Other matrices of the same size don't present a challenge, but my user reports 20+ minute waiting times. I've created a gist on Github which defines it and tries to compute its rank. I stepped through with the debugger and found the problem child to be the call to svd. On a different machine running 2018a this script runs without incident in just under 2 seconds.
Here's some info:
>> version -blas
'Intel(R) Math Kernel Library Version 2017.0.31 Product Build 20170606 for Intel(R) 64 architecture applications, CNR branch unknown
'
>> ver
-----------------------------------------------------------------------------------------------------
MATLAB Version: 9.4.0.813654 (R2018a)
MATLAB License Number: xxxxxxxxxxxxxx
Operating System: Microsoft Windows 10 Pro Version 10.0 (Build 16299)
Java Version: Java 1.8.0_144-b01 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
-----------------------------------------------------------------------------------------------------
MATLAB Version 9.4 (R2018a)
Simulink Version 9.1 (R2018a)
Aerospace Blockset Version 3.21 (R2018a)
Aerospace Toolbox Version 2.21 (R2018a)
Antenna Toolbox Version 3.1 (R2018a)
Audio System Toolbox Version 1.4 (R2018a)
Automated Driving System Toolbox Version 1.2 (R2018a)
Bioinformatics Toolbox Version 4.10 (R2018a)
Communications System Toolbox Version 6.6 (R2018a)
Computer Vision System Toolbox Version 8.1 (R2018a)
Control System Toolbox Version 10.4 (R2018a)
Curve Fitting Toolbox Version 3.5.7 (R2018a)
DSP System Toolbox Version 9.6 (R2018a)
Data Acquisition Toolbox Version 3.13 (R2018a)
Database Toolbox Version 8.1 (R2018a)
Datafeed Toolbox Version 5.7 (R2018a)
Econometrics Toolbox Version 5.0 (R2018a)
Embedded Coder Version 7.0 (R2018a)
Filter Design HDL Coder Version 3.1.3 (R2018a)
Financial Instruments Toolbox Version 2.7 (R2018a)
Financial Toolbox Version 5.11 (R2018a)
Fixed-Point Designer Version 6.1 (R2018a)
Fuzzy Logic Toolbox Version 2.3.1 (R2018a)
GPU Coder Version 1.1 (R2018a)
GUI Layout Toolbox Version 2.3.4 (R2018b)
Global Optimization Toolbox Version 3.4.4 (R2018a)
HDL Coder Version 3.12 (R2018a)
HDL Verifier Version 5.4 (R2018a)
Image Acquisition Toolbox Version 5.4 (R2018a)
Image Processing Toolbox Version 10.2 (R2018a)
Instrument Control Toolbox Version 3.13 (R2018a)
LTE HDL Toolbox Version 1.1 (R2018a)
LTE System Toolbox Version 2.6 (R2018a)
MATLAB Coder Version 4.0 (R2018a)
MATLAB Compiler Version 6.6 (R2018a)
MATLAB Compiler SDK Version 6.5 (R2018a)
MATLAB Report Generator Version 5.4 (R2018a)
Mapping Toolbox Version 4.6 (R2018a)
Model Predictive Control Toolbox Version 6.1 (R2018a)
Model-Based Calibration Toolbox Version 5.4 (R2018a)
Neural Network Toolbox Version 11.1 (R2018a)
OPC Toolbox Version 4.0.5 (R2018a)
Optimization Toolbox Version 8.1 (R2018a)
Parallel Computing Toolbox Version 6.12 (R2018a)
Partial Differential Equation Toolbox Version 3.0 (R2018a)
Phased Array System Toolbox Version 3.6 (R2018a)
Polyspace Bug Finder Version 2.5 (R2018a)
Polyspace Code Prover Version 9.9 (R2018a)
Powertrain Blockset Version 1.3 (R2018a)
Predictive Maintenance Toolbox Version 1.0 (R2018a)
RF Blockset Version 7.0 (R2018a)
RF Toolbox Version 3.4 (R2018a)
Risk Management Toolbox Version 1.3 (R2018a)
Robotics System Toolbox Version 2.0 (R2018a)
Robust Control Toolbox Version 6.4.1 (R2018a)
Signal Processing Toolbox Version 8.0 (R2018a)
SimBiology Version 5.8 (R2018a)
SimEvents Version 5.4 (R2018a)
Simscape Version 4.4 (R2018a)
Simscape Driveline Version 2.14 (R2018a)
Simscape Fluids Version 2.4 (R2018a)
Simscape Multibody Version 5.2 (R2018a)
Simscape Power Systems Version 6.9 (R2018a)
Simulink 3D Animation Version 8.0 (R2018a)
Simulink Check Version 4.1 (R2018a)
Simulink Code Inspector Version 3.2 (R2018a)
Simulink Coder Version 8.14 (R2018a)
Simulink Control Design Version 5.1 (R2018a)
Simulink Coverage Version 4.1 (R2018a)
Simulink Design Optimization Version 3.4 (R2018a)
Simulink Design Verifier Version 3.5 (R2018a)
Simulink Desktop Real-Time Version 5.6 (R2018a)
Simulink PLC Coder Version 2.5 (R2018a)
Simulink Real-Time Version 6.8 (R2018a)
Simulink Report Generator Version 5.4 (R2018a)
Simulink Requirements Version 1.1 (R2018a)
Simulink Test Version 2.4 (R2018a)
Spreadsheet Link Version 3.3.3 (R2018a)
Stateflow Version 9.1 (R2018a)
Statistics and Machine Learning Toolbox Version 11.3 (R2018a)
Symbolic Math Toolbox Version 8.1 (R2018a)
System Identification Toolbox Version 9.8 (R2018a)
Text Analytics Toolbox Version 1.1 (R2018a)
Trading Toolbox Version 3.4 (R2018a)
Vehicle Dynamics Blockset Version 1.0 (R2018a)
Vehicle Network Toolbox Version 4.0 (R2018a)
Vision HDL Toolbox Version 1.6 (R2018a)
WLAN System Toolbox Version 1.5 (R2018a)
Wavelet Toolbox Version 5.0 (R2018a)

2 Comments

Jan
Jan on 12 Jun 2019
Edited: Jan on 12 Jun 2019
You have provided the data, then what is the corresponding code?
Maybe the slow computer just run out of memory and the slow virtual RAM on the disk caused the delay. You did not provide enough information to exclude this.
The code is rank(m), which is the last line of the script I supplied. I also mentioned: "other matrices of the same size don't present a challenge", and I suspect that the computer did indeed run out of memory, which is the problem exactly: that should not be the case for a matrix of this size.
For the record:
>> memory
Maximum possible array: 126976 MB (1.331e+11 bytes) *
Memory available for all arrays: 126976 MB (1.331e+11 bytes) *
Memory used by MATLAB: 7944 MB (8.330e+09 bytes)
Physical Memory (RAM): 130742 MB (1.371e+11 bytes)
* Limited by System Memory (physical + swap file) available.

Sign in to comment.

 Accepted Answer

Christine Tobler
Christine Tobler on 12 Jun 2019

0 votes

This sounds like a bug. It shouldn't be due to memory issues, SVD uses the same amount of memory if the matrix size and the syntax are the same - I expect the iterative solver gets stuck somewhere for this specific matrix.
This seems to be machine-dependent, I couldn't reproduce it on my Windows machine. Could you give us some more information about the machine you are using (type of the CPU). In particular, it would be great to know if your CPU supports AVX-512 instructions.

7 Comments

I just asked a colleague with a Windows AVX-512 machine to try to reproduce this - he couldn't reproduce the issue either. So any more detailed information about your CPU would be very helpful.
Alan Liddell
Alan Liddell on 12 Jun 2019
Edited: Alan Liddell on 12 Jun 2019
That's correct, I haven't been able to reproduce it on any other machine. But I can reproduce it like clockwork on my user's machine.
FWIW, that machine is running Windows 10 Pro, with an Intel Core i9-7900X CPU. According to this sheet it does support AVX-512. On the other hand, the the output of version -blas has CNR branch unknown (see question), whereas on my and my colleagues' machines it gives CNR branch AVX2.
This seems like a hard problem to solve; I couldn't find any machines of the same type to try to reproduce this issue.
Just to be sure, can you confirm that the following steps reproduce the issue:
  • Start a new MATLAB on the i9-7900X machine.
  • Run the MATLAB script lockup.m
  • This takes ~20 minutes.
  • On the same machine, running "rng default; rank(rand(size(m)))" takes under a second.
Indeed, now even I can't reproduce it. I started running that script again, my user canceled it some time later, and testing it could give run times from 5 minutes for each matrix to under half a second for both. I'll update this post if I see it again. Sorry for the trouble.
Thank you for letting us know. I've seen another case where an i9-7900x processor was having issues, so there might be some problem with that particular type of processor.
Hi Christine,
My user is reporting this same issue on another 7900X machine, FWIW.
Thanks for letting me know. I'm afraid I'm not sure what to do about these issues with the i9 79** machines, but having more data about them is definitely good.

Sign in to comment.

More Answers (0)

Products

Release

R2018a

Tags

Community Treasure Hunt

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

Start Hunting!