#define __STDC_FORMAT_MACROS #include #ifdef _MSC_VER #include #endif #include #define THP_HOST_HALF #include // See Note [TH abstraction violation] // - Used to get at the allocator associated with a storage #include #include #include #include #include #ifdef USE_CUDA #include #endif #include #include #include #include // NB: If you ever divest libtorch of USE_CUDA, you'll have to virtualize // the CUDA call. template<> void THPPointer::free() { if (ptr) { if (ptr->data_ptr().device().is_cpu()) { THStorage_free(ptr); } else { AT_ASSERT(ptr->data_ptr().device().is_cuda()); #ifdef USE_CUDA THStorage_free(ptr); #else AT_ERROR("Cannot free THCStorage when not built with CUDA"); #endif } } }