Sorry that this is quite a specific question but I need to diagonalise large matrices for the problem I'm trying to solve and can't for the life of me work out what's going on:
I was expecting that diagonalising these would be much quicker on my desktop than laptop, however there seems to be very little performance difference and in fact my more powerful desktop - every aspect of the system is significantly superior to my laptop - is about 15% slower.
The simplest code that produces the difference is:
AbsoluteTiming[Eigensystem[Table[RandomReal[{0, 1}], {i, 10000}, {j, 10000}],-10, Method -> "Arnoldi"];]
This takes on average about 64 seconds on my desktop but around 58 secs on my laptop. For the specific task I'm trying to solve that difference actually seems larger too.
Any idea what's going on and if there's anyway to solve it? I've read that Mathematica can be a slower on AMD chips than Intel but I seem to get faster performance in almost every task on my desktop than on my laptop... apart from this specific one.
Full specs:
Desktop: AMD Ryzen 5 2600 3.4 GHz 6-core (3.7 GHz Boost), 32 GB 3000 MT/s (2x16 GB) RAM, Intel EVO 970(R 3500, W 2200)
Laptop (Surface Book 1): Intel i5-6300U 2.4 GHz Dual Core (3.0 GHz Boost), 8 GB 1866 MT/s (2x4 GB) RAM, SSD (R 1500, W 600)
Edit: I notice that the CPU usage in Task Manager is slightly different - running at around 60-65% for the laptop but at 50% for the desktop. Is there perhaps a different implementation of Arnoldi for Intel that can take advantage of multiple cores? Edit 2 Logical processors view of task manager for desktop
Needs["Benchmarking`"]; BenchmarkReport[]
on both configurations. The results of tests 9 and (maybe 8 and 10) should be of particular interest. If the result of test 9 is similar to your tests withEigensystem
, this might be an indication for both suboptimal BLAS and fewer FMA units on the Ryzen. Btw., it would also be interesting to see whetherModule[{m1, m2}, AbsoluteTiming[SeedRandom[1]; m1 = RandomComplex[{}, {1050, 1050}]; m2 = RandomComplex[{}, {1050, 1050}]; Do[m1.m2, {12}]]]
(test 9 for complex numbers) leads to unexpected timings. $\endgroup$