SIGN IN SIGN UP

Introduce `ParamsBindList` to prevent needing to pass `shared_ptr` to bind parameter UBOs (#3150)

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

## Context

In keeping with the below changeset in this stack, this diff introduces the `ParamsBindList` structure to avoid storing shared pointers to `api::UniformParamsBuffer` objects in `ExecuteNode` and `PrepackNode`.

The idea is to store the binding information of each UPB instead of taking ownership of the UPB itself. There isn't really a need for `ExecuteNode` and `PrepackNode` to take ownership since `ComputeGraph` provides a guarantee that the UPBs will be in scope at the time of binding.

With this change, all `shared_ptr` members can be eliminated from `vTensor`, further reducing heap allocations and pointer chasing.

In the future I will change `prepack_nodes_` and `execute_nodes_` to store `PrepackNode` and `ExecuteNode` instances directly instead of storing unique pointers to them.

ghstack-source-id: 223225899
exported-using-ghexport

Reviewed By: jorgep31415

Differential Revision: D56357188

fbshipit-source-id: 5f4d1be900711753aa2cc035c044fe71f93d555b
S
Stephen Jia committed
db17853ca45f40f56eb7e93b378f119c66862b2b
Parent: bf5093a
Committed by Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com> on 4/19/2024, 7:37:39 PM