Kernel gets Stack* instead of ArrayRef<IValue> (#16282)
authorSebastian Messmer <messmer@fb.com>
Wed, 30 Jan 2019 02:02:21 +0000 (18:02 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Wed, 30 Jan 2019 02:22:51 +0000 (18:22 -0800)
commit12f92f453bd059fd5e58a4e49f10e3de638f0019
tree13fca65193031398dae2995b268ad74ff14872cf
parent6249442e900a6b445dd74b3a6cfd5d0fff945a07
Kernel gets Stack* instead of ArrayRef<IValue> (#16282)

Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/16282

This changes the core kernel abstraction to be a function taking a stack, popping its arguments from the stack and pushing results to the stack,
instead of getting arguments as ArrayRef<IValue> and returning an output IValue.

Caffe2 operators need to have a way to pass in preallocated output tensors.
The convention for them is to get all inputs *and* outputs on the stack and also return all of them, i.e. a caffe2 op will always have inputs == outputs.
This will probably change in later diffs towards making the outputs in-arguments optional in the JIT schema.

Reviewed By: ezyang

Differential Revision: D13792335

fbshipit-source-id: e9cc2b5e438cc4653e1f701633a154b92b604932
aten/src/ATen/core/dispatch/DispatchTable.h
aten/src/ATen/core/dispatch/Dispatcher.h
aten/src/ATen/core/dispatch/OpSchema.h
aten/src/ATen/core/opschema/layer_norm.h
caffe2/core/operator_c10wrapper.h
caffe2/operators/experimental/c10/schemas/concat.h
caffe2/operators/experimental/c10/schemas/filler.h
caffe2/operators/layer_norm_op.cc
torch/csrc/jit/c10_ops/layer_norm.cpp