我已经编写了一个相当复杂的火炬应用程序并且它运行得很好,即如果它没有内存不足。现在,我试图看看哪种输入或情况导致它看起来似乎随机耗尽内存,但到目前为止我几乎没有成功。所以现在我正在寻找一种方法来检查哪些变量需要多少(v)ram。
我可以通过简单的语句切换在caffe上运行我的代码:cuda或caffe:cl会改变我的程序在RAM或GPU上运行的程序,我想这样的开关会验证我的内存使用情况a很容易。
我已经尝试使用print(collectgarbage("count")*1024)
检查在给定时间点使用了多少内存但是这并没有清楚地显示内存的使用位置,可能是因为程序相对复杂(虽然有一些变量我怀疑它们拥有大量内存,神经网络,大型矩阵等等。
我已经知道,一旦我确定了谁在占用我的记忆,我就可以为它分配一个nill值,并将它称为垃圾收集器。
简而言之,有一个程序或工具允许我运行火炬程序,然后列出每个变量及其内存使用情况?
答案 0 :(得分:0)
我不知道你是否尝试过google :) 但是你在这里:
tbo,我从未遇到过 Torch7 的内存问题,所以它可能是你的实现,这不是最佳的。它可能是一个没有collectgarbage
调用的循环,它应该在某个地方调用,例如:在训练循环中或在时代之间。