From 2d147a59f3785d070bf5edd24fba97a6738d7c85 Mon Sep 17 00:00:00 2001 From: lucylq Date: Mon, 7 Jul 2025 17:17:08 -0700 Subject: [PATCH 1/2] [BE] Clean pte_data_map - Add maybe_unused to size test - Clean up and try to reduce some binary size from pte_data_map. Differential Revision: [D77904843](https://our.internmc.facebook.com/intern/diff/D77904843/) [ghstack-poisoned] --- runtime/executor/pte_data_map.cpp | 43 ++++++++++++++----------------- test/size_test.cpp | 2 +- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/runtime/executor/pte_data_map.cpp b/runtime/executor/pte_data_map.cpp index e9b1c3460be..9c2fb1e7c8e 100644 --- a/runtime/executor/pte_data_map.cpp +++ b/runtime/executor/pte_data_map.cpp @@ -13,64 +13,61 @@ namespace executorch { namespace ET_RUNTIME_NAMESPACE { namespace internal { -/* static */ executorch::runtime::Result PteDataMap::create( - executorch::runtime::DataLoader* loader, +/* static */ Result PteDataMap::create( + DataLoader* loader, size_t segment_base_offset, const flatbuffers::FlatbufferNamedData* named_data, const flatbuffers::FlatbufferDataSegment* segments) { ET_CHECK_OR_RETURN_ERROR( loader != nullptr && named_data != nullptr && segments != nullptr, InvalidArgument, - "PteDataMap loader, named_data or segments is null; most likely the program does not have any named_data segments"); + "PteDataMap loader, named_data or segments is null; most likely the program does not have any named_data segments."); return PteDataMap(loader, segment_base_offset, named_data, segments); } ET_NODISCARD -executorch::runtime::Result -PteDataMap::get_data(executorch::aten::string_view key) const { +Result PteDataMap::get_data( + executorch::aten::string_view key) const { for (uint32_t i = 0; i < named_data_->size(); i++) { + const auto* named_data_item = named_data_->Get(i); ET_CHECK_OR_RETURN_ERROR( - named_data_->Get(i) != nullptr && named_data_->Get(i)->key() != nullptr, + named_data_item != nullptr && named_data_item->key() != nullptr, InvalidArgument, "Searching for key %.*s: NamedData at index %d is null", static_cast(key.size()), key.data(), i); - if (strncmp( - named_data_->Get(i)->key()->c_str(), - key.data(), - named_data_->Get(i)->key()->size()) == 0) { + const auto* named_data_key = named_data_item->key(); + if (named_data_key->size() == key.size() && + memcmp(named_data_key->data(), key.data(), key.size()) == 0) { // Get the segment index. - size_t segment_index = named_data_->Get(i)->segment_index(); + size_t segment_index = named_data_item->segment_index(); // Get the segment offset and size. ET_CHECK_OR_RETURN_ERROR( segment_index < segments_->size(), InvalidArgument, - "Segment index %zu for key %.*s is out of range for segments size %u", + "Segment index %zu for key %.*s is out of range for size %u", segment_index, static_cast(key.size()), key.data(), segments_->size()); - size_t segment_offset = segments_->Get(segment_index)->offset(); - size_t segment_size = segments_->Get(segment_index)->size(); + const auto* segment = segments_->Get(segment_index); return loader_->load( - /*offset=*/segment_base_offset_ + segment_offset, - segment_size, + /*offset=*/segment_base_offset_ + segment->offset(), + segment->size(), DataLoader::SegmentInfo(DataLoader::SegmentInfo::Type::External)); } } return Error::NotFound; } -ET_NODISCARD executorch::runtime::Result PteDataMap::get_num_keys() - const { +ET_NODISCARD Result PteDataMap::get_num_keys() const { return named_data_->size(); } -ET_NODISCARD executorch::runtime::Result PteDataMap::get_key( - uint32_t index) const { +ET_NODISCARD Result PteDataMap::get_key(uint32_t index) const { ET_CHECK_OR_RETURN_ERROR( index < named_data_->size(), InvalidArgument, @@ -78,13 +75,13 @@ ET_NODISCARD executorch::runtime::Result PteDataMap::get_key( named_data_->size(), index); + const auto* item = named_data_->Get(index); ET_CHECK_OR_RETURN_ERROR( - named_data_->Get(index) != nullptr && - named_data_->Get(index)->key() != nullptr, + item != nullptr && item->key() != nullptr, InvalidArgument, "NamedData at index %u is null", index); - return named_data_->Get(index)->key()->c_str(); + return item->key()->c_str(); } } // namespace internal diff --git a/test/size_test.cpp b/test/size_test.cpp index 8f67368f64e..52a693530ea 100644 --- a/test/size_test.cpp +++ b/test/size_test.cpp @@ -96,7 +96,7 @@ int main(int argc, char** argv) { for (const auto i : c10::irange(method->outputs_size())) { auto output_tensor = output_list[i].toTensor(); [[maybe_unused]] auto data_output = output_tensor.const_data_ptr(); - for (const auto j : c10::irange(output_tensor.numel())) { + for ([[maybe_unused]] const auto j : c10::irange(output_tensor.numel())) { ET_LOG(Info, "%f", data_output[j]); } } From 938d61a9297db0a022d35ae4b9729cb57cab656d Mon Sep 17 00:00:00 2001 From: lucylq Date: Mon, 7 Jul 2025 17:24:33 -0700 Subject: [PATCH 2/2] Update on "[BE] Clean pte_data_map" - Add maybe_unused to size test - Clean up and try to reduce some binary size from pte_data_map. Differential Revision: [D77904843](https://our.internmc.facebook.com/intern/diff/D77904843/) [ghstack-poisoned] --- runtime/executor/pte_data_map.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/executor/pte_data_map.cpp b/runtime/executor/pte_data_map.cpp index 9c2fb1e7c8e..4028c1af4fe 100644 --- a/runtime/executor/pte_data_map.cpp +++ b/runtime/executor/pte_data_map.cpp @@ -21,7 +21,7 @@ namespace internal { ET_CHECK_OR_RETURN_ERROR( loader != nullptr && named_data != nullptr && segments != nullptr, InvalidArgument, - "PteDataMap loader, named_data or segments is null; most likely the program does not have any named_data segments."); + "PteDataMap loader, named_data or segments is null; most likely the program does not have any named_data segments"); return PteDataMap(loader, segment_base_offset, named_data, segments); } @@ -47,7 +47,7 @@ Result PteDataMap::get_data( ET_CHECK_OR_RETURN_ERROR( segment_index < segments_->size(), InvalidArgument, - "Segment index %zu for key %.*s is out of range for size %u", + "Segment index %zu for key %.*s is out of range for segments size %u", segment_index, static_cast(key.size()), key.data(),