【问题标题】:How to quickly load a small variable from huge .mat files?如何从巨大的 .mat 文件中快速加载一个小变量?
【发布时间】:2016-05-01 08:51:06
【问题描述】:

我有一个trained_model.mat 文件,其大小约为 23 GB。

这个文件有6个变量,

  • 其中 4 个是 1 X 1 双打
  • 1 是 48962 X 1 双精度
  • 1 是一个TreeBagger 对象(占用最大大小)。

我想快速加载,只有名称为Y_hat48962 X 1 变量,但它就像永恒一样。我在具有 256GB RAM 的集群上的计算节点上运行此代码,并且此系统上没有运行其他用户进程。

我已经尝试过使用load('trained_model.mat', 'Y_hat');,但这也需要很长时间。任何建议将不胜感激。

【问题讨论】:

  • 以后最好还是分开保存
  • 文件 i/o 可能是您的瓶颈,因为计算节点需要访问文件系统才能读取 mat 文件。您可以通过在主节点上运行同一行代码来验证是否是这种情况。到那里需要多长时间?另外,你能ssh从一个计算节点到主节点吗?
  • 你试过matfile吗?
  • @AnderBiguri 是的,我意识到了这一点,我已经开始单独保存大文件。但是,我必须花费大量时间阅读已保存的结果。
  • 确实,超级计算机最大的问题就是内存访问慢!

标签: matlab centos


【解决方案1】:
% Create a MAT-file object, m, connected to the MAT-file

% The object allows you to access and change variables directly in a MAT-file

% without having to load the variables into memory

m = matfile('trained_model.mat');

your_data_48962x1 = m.Y_hat;

% It should be faster than load

more info on mathworks

【讨论】:

    猜你喜欢
    • 2021-07-07
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2016-12-03
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多