MATLAB Answers

Matlab running slower on Linux than Windows 7

74 views (last 30 days)
I am having a problem running a piece of code with Matlab 2014a with a Ubuntu 16.04 installation. The computer running Ubuntu performs worse than my laptop running Windows 7, in that the same piece of code takes over twice as long to run on the computer with Ubuntu (~ 50 minutes for computer with Ubuntu, 23 minutes for laptop with Windows) for reasons that I don't understand. There are no differences in the code between comparisons.
The hardware for the computer with Ubuntu is an intel core i7-4770 cpu @ 3.4 GHz (8 cores) with 32 Gb of ram. The hardware for the laptop running Windows 7 is an intel core i5-3427U cpu @ 1.8 GHz (4 cores) with 4 Gb of ram.
The benchmark results for the laptop with Windows 7 is not great:
While the benchmark results for the computer with Ubuntu are much better:
I did try increasing the Java heap memory to see if this would speed things up on the ubuntu computer. I also tried increasing the process priority with the command "renice" but that didn't change anything. My complaint is that the computer running Ubuntu takes much longer to run the same code, but I don't have any errors or anything else to go off of besides comparing run times. I'm quite confused as to why I see worse performance with a more powerful machine, and I would appreciate any insight or help with the problem, thanks!

  5 Comments

Show 2 older comments
Walter Roberson
Walter Roberson on 2 Mar 2018
Note that MATLAB will not use hyperthreads by default, as hyperthreads can be slower that not hyperthreading for heavy computation (hyperthreading makes the CPUs run hotter, so CPUs often deliberately slow down for hyperthreading to control heat. But hyperthreading works by taking over when the other thread is idle for I/O, and for heavy mathematics the cores are not idle for I/O -- so you end up running the computations in serial anyhow, but at reduced speeds compared to if you had not tried to use hyperthreading.)
... Not that this explains what you are seeing: just don't expect 8 cores worth of performance.
Katherine
Katherine on 4 Mar 2018
That is good to know, thank you for the information! But I agree that I don't think this explains the differences in run-time...
Benjamin Kraus
Benjamin Kraus on 5 Mar 2018
What version of MATLAB are you running on both machines? There are been a lot of performance optimizations, so if Windows 7 is running the newer version of MATLAB, that could explain the difference.

Sign in to comment.

Accepted Answer

Philip Borghesani
Philip Borghesani on 5 Mar 2018
You appear to be running different versions of MATLAB on the two machines (the list of reference computers is different in you bench output). That could easily explain the difference, especially if the Windows machine is running R2015b or later because of better optimizations.

  2 Comments

Katherine
Katherine on 6 Mar 2018
Yes this comment and the last comment on the previous answer are are correct; the computer with Ubuntu was running Matlab 2014a while the windows machine was running Matlab 2016a. Installing a trial version of 2017b on the machine with Ubuntu solves this problem and runs in half the time as the windows machine, which is about what I expected...
Out of curiosity, the profiler found that 50% more time was spent on a if conditional called each iteration for the Ubuntu machine running 2014a. I know that if statements can be slow but how do the "better optimizations" change this? (I know that's a broad question, but it would help to know for writing future code what optimizations would cause a if conditional to run faster with Matlab...)
Walter Roberson
Walter Roberson on 6 Mar 2018
Generally speaking, vectorized test and application of operation along a mask is typically faster than looping with conditional.
However this is not always the case: processing the memory needed to vectorize tests can end up costing more than you save.

Sign in to comment.

More Answers (0)