Files
pytorch/torch
Will Feng 1364104054 Fix version counter sharing in set_data() (#20391)
Summary:
In https://github.com/pytorch/pytorch/pull/18223/files#diff-77a6f3462f2233b921d3042412fed6d3R178, we used `auto saved_version_ = data_.unsafeGetTensorImpl()->version_counter().current_version()` and then `new_data_impl_copy->set_version_counter(saved_version_)`, which actually doesn't preserve the original semantics that `var.set_data(tensor)` should keep `var`'s version counter object intact. This PR fixes the bug and adds test to make sure it doesn't happen again.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/20391

Differential Revision: D15323430

Pulled By: yf225

fbshipit-source-id: e3ba49b51ec8ccecd51c80cb182387f74cfd2b2b
2019-05-13 16:03:42 -07:00
..
2019-05-13 11:24:22 -07:00
2018-09-20 14:00:54 -07:00
2019-05-06 08:08:37 -07:00
2019-04-02 16:17:05 -07:00
2019-04-03 14:14:18 -07:00
2019-04-17 21:04:33 -07:00
2019-04-01 16:03:58 -07:00
2019-03-26 07:53:07 -07:00
2018-04-28 07:45:02 -04:00

Note [TH abstraction violation]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

TH/THC provide some hpp headers, which are proper C++ headers rather than
C headers.  These headers serve double duty as *internal implementation
detail* headers, whose contents should largely not be used by external
clients.

Ideally, we would not install these headers at all; instead, you should
use public functions (in headers like `THTensor.h`, NOT `THTensor.hpp`)
to manipulate these structs.  However, there are a few places
in torch/csrc where we violate this abstraction.  They are marked with
a pointer to this note.  Each of those sites will have to be refactored
when we refactor the guts of THTensor and related structures.