/usr/local/lib64/python3.6/site-packages/torch/include/caffe2/core
NameSizeModeActions
allocator.h1360644editdlrm
blob.h41680644editdlrm
blob_serialization.h107910644editdlrm
blob_serializer_base.h39050644editdlrm
blob_stats.h11270644editdlrm
common.h43290644editdlrm
common_cudnn.h98930644editdlrm
common_gpu.h214140644editdlrm
common_omp.h1560644editdlrm
context.h61740644editdlrm
context_base.h43820644editdlrm
context_gpu.h110140644editdlrm
cudnn_wrappers.h69560644editdlrm
db.h93520644editdlrm
distributions_stubs.h21610644editdlrm
event.h124200644editdlrm
event_cpu.h11920644editdlrm
export_c10_op_to_caffe2.h94870644editdlrm
export_caffe2_op_to_c10.h111010644editdlrm
flags.h740644editdlrm
graph.h52580644editdlrm
init.h64960644editdlrm
logging.h750644editdlrm
macros.h34260644editdlrm
memonger.h8170644editdlrm
module.h24730644editdlrm
net.h46340644editdlrm
net_async_base.h73970644editdlrm
net_async_scheduling.h9930644editdlrm
net_async_task.h8330644editdlrm
net_async_task_future.h19250644editdlrm
net_async_task_graph.h22530644editdlrm
net_async_tracing.h50930644editdlrm
net_dag_utils.h21460644editdlrm
net_parallel.h21440644editdlrm
net_simple.h26060644editdlrm
net_simple_refcount.h20970644editdlrm
numa.h720644editdlrm
observer.h38090644editdlrm
operator.h588720644editdlrm
operator_gradient.h102220644editdlrm
operator_schema.h184770644editdlrm
plan_executor.h2190644editdlrm
prof_dag_counters.h27510644editdlrm
qtensor.h66150644editdlrm
qtensor_serialization.h26240644editdlrm
scope_guard.h46750644editdlrm
static_tracepoint.h3980644editdlrm
static_tracepoint_elfx86.h55550644editdlrm
stats.h103650644editdlrm
storage.h7330644editdlrm
tensor.h186680644editdlrm
tensor_impl.h3510644editdlrm
tensor_int8.h4500644editdlrm
test_utils.h62850644editdlrm
timer.h12180644editdlrm
transform.h57410644editdlrm
types.h22480644editdlrm
workspace.h113050644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/include/caffe2/core/context_base.h (4382B)
#pragma once #include #include #include #include #include #include #include #include #include #include #include #include "caffe2/core/common.h" #include "caffe2/core/logging.h" #include "caffe2/proto/caffe2_pb.h" namespace caffe2 { class Event; } // namespace caffe2 namespace at { class BaseContext; /** * Virtual interface for the Context class in Caffe2. * * A Context defines all the necessities to run an operator on a specific * device. Specific Context classes needs to implement all the pure virtual * functions in the BaseContext class. * TODO: add docs after this is finalized. */ class TORCH_API BaseContext { public: virtual ~BaseContext() noexcept {} virtual Device device() const = 0; /* Sorry for the naming, will get rid of this in future diff */ virtual DeviceType device_type() const = 0; virtual void SwitchToDevice(int64_t /*stream_id*/) = 0; inline void SwitchToDevice() { SwitchToDevice(0); } virtual void WaitEvent(const caffe2::Event& ev) = 0; virtual void Record(caffe2::Event* ev, const char* err_msg = nullptr) const = 0; virtual void FinishDeviceComputation() = 0; // This used to be arbitrary cross-device copy, but it turns out everyone // did direct CPU-X copy, so we just make three functions for it (to avoid // double dispatch). This will get obsoleted by C10. where copies // will be proper operators (and get to rely on multiple dispatch there.) virtual void CopyBytesSameDevice( size_t nbytes, const void* src, void* dst) = 0; virtual void CopyBytesFromCPU(size_t nbytes, const void* src, void* dst) = 0; virtual void CopyBytesToCPU(size_t nbytes, const void* src, void* dst) = 0; template inline void CopySameDevice(size_t n, const T* src, T* dst) { static_assert( c10::guts::is_fundamental::value, "CopySameDevice requires fundamental types"); CopyBytesSameDevice( n * sizeof(T), static_cast(src), static_cast(dst)); } template inline void CopyFromCPU(size_t n, const T* src, T* dst) { static_assert( c10::guts::is_fundamental::value, "CopyFromCPU requires fundamental types"); CopyBytesFromCPU( n * sizeof(T), static_cast(src), static_cast(dst)); } template inline void CopyToCPU(size_t n, const T* src, T* dst) { static_assert( c10::guts::is_fundamental::value, "CopyToCPU requires fundamental types"); CopyBytesToCPU( n * sizeof(T), static_cast(src), static_cast(dst)); } virtual bool SupportsNonFundamentalTypes() const { return false; } inline void EnforceMetaCopyOK() { AT_ASSERTM( SupportsNonFundamentalTypes(), "Context requires fundamental types"); } void CopyItemsSameDevice( const caffe2::TypeMeta meta, size_t n, const void* src, void* dst) { if (meta.copy()) { EnforceMetaCopyOK(); meta.copy()(src, dst, n); } else { CopyBytesSameDevice(n * meta.itemsize(), src, dst); } } void CopyItemsFromCPU( const caffe2::TypeMeta meta, size_t n, const void* src, void* dst) { if (meta.copy()) { EnforceMetaCopyOK(); meta.copy()(src, dst, n); } else { CopyBytesFromCPU(n * meta.itemsize(), src, dst); } } void CopyItemsToCPU( const caffe2::TypeMeta meta, size_t n, const void* src, void* dst) { if (meta.copy()) { EnforceMetaCopyOK(); meta.copy()(src, dst, n); } else { CopyBytesToCPU(n * meta.itemsize(), src, dst); } } }; // Context constructor registry C10_DECLARE_TYPED_REGISTRY( ContextRegistry, at::DeviceType, at::BaseContext, std::unique_ptr, at::Device); #define REGISTER_CONTEXT(type, ...) \ C10_REGISTER_TYPED_CLASS(ContextRegistry, type, __VA_ARGS__) inline std::unique_ptr CreateContext( const at::Device& device) { return at::ContextRegistry()->Create(device.type(), device); } } // namespace at namespace caffe2 { using at::BaseContext; using at::CreateContext; } // namespace caffe2