mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
Summary: Since caffe2 and torch have been consolidated, CAFFE2_API should be merged with TORCH_API. Addresses a TODO. Manually edited some references of the removed `CAFFE2_API`: * `CONTRIBUTING.md` * `caffe2/proto/CMakeLists.txt` * `cmake/ProtoBuf.cmake` * `c10/macros/Export.h` * `torch/csrc/WindowsTorchApiMacro.h` Pull Request resolved: https://github.com/pytorch/pytorch/pull/49496 Reviewed By: malfet, samestep Differential Revision: D25600726 Pulled By: janeyx99 fbshipit-source-id: 7e068d959e397ac183c097d7e9a9afeca5ddd782
47 lines
1.1 KiB
C++
47 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "c10/util/Registry.h"
|
|
#include "caffe2/core/blob.h"
|
|
#include <c10/util/typeid.h>
|
|
|
|
#include <unordered_map>
|
|
|
|
namespace caffe2 {
|
|
|
|
struct BlobStatGetter {
|
|
virtual size_t sizeBytes(const Blob& blob) const = 0;
|
|
virtual ~BlobStatGetter() {}
|
|
};
|
|
|
|
struct BlobStatRegistry {
|
|
private:
|
|
std::unordered_map<TypeIdentifier, std::unique_ptr<BlobStatGetter>> map_;
|
|
void doRegister(TypeIdentifier id, std::unique_ptr<BlobStatGetter>&& v);
|
|
|
|
public:
|
|
template <typename T, typename Getter>
|
|
struct Registrar {
|
|
Registrar() {
|
|
BlobStatRegistry::instance().doRegister(
|
|
TypeMeta::Id<T>(), std::unique_ptr<Getter>(new Getter));
|
|
}
|
|
};
|
|
|
|
const BlobStatGetter* get(TypeIdentifier id);
|
|
static BlobStatRegistry& instance();
|
|
};
|
|
|
|
#define REGISTER_BLOB_STAT_GETTER(Type, BlobStatGetterClass) \
|
|
static BlobStatRegistry::Registrar<Type, BlobStatGetterClass> \
|
|
C10_ANONYMOUS_VARIABLE(BlobStatRegistry)
|
|
|
|
namespace BlobStat {
|
|
|
|
/**
|
|
* Return size in bytes of the blob, if available for a blob of given type.
|
|
* If not available, return 0.
|
|
*/
|
|
TORCH_API size_t sizeBytes(const Blob& blob);
|
|
}
|
|
}
|