From 07b3b17c79e13175559bc22d1cfe6ff63fa52642 Mon Sep 17 00:00:00 2001 From: Koch Date: Wed, 15 Jan 2020 12:52:46 +0100 Subject: [PATCH 1/2] fix: use std::vector for dynamically sized array in gather.cpp --- cpu/gather.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cpu/gather.cpp b/cpu/gather.cpp index db8aec8d..5c013edf 100644 --- a/cpu/gather.cpp +++ b/cpu/gather.cpp @@ -3,6 +3,8 @@ #include "compat.h" #include "index_info.h" +#include + #define CHECK_CPU(x) AT_ASSERTM(!x.type().is_cuda(), #x " must be CPU tensor") at::Tensor gather_csr(at::Tensor src, at::Tensor indptr, @@ -43,7 +45,7 @@ at::Tensor gather_csr(at::Tensor src, at::Tensor indptr, auto src_data = src.DATA_PTR(); auto out_data = out.DATA_PTR(); - scalar_t vals[K]; + std::vector vals(K); int64_t row_start, row_end; for (int n = 0; n < N; n++) { int offset = IndexPtrToOffset::get(n, indptr_info); @@ -104,7 +106,7 @@ at::Tensor gather_coo(at::Tensor src, at::Tensor index, auto src_data = src.DATA_PTR(); auto out_data = out.DATA_PTR(); - scalar_t vals[K]; + std::vector vals(K); int64_t idx, next_idx; for (int e_1 = 0; e_1 < E_1; e_1++) { int offset = IndexToOffset::get(e_1 * E_2, index_info); From 1eabf7f1024566fff7cabe3e99abcb70931c3a1a Mon Sep 17 00:00:00 2001 From: Koch Date: Wed, 15 Jan 2020 14:17:25 +0100 Subject: [PATCH 2/2] fix: also use std::vector for dynamically sized array in segment.cpp --- cpu/segment.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/cpu/segment.cpp b/cpu/segment.cpp index dff7beca..f7c3767c 100644 --- a/cpu/segment.cpp +++ b/cpu/segment.cpp @@ -3,6 +3,8 @@ #include "compat.h" #include "index_info.h" +#include + #define CHECK_CPU(x) AT_ASSERTM(!x.type().is_cuda(), #x " must be CPU tensor") enum ReductionType { ADD, MEAN, MIN, MAX }; @@ -123,8 +125,9 @@ segment_csr(at::Tensor src, at::Tensor indptr, at::optional out_opt, auto src_data = src.DATA_PTR(); auto out_data = out.DATA_PTR(); - scalar_t vals[K]; - int64_t row_start, row_end, args[K]; + std::vector vals(K); + int64_t row_start, row_end; + std::vector args(K); AT_DISPATCH_REDUCTION_TYPES(reduce, [&] { for (int n = 0; n < N; n++) { int offset = IndexPtrToOffset::get(n, indptr_info); @@ -195,8 +198,9 @@ segment_coo(at::Tensor src, at::Tensor index, at::Tensor out, auto src_data = src.DATA_PTR(); auto out_data = out.DATA_PTR(); - scalar_t vals[K]; - int64_t idx, next_idx, row_start, args[K]; + std::vector vals(K); + int64_t idx, next_idx, row_start; + std::vector args(K); AT_DISPATCH_REDUCTION_TYPES(reduce, [&] { for (int e_1 = 0; e_1 < E_1; e_1++) { int offset = IndexToOffset::get(e_1 * E_2, index_info);