checkInBoundsForStorage Class — pytorch Architecture
Architecture documentation for the checkInBoundsForStorage class in Resize.h from the pytorch codebase.
Entity Profile
Source Code
aten/src/ATen/native/Resize.h lines 82–124
template <typename T>
inline void checkInBoundsForStorage(
ArrayRef<T> size,
ArrayRef<T> stride,
T storage_offset,
const caffe2::TypeMeta& data_type,
const Storage& new_storage) {
T storage_size_bytes, storage_size_plus_offset_bytes;
if (stride.data()) {
storage_size_bytes =
at::detail::computeStorageNbytes(size, stride, data_type.itemsize());
storage_size_plus_offset_bytes = at::detail::computeStorageNbytes(
size, stride, data_type.itemsize(), storage_offset);
} else {
storage_size_bytes =
at::detail::computeStorageNbytesContiguous(size, data_type.itemsize());
storage_size_plus_offset_bytes = at::detail::computeStorageNbytesContiguous(
size, data_type.itemsize(), storage_offset);
}
// It's ok to always evaluate to False for this early return for SymInts because
// (1) maybe_convert_symint below only installs guard for int64_t case
// (2) we check for this condition in the TORCH_MAYBE_SYM_CHECK below
if (TORCH_GUARD_OR_FALSE(sym_eq(storage_size_bytes, 0))) {
// NB: (a tensor with arbitrary 0 dims)'s storage can have any numel.
return;
}
T new_storage_size_bytes = maybe_convert_symint<T>(new_storage.sym_nbytes());
TORCH_MAYBE_SYM_CHECK(
sym_eq(storage_size_bytes, 0) || sym_le(storage_size_plus_offset_bytes, new_storage_size_bytes),
"setStorage: sizes ",
size,
", strides ",
stride,
","
" storage offset ",
storage_offset,
", and itemsize ",
data_type.itemsize(),
" requiring a storage size of ",
storage_size_plus_offset_bytes,
" are out of bounds for storage of size ",
new_storage_size_bytes);
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free