Memory 找出是什么在火炬7中带走了我的记忆

Memory 找出是什么在火炬7中带走了我的记忆,memory,memory-leaks,lua,caffe,torch,Memory,Memory Leaks,Lua,Caffe,Torch,我已经编写了一个相当复杂的torch应用程序,它运行得非常好,如果它没有耗尽内存的话。现在我试着看看是什么样的输入或情况导致它看起来太随机地耗尽了内存,但到目前为止,我几乎没有成功。所以现在我正在寻找一种方法来检查哪些变量占用了多少内存 我可以用一个简单的语句在caffe:cuda或caffe:cl上运行我的代码之间切换,这会改变我的程序在RAM或GPU上运行与否,我想这样的切换将使验证我的内存使用情况变得更加容易 我已经尝试使用print(collectgarbage(“count”)*102

我已经编写了一个相当复杂的torch应用程序,它运行得非常好,如果它没有耗尽内存的话。现在我试着看看是什么样的输入或情况导致它看起来太随机地耗尽了内存,但到目前为止,我几乎没有成功。所以现在我正在寻找一种方法来检查哪些变量占用了多少内存

我可以用一个简单的语句在caffe:cuda或caffe:cl上运行我的代码之间切换,这会改变我的程序在RAM或GPU上运行与否,我想这样的切换将使验证我的内存使用情况变得更加容易

我已经尝试使用
print(collectgarbage(“count”)*1024)
检查给定时间点的内存使用量,但这并不能清楚地显示内存的使用位置,可能是因为程序相对复杂(尽管我怀疑有一些变量占用了大量内存、神经网络、大型矩阵等)

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


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

我不知道你是否尝试过谷歌:) 但你在这里:


tbo,我从来没有遇到过Torch7的内存问题,所以可能是您的实现不是最佳的。它可能是一个没有
collectgarbage
调用的循环,它应该在某个地方调用,例如在训练循环中或在两个时代之间。

前两个链接似乎侧重于分析现有网络,而不是它的内存使用情况,对吗?第三个链接允许我检查函数被调用的频率和在那里花费的时间,同样不是内存,第四个链接只使用collectgarbage(“count”)语句处理内存。还是我遗漏了什么?没错。如果你在Lua的世界里寻找复杂的分析工具,那你就走运了。