查找 Torch7 中的内存占用情况

我编写了一个相当复杂的 Torch 应用程序,它工作得非常好,只要它不会耗尽内存。现在,我已经尝试了解什么样的输入或情况会导致它似乎随机耗尽内存,但到目前为止,我几乎没有成功。所以现在我正在寻找一种检查哪些变量占用了多少(v)ram 的方法。

我可以通过一个简单的语句在 caffe:cuda 或 caffe:cl 上运行我的代码,从而改变程序是在 RAM 还是在 GPU 上运行,我想这样的切换会使验证我的内存使用情况变得更容易。

我已经尝试使用 print(collectgarbage("count")* 1024) 检查在给定时间内使用了多少内存,但是这并没有清楚地显示内存的使用情况,也许是因为程序相对复杂(尽管有一些变量我怀疑占用了大量的内存,比如神经网络、大矩阵等)。

我已经知道,一旦我确定谁占用了我的内存,我可以将其分配为 nill 值,并调用垃圾收集器以释放它。

因此,简而言之,是否有一个程序或工具,可以让我运行 Torch 程序,然后列出每个变量及其内存使用情况?

点赞
用户1984680
用户1984680

我不知道你是否尝试过谷歌搜索 :) 但是,以下是相关链接:

对我而言,我从未在Torch7中遇到过内存问题,因此可能是你的实现并不是最优的。可能是循环中缺少collectgarbage调用,例如在训练循环或时期之间。

2017-03-31 20:14:08