| 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. |