【问题标题】:Memory assignment to MatlabMatlab 的内存分配
【发布时间】:2015-11-02 00:30:17
【问题描述】:

每当我在 matlab 中运行 parfor 时,在任务管理器中我可以看到四核机器上的 4 个会话总共只占用了大约 2.1GB 的内存。有什么方法可以增加给 Matlab 进程的内存? CPU 也是如此 - 它甚至没有达到 50% 的利用率。我什至尝试过增加uservm,但仍然存在。

【问题讨论】:

  • 这是非常依赖问题的。您的计算机将使用的内存/cpu 数量与您正在执行的任务有关,

标签: matlab memory-management parallel-processing


【解决方案1】:

内存不是给予给进程的,而是由进程请求,然后在可用时分配。如果您使用的是 64 位版本的 Matlab,那么它基本上可以访问您机器中可用的内存。 Matlab 根本不要求超过 2.1GB,所以这里没有什么可以做的。是什么让您认为使用更多内存会提高性能?

对于 CPU 利用率,情况要复杂一些。您的机器是真正的四核处理器还是具有超线程的双核处理器。最有可能的是后者,它在任务管理器中显示为具有 4 个内核,但实际上是在处理器中使用巧妙的技巧来使两个不同的进程同时使用同一个内核。如果您的内核负载非常重,则无法使用这些技巧,因此即使您实际使用了所有可用的处理能力,它也会显示为 50% 的利用率。

最后,这非常依赖于应用程序。例如,如果您经常读取或写入磁盘(或少量内存),那么 CPU 利用率可能会低于您的预期,这仅仅是因为它正在等待其他操作完成。

简而言之,在操作系统级别上没有什么可以显着增加 Matlab 可以执行的处理量。通过优化算法,您几乎总能获得更好的收益。

【讨论】:

  • 在这种情况下,让我重新表述一下。如何在代码运行时实时获取 CPU 和内存数据使用情况(可能还有磁盘使用情况)?有没有办法将这些数据保存在文件中?
  • @user5461722,这是一个非常不同的问题,但请参阅this answer
猜你喜欢
  • 2017-09-22
  • 2013-11-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多