mirror of
https://github.com/saymrwulf/pytorch.git
synced 2026-05-14 20:57:59 +00:00
Changelist:
- Move *.c to *.cpp
- Change includes of ".c" to ".cpp"
- A bunch of cmake configuration modifying CMAKE_C_FLAGS changed
to CMAKE_CXX_FLAGS or add_compile_options, because if you do CMAKE_C_FLAGS it only applies when you compile C code
- Explicitly cast void* to T* in a number of places
- Delete extern "C" { ... } blocks; instead, properly apply TH_API to everything that should have it (TH_API handles extern "C")
- Stop using stdatomic.h, instead, use <atomic>. This resulted in a bunch of placement-new/delete to be "totally properly correct"
- Refactor of THLongStorageView to not have static constructor methods (since it no longer has a copy/move constructor)
- Documentation about how the TH C interface (and extern C business) works
- Note that THD master_worker mode is dead
- C++ headers in TH libraries are given .hpp suffix, to make it less likely that you'll confuse them with the C-compatible headers (now suffixed .h)
- New function THCStream_stream and THCStream_device to project out fields of THCStream instead of accessing fields directly
- New function THStorage_(retainIfLive), which is equivalent to a retain but only if the refcount is greater than zero.
- In general, I tried to avoid using hpp headers outside of ATen/TH. However, there were a few places where I gave up and depended on the headers for my own sanity. See Note [TH abstraction violation] for all the sites where this occurred. All other sites were refactored to use functions
- Some extra Werror fixes (char* versus const char*)
14 lines
703 B
Text
14 lines
703 B
Text
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.
|