SIGN IN SIGN UP

[ET-VK] Move `save_cache` from Runtime dtor to model destroy (#7002)

Pull Request resolved: https://github.com/pytorch/executorch/pull/6974

## Issue
`Runtime` is a local static variable. Hence we'd expect the Runtime dtor to be called on program exit. But on Android devices it's not being invoked. This behavior is different than that seen 6 months ago (D57085281). It's unclear what changed.

This means the cache is not saved due to the following chain never being invoked.
`~Runtime()`  > `~Adapter()` > `~ComputePipelineCache()` > `save_cache()`.

## Solution
Move cache saving to `VulkanBackend.cpp`'s model destroy. This makes sense since the cache is tied to the model and not the runtime.

## Resources
https://medium.com/@martin00001313/mastering-static-objects-in-c-initialization-destruction-and-best-practices-760b17734195
ghstack-source-id: 254701488
@exported-using-ghexport

Differential Revision: [D66179917](https://our.internmc.facebook.com/intern/diff/D66179917/)

---------

Co-authored-by: jorgep31415 <jorgepineda140@gmail.com>
P
pytorchbot committed
792ef43fc67a76f892d8a1e89ac438cac59e5d90
Parent: 0dc25e5
Committed by GitHub <noreply@github.com> on 11/21/2024, 4:19:27 AM