This is an archive of the discontinued LLVM Phabricator instance.

[mlir][sparse] Moving `delete coo` into codegen instead of runtime library
ClosedPublic

Authored by wrengr on Mar 24 2022, 2:24 PM.

Details

Summary

Prior to this change there were a number of places where the allocation and deallocation of SparseTensorCOO objects were not cleanly paired, leading to inconsistencies regarding whether each function released its tensor/coo arguments or not, as well as making it easy to run afoul of memory leaks, use-after-free, or double-free errors. This change cleans up the codegen vs runtime boundary to resolve those issues. Now, the only time the runtime library frees an object is either (a) because it's a function explicitly designed to do so, or (b) because the allocated object is entirely local to the function and would be a memory leak if not released. Thus, now the codegen takes complete responsibility for releasing any objects it caused to be allocated.

Diff Detail

Event Timeline

wrengr created this revision.Mar 24 2022, 2:24 PM
wrengr requested review of this revision.Mar 24 2022, 2:24 PM
aartbik accepted this revision.Mar 28 2022, 4:05 PM
This revision is now accepted and ready to land.Mar 28 2022, 4:05 PM
wrengr updated this revision to Diff 419245.Mar 30 2022, 12:33 PM

rebasing to remove parent revisions