Unverified Commit 7816c5a2 authored by Zihao Ye's avatar Zihao Ye Committed by GitHub
Browse files

[hotfix] IsContiguous failed when tensor's size on first dimension is 1. (#2127)



* udp

* fix
Co-authored-by: default avatarQuan Gan <coin2028@hotmail.com>
parent 9eaace92
...@@ -137,12 +137,18 @@ bool NDArray::IsContiguous() const { ...@@ -137,12 +137,18 @@ bool NDArray::IsContiguous() const {
CHECK(data_ != nullptr); CHECK(data_ != nullptr);
if (data_->dl_tensor.strides == nullptr) if (data_->dl_tensor.strides == nullptr)
return true; return true;
for (int i = 0; i < data_->dl_tensor.ndim - 1; ++i) {
if (data_->dl_tensor.strides[i] != // See https://github.com/dmlc/dgl/issues/2118 and PyTorch's compute_contiguous() implementation
data_->dl_tensor.shape[i+1] * data_->dl_tensor.strides[i+1]) int64_t z = 1;
return false; for (int64_t i = data_->dl_tensor.ndim - 1; i >= 0; --i) {
if (data_->dl_tensor.shape[i] != 1) {
if (data_->dl_tensor.strides[i] == z)
z *= data_->dl_tensor.shape[i];
else
return false;
}
} }
return data_->dl_tensor.strides[data_->dl_tensor.ndim - 1] == 1; return true;
} }
NDArray NDArray::CreateView(std::vector<int64_t> shape, NDArray NDArray::CreateView(std::vector<int64_t> shape,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment