Why does mldivide() run fine on system A, but run out of memory on system B, when system B has *more* memory than system A?

6 visualizzazioni (ultimi 30 giorni)
My problem requires I solve a system of the form M*x=b, where M and b are generated in a separate program and read-in when the MATLAB program starts. M is complex, large square (~1,000,000 x 1,000,000), and sparse. I am running the code on a high-performance Linux node at a supercomputer cluster. When I moved to larger problems, I found that I was running out of memory on the 128GB nodes, so I moved my code to the large memory nodes, where an arbitrary (up to the total available memory of 1.5TB) memory limit can be requested. Surprisingly, I found that the same mldivide code that ran perfectly on the standard node ran out of memory on the large memory node. I suspect that MATLAB's memory management sees the full 1.5TB memory, and is more liberal with its memory usage, and less aggressive about clearing up memory, leading to the code hitting the (lower) set memory limit. Because I am charged by the percentage of the 1.5TB of memory I request, simply requesting 100% of the memory is not a realistic option if i am not actually using all of it. How can I solve this issue? Thanks.
  6 Commenti
Daniel Walsh
Daniel Walsh il 11 Lug 2016
Thanks Walter, I checked the settings and the ArraySizeLimitEnabled is set to 1:
<key name="ArraySizeLimitEnabled" visible="true">
<bool>
<value>1</value>
</bool>
</key>
(this was in workspace.settings though - not matlab.settings).
What do you make of this?
Walter Roberson
Walter Roberson il 11 Lug 2016
It might be the problem. I am far from certain that it is the cause of the difficulty you are seeing, but it is the most obvious knob to frob to try to fix the issue.

Accedi per commentare.

Risposte (0)

Categorie

Scopri di più su Entering Commands in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by