Skip to content

[BE] Clean pte_data_map #12255

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: gh/lucylq/89/base
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 18 additions & 21 deletions runtime/executor/pte_data_map.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ namespace executorch {
namespace ET_RUNTIME_NAMESPACE {
namespace internal {

/* static */ executorch::runtime::Result<PteDataMap> PteDataMap::create(
executorch::runtime::DataLoader* loader,
/* static */ Result<PteDataMap> PteDataMap::create(
DataLoader* loader,
size_t segment_base_offset,
const flatbuffers::FlatbufferNamedData* named_data,
const flatbuffers::FlatbufferDataSegment* segments) {
Expand All @@ -26,22 +26,22 @@ namespace internal {
}

ET_NODISCARD
executorch::runtime::Result<executorch::runtime::FreeableBuffer>
PteDataMap::get_data(executorch::aten::string_view key) const {
Result<FreeableBuffer> 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<int>(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(
Expand All @@ -52,39 +52,36 @@ PteDataMap::get_data(executorch::aten::string_view key) const {
static_cast<int>(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<uint32_t> PteDataMap::get_num_keys()
const {
ET_NODISCARD Result<uint32_t> PteDataMap::get_num_keys() const {
return named_data_->size();
}

ET_NODISCARD executorch::runtime::Result<const char*> PteDataMap::get_key(
uint32_t index) const {
ET_NODISCARD Result<const char*> PteDataMap::get_key(uint32_t index) const {
ET_CHECK_OR_RETURN_ERROR(
index < named_data_->size(),
InvalidArgument,
"Index out of range: named_data size is %u, received index %u",
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
Expand Down
2 changes: 1 addition & 1 deletion test/size_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<float>();
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]);
}
}
Expand Down
Loading