mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-20 19:12:24 +00:00
Add a typedef for the various hash value variables. Use of a typedef conveys some additional meaning.
31 lines
1 KiB
C++
31 lines
1 KiB
C++
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License.
|
|
|
|
#include "prepacked_weights.h"
|
|
#include "core/framework/murmurhash3.h"
|
|
|
|
namespace onnxruntime {
|
|
|
|
HashValue PrePackedWeights::GetHash() const {
|
|
// Adaptation of the hashing logic of the KernelDef class
|
|
|
|
uint32_t hash[4] = {0, 0, 0, 0};
|
|
|
|
auto hash_int8_t_buffer = [&hash](void* data, int len) { MurmurHash3::x86_128(data, len, hash[0], &hash); };
|
|
|
|
ORT_ENFORCE(buffers_.size() == buffer_sizes_.size());
|
|
for (size_t iter = 0; iter < buffers_.size(); ++iter) {
|
|
// some pre-packed buffers may be null if they were just "place-holders" occupying an index
|
|
// in the "buffers_" vector
|
|
if (buffers_[iter].get() != nullptr) {
|
|
hash_int8_t_buffer(buffers_[iter].get(), static_cast<int>(buffer_sizes_[iter]));
|
|
}
|
|
}
|
|
|
|
HashValue returned_hash = hash[0] & 0xfffffff8; // save low 3 bits for hash version info in case we need it in the future
|
|
returned_hash |= uint64_t(hash[1]) << 32;
|
|
|
|
return returned_hash;
|
|
}
|
|
|
|
} // namespace onnxruntime
|