系统信息
- TensorFlow版本(您正在使用的):每夜
- 您是否愿意提供(是/否):不适用
描述功能和当前行为/状态。
当客户端丢失xrt托管状态的跟踪信息时(例如,因为在开始跟踪之前发生错误)或因为崩溃或因为其他错误,分配停留在设备端,无法释放如果有一个xrt操作可以删除xrt知道的所有内存,这将非常有用(可能可选地使用一个保留列表,这样客户端可以说“我知道这些,所以不要释放它们”)。
这是否会更改当前API?如何更改?
这可能是一个新的xrt操作。
谁将受益于此功能?
xrt API的用户。
任何其他信息
@michaelisard要求被分配。
5条答案
按热度按时间6rqinv9w1#
只是澄清一下:如果你运行ConfigureDistributedTPU操作,所有的内存都被释放了吗?我假设你正在寻找一个比configure更轻量级的操作来释放内存。如果configure没有释放内存,那就是另一个bug了。
h6my8fg22#
据我所知,配置没有释放内存(它当然不会从XRT中注销它,所以我可以将它传递给另一个执行,它会做一些事情--我还没有验证底层内存是否仍然存在)。我确实还希望有一个更轻量级的操作。当我们这样做时,我还希望使用一个更轻量级的操作来中断正在运行的XRTExecute(我们的模型看起来像是设备上while循环中的状态机,所以如果它处于坏状态,就很难杀死它)。
0dxa2lsx3#
好,我们将把“配置时未释放内存”和“支持在不配置的情况下释放所有内存”作为单独的问题处理。
我认为如果不重置所有的芯片,很难中断一个正在运行的程序。如果你需要能够从代码生成错误中恢复,那么你可能需要做一个重置。如果你希望用户能够从他们自己的错误中恢复,我担心你需要在你生成的代码中添加支持,以经常产生。
o4hqfura4#
我认为如果不重置所有的芯片,很难中断一个正在运行的程序。如果你需要能够从代码生成错误中恢复,那么你可能需要做一个重置。如果你希望用户能够从他们自己的错误中恢复,我担心你需要在你生成的代码中添加支持,以经常产生。
好的,在这种情况下,只要确保使用configure重置芯片清除所有相关状态就可以了。我认为现在如果有一个计算正在运行,它有时会挂起。
rm5edbpk5#
OOM上的内存概述也有一些问题:
看起来这些7G实际上是分配的,但在概述中缺失。