7#include <unordered_map>
75 "CopySameDevice requires fundamental types");
77 n *
sizeof(
T),
static_cast<const void*
>(
src),
static_cast<void*
>(
dst));
84 "CopyFromCPU requires fundamental types");
86 n *
sizeof(
T),
static_cast<const void*
>(
src),
static_cast<void*
>(
dst));
94 n *
sizeof(
T),
static_cast<const void*
>(
src),
static_cast<void*
>(
dst));
103 SupportsNonFundamentalTypes(),
"Context requires fundamental types");
154#define REGISTER_CONTEXT(type, ...) \
155 C10_REGISTER_TYPED_CLASS(ContextRegistry, type, __VA_ARGS__)
159 return at::ContextRegistry()->Create(
device.type(),
device);
#define AT_ASSERTM(cond,...)
Virtual interface for the Context class in Caffe2.
void CopySameDevice(size_t n, const T *src, T *dst)
virtual void SwitchToDevice(int)=0
void CopyItemsFromCPU(const caffe2::TypeMeta meta, size_t n, const void *src, void *dst)
virtual void WaitEvent(const caffe2::Event &ev)=0
virtual void FinishDeviceComputation()=0
virtual Device device() const =0
virtual void CopyBytesFromCPU(size_t nbytes, const void *src, void *dst)=0
virtual bool SupportsNonFundamentalTypes() const
virtual void CopyBytesSameDevice(size_t nbytes, const void *src, void *dst)=0
virtual ~BaseContext() noexcept
void CopyItemsSameDevice(const caffe2::TypeMeta meta, size_t n, const void *src, void *dst)
void CopyToCPU(size_t n, const T *src, T *dst)
virtual DeviceType device_type() const =0
virtual void Record(caffe2::Event *ev, const char *err_msg=nullptr) const =0
void CopyFromCPU(size_t n, const T *src, T *dst)
void CopyItemsToCPU(const caffe2::TypeMeta meta, size_t n, const void *src, void *dst)
virtual void CopyBytesToCPU(size_t nbytes, const void *src, void *dst)=0
Distributions kernel adapted from THRandom.cpp The kernels try to follow std::random distributions si...
C10_DECLARE_TYPED_REGISTRY(ContextRegistry, at::DeviceType, at::BaseContext, std::unique_ptr, at::Device)
std::unique_ptr< at::BaseContext > CreateContext(const at::Device &device)
Copyright (c) 2016-present, Facebook, Inc.
'torch.classes.cuda.Event' Event(bool enable_timing=False, bool blocking=False, bool interprocess=False)
Represents a a compute device on which a tensor is located.
A backend-generic movable, not copyable, not thread-safe event.
is_fundamental<T> is true_type iff the lambda type T is a fundamental type (that is,...