如何在Linux Matlab中获得矩阵计算的自由交换内存



情况:估计是否可以在Linux Matlab中使用Ram和Swap计算大矩阵
我需要MemSwap的总和,这是Linux 中标题totalfree -m的相应值

              total        used        free      shared  buff/cache   available
Mem:           7925        3114        3646         308        1164        4220
Swap:         28610          32       28578

利用在Matlab中实现自由内存

% http://stackoverflow.com/a/12350678/54964
[r,w] = unix('free | grep Mem');
stats = str2double(regexp(w, '[0-9]*', 'match'));
memsize = stats(1)/1e6;
freeRamMem = (stats(3)+stats(end))/1e6;

Matlab中的自由交换内存:。。。

Matlab的内存需求与矩阵大小的关系:。。。

测试翻毛皮的第二次迭代

Suever的命令给了我29.2GB,这与free的输出相对应,所以是正确的

$ free
              total        used        free      shared  buff/cache   available
Mem:        8115460     4445520     1956672      350692     1713268     3024604
Swap:      29297656       33028    29264628

系统:Linux Ubuntu 16.04 64位
Linux内核:4.6
Linux内核选项:wl、zswap
Matlab:2016a
硬件:Macbook Air 2013中期
内存:8 GB
交换:SSD上的28 Gb(像在线程中一样设置如何分配更多空间进行交换并将其大小增加到大于Ram?)
SSD:128 GB

您只需对发布的代码进行轻微修改即可获得掉期金额。

function freeMem = freeMemory(type)
    [r, w] = unix(['free | grep ', type]);
    stats = str2double(regexp(w, '[0-9]*', 'match'));
    memsize = stats(1)/1e6;
    if numel(stats) > 3
        freeMem = (stats(3)+stats(end))/1e6;
    else
        freeMem = stats(3)/1e6;
    end
end
totalFree = freeMemory('Mem') + freeMemory('Swap')

要计算矩阵占用的内存量,请使用数据类型的大小并乘以元素数作为第一近似值。

最新更新