Why is PyTorch split into so many libraries? What's the point of these splits? What do Windows, mobile and CUDA have to do with the library splits?

Further reading:

  • c10 folder architecture description https://github.com/.../wiki/Software-Architecture-for-c10
  • Implementation of the TORCH_API visibility macros https://github.com/.../blob/master/c10/macros/Export.h
  • An example of virtual call based hook to break library structure https://github.com/pytorch/pytorch/blob/master/c10/core/impl/DeviceGuardImplInterface.h