From 4e4b1a1cbcc5ef89fde242ebd2653e6712856d7e Mon Sep 17 00:00:00 2001 From: Stephen Jia Date: Thu, 20 Mar 2025 10:28:45 -0700 Subject: [PATCH] [ET-VK][ez] Make sure vTensor is not referencing the global context ## Context Some functions in `vTensor` accidentally referenced the global context by calling `context()`; the correct thing to do is to use the context pointer associated with the `vTensor` by using `storage_.context_` instead. Differential Revision: [D71560884](https://our.internmc.facebook.com/intern/diff/D71560884/) ghstack-source-id: 273023082 Pull Request resolved: https://github.com/pytorch/executorch/pull/9458 --- backends/vulkan/runtime/api/containers/Tensor.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/backends/vulkan/runtime/api/containers/Tensor.cpp b/backends/vulkan/runtime/api/containers/Tensor.cpp index b0722dfca06..4cbd1290401 100644 --- a/backends/vulkan/runtime/api/containers/Tensor.cpp +++ b/backends/vulkan/runtime/api/containers/Tensor.cpp @@ -674,7 +674,8 @@ utils::GPUMemoryLayout vTensor::estimate_memory_layout() const { } const vkapi::BufferBindInfo vTensor::sizes_ubo() { - const size_t size_per_ubo = context()->adapter_ptr()->min_ubo_alignment(); + const size_t size_per_ubo = + storage_.context_->adapter_ptr()->min_ubo_alignment(); const size_t max_ubo_size = kMaxMetadataFieldCount * size_per_ubo; if (!uniforms_.buffer()) { uniforms_ = ParamsBuffer(storage_.context_, max_ubo_size, true); @@ -692,7 +693,8 @@ const vkapi::BufferBindInfo vTensor::sizes_ubo() { } const vkapi::BufferBindInfo vTensor::strides_ubo() { - const size_t size_per_ubo = context()->adapter_ptr()->min_ubo_alignment(); + const size_t size_per_ubo = + storage_.context_->adapter_ptr()->min_ubo_alignment(); const size_t max_ubo_size = kMaxMetadataFieldCount * size_per_ubo; if (!uniforms_.buffer()) { uniforms_ = ParamsBuffer(storage_.context_, max_ubo_size, true); @@ -712,7 +714,8 @@ const vkapi::BufferBindInfo vTensor::strides_ubo() { } const vkapi::BufferBindInfo vTensor::logical_limits_ubo() { - const size_t size_per_ubo = context()->adapter_ptr()->min_ubo_alignment(); + const size_t size_per_ubo = + storage_.context_->adapter_ptr()->min_ubo_alignment(); const size_t max_ubo_size = kMaxMetadataFieldCount * size_per_ubo; if (!uniforms_.buffer()) { uniforms_ = ParamsBuffer(storage_.context_, max_ubo_size, true); @@ -730,7 +733,8 @@ const vkapi::BufferBindInfo vTensor::logical_limits_ubo() { } const vkapi::BufferBindInfo vTensor::numel_ubo() { - const size_t size_per_ubo = context()->adapter_ptr()->min_ubo_alignment(); + const size_t size_per_ubo = + storage_.context_->adapter_ptr()->min_ubo_alignment(); const size_t max_ubo_size = kMaxMetadataFieldCount * size_per_ubo; if (!uniforms_.buffer()) { uniforms_ = ParamsBuffer(storage_.context_, max_ubo_size, true);