mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/10166 TypeIdentifier is still easy to codemod away from Reviewed By: smessmer Differential Revision: D9132840 fbshipit-source-id: bc83a8b17b2e7c19c9d2c9cfe5c7ce6ec1d8cec5
37 lines
842 B
C++
37 lines
842 B
C++
#include "caffe2/core/blob_stats.h"
|
|
|
|
namespace caffe2 {
|
|
|
|
const BlobStatGetter* BlobStatRegistry::get(TypeIdentifier id) {
|
|
auto it = map_.find(id);
|
|
if (it == map_.end()) {
|
|
return nullptr;
|
|
}
|
|
return it->second.get();
|
|
}
|
|
|
|
BlobStatRegistry& BlobStatRegistry::instance() {
|
|
static BlobStatRegistry registry;
|
|
return registry;
|
|
}
|
|
|
|
void BlobStatRegistry::doRegister(
|
|
TypeIdentifier id,
|
|
std::unique_ptr<BlobStatGetter>&& v) {
|
|
// don't use CAFFE_ENFORCE_EQ to avoid static initialization order fiasco.
|
|
if (map_.count(id) > 0) {
|
|
throw std::runtime_error("BlobStatRegistry: Type already registered.");
|
|
}
|
|
map_[id] = std::move(v);
|
|
}
|
|
|
|
namespace BlobStat {
|
|
|
|
size_t sizeBytes(const Blob& blob) {
|
|
auto* p = BlobStatRegistry::instance().get(blob.meta().id());
|
|
return p ? p->sizeBytes(blob) : 0;
|
|
}
|
|
|
|
} // namespace BlobStats
|
|
}
|