Skip to content

Commit 1db78c3

Browse files
r-barnesfacebook-github-bot
authored andcommitted
Fix LLVM-12 concat_split_op.h error (pytorch#66060)
Summary: Pull Request resolved: pytorch#66060 Fixes ``` testTumHistoryAdditionalLaser (caffe2.caffe2.fb.layers.tests.tum_history_test.TestTumHistory) ... caffe2/caffe2/operators/concat_split_op.h:363:74: runtime error: applying non-zero offset 8 to null pointer #0 0x7f8f39d29795 in caffe2::ConcatOp<caffe2::CPUContext>::RunOnDevice() caffe2/caffe2/operators/concat_split_op.h:363 #1 0x7f8f39c4978d in caffe2::Operator<caffe2::CPUContext>::Run(int) caffe2/caffe2/core/operator.h:987 #2 0x7f8f381fe9c9 in caffe2::SimpleNet::Run() caffe2/caffe2/core/net_simple.cc:67 #3 0x7f8f38ee488e in caffe2::Workspace::RunNet(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) caffe2/caffe2/core/workspace.cc:289 ``` Test Plan: Sandcastle Reviewed By: dzhulgakov, xush6528 Differential Revision: D31366205 fbshipit-source-id: 566aa519677c9d371189e4b1f81d595732861efc
1 parent 9c3eb50 commit 1db78c3

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

caffe2/operators/concat_split_op.h

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "caffe2/core/types.h"
77
#include "caffe2/utils/math.h"
88
#include "caffe2/utils/string_utils.h"
9+
#include <c10/util/accumulate.h>
910

1011
namespace caffe2 {
1112

@@ -277,13 +278,13 @@ bool SplitByLengthsOp<Context>::RunOnDevice() {
277278

278279
template <class Context>
279280
bool ConcatOp<Context>::RunOnDevice() {
280-
auto* output = Output(0);
281+
auto *const output = Output(0);
281282

282283
// We can override default options(Context::GetDeviceType())
283284
// by explicitly passing in device type we want
284-
Tensor* split = Output(
285+
Tensor *const split = Output(
285286
1, at::IntArrayRef({InputSize()}), at::dtype<int>().device(CPU));
286-
int* axis_data = split->template mutable_data<int>();
287+
int *const axis_data = split->template mutable_data<int>();
287288
auto& input_zero = Input(0);
288289
int adj_size = input_zero.dim() + (add_axis_ ? 1 : 0);
289290
int canonical_axis = canonical_axis_index_(axis_, adj_size);
@@ -347,7 +348,13 @@ bool ConcatOp<Context>::RunOnDevice() {
347348
} else {
348349
output_dims[canonical_axis] = output_channels;
349350
}
351+
350352
output->Resize(output_dims);
353+
auto *const output_ptr = static_cast<char*>(output->raw_mutable_data(input_zero.dtype()));
354+
if(output_ptr == nullptr){
355+
return true;
356+
}
357+
351358
size_t output_offset = 0;
352359
for (int i = 0; i < InputSize(); ++i) {
353360
auto& input = Input(i);
@@ -358,8 +365,7 @@ bool ConcatOp<Context>::RunOnDevice() {
358365
axis_dim * after,
359366
input.raw_data(),
360367
axis_dim * after,
361-
static_cast<char*>(output->raw_mutable_data(input_zero.dtype())) +
362-
output_offset,
368+
output_ptr + output_offset,
363369
output_channels * after,
364370
&context_,
365371
input_zero.dtype().copy());

0 commit comments

Comments
 (0)