mirror of
https://github.com/ml-explore/mlx.git
synced 2025-06-25 18:11:15 +08:00
fix deletion of non-evaled arrays with siblings (#1714)
This commit is contained in:
parent
49c34c4161
commit
8bae22b0fa
@ -277,7 +277,19 @@ array::ArrayDesc::~ArrayDesc() {
|
|||||||
}
|
}
|
||||||
ad.inputs.clear();
|
ad.inputs.clear();
|
||||||
for (auto& [_, a] : input_map) {
|
for (auto& [_, a] : input_map) {
|
||||||
if (a.array_desc_.use_count() <= a.siblings().size() + 1) {
|
bool is_deletable =
|
||||||
|
(a.array_desc_.use_count() <= a.siblings().size() + 1);
|
||||||
|
// An array with siblings is deletable only if all of its siblings
|
||||||
|
// are deletable
|
||||||
|
for (auto& s : a.siblings()) {
|
||||||
|
if (!is_deletable) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
int is_input = (input_map.find(s.id()) != input_map.end());
|
||||||
|
is_deletable &=
|
||||||
|
s.array_desc_.use_count() <= a.siblings().size() + is_input;
|
||||||
|
}
|
||||||
|
if (is_deletable) {
|
||||||
for_deletion.push_back(std::move(a.array_desc_));
|
for_deletion.push_back(std::move(a.array_desc_));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user