#pragma once #include namespace at { // MemOverlap: Whether or not there is memory overlap // // NO: Absolutely no memory overlap // YES: Absolutely yes memory overlap // TOO_HARD: There might be memory overlap, but it was too expensive to compute. // // NB: Please update the python test for these if you renumber them. enum class MemOverlap { NO, YES, TOO_HARD }; enum class MemOverlapStatus { FULL, PARTIAL, NO, TOO_HARD }; CAFFE2_API MemOverlap has_internal_overlap(const Tensor& t); CAFFE2_API MemOverlap has_internal_overlap(TensorImpl* t); CAFFE2_API void assert_no_internal_overlap(const Tensor& t); CAFFE2_API void assert_no_internal_overlap(TensorImpl* t); MemOverlapStatus get_overlap_status(const Tensor& a, const Tensor& b); MemOverlapStatus get_overlap_status(TensorImpl* a, TensorImpl* b); void assert_no_partial_overlap(const Tensor& a, const Tensor& b); void assert_no_partial_overlap(TensorImpl* a, TensorImpl* b); }