1. pytorch$ tree -L 1
  2. .
  3. ├── android
  4. ├── aten
  5. ├── benchmarks
  6. ├── binaries
  7. ├── c10
  8. ├── caffe2
  9. ├── CITATION
  10. ├── cmake
  11. ├── CMakeLists.txt
  12. ├── CODEOWNERS
  13. ├── CONTRIBUTING.md
  14. ├── docker
  15. ├── docs
  16. ├── ios
  17. ├── LICENSE
  18. ├── Makefile
  19. ├── modules
  20. ├── mypy-files.txt
  21. ├── mypy.ini
  22. ├── mypy-README.md
  23. ├── NOTICE
  24. ├── README.md
  25. ├── requirements.txt
  26. ├── scripts
  27. ├── setup.py
  28. ├── submodules
  29. ├── test
  30. ├── third_party
  31. ├── tools
  32. ├── torch
  33. ├── ubsan.supp
  34. └── version.txt
  35.  
  36. 17 directories, 15 files

解读如下:

.

├── android

├── aten(aten -A TENsor library for C++11,PyTorch的C++ tensor library,aten有大量的代码是来声明和定义Tensor运算相关的逻辑)

├── benchmarks (PyTorch Benchmarks)

├── binaries (用于移动端基准测试,在PEP中运行pytorch移动基准测试,Run pytorch mobile benchmark in PEP)

├── c10(c10-Caffe Tensor Library,核心Tensor实现(手机端+服务端))

├── caffe2 (TensorRT 6.0 support and PyTorch->ONNX->TRT6 unit test。为了复用,2018年4月Facebook宣布将Caffe2的仓库合并到了PyTorch的仓库,从用户层面来复用包含了代码、CI、部署、使用、各种管理维护等。caffe2中network、operators等的实现,会生成libcaffe2.so、libcaffe2_gpu.so、caffe2_pybind11_state.cpython-37m-x86_64-linux-gnu.so(caffe2 CPU Python 绑定)、caffe2_pybind11_state_gpu.cpython-37m-x86_64-linux-gnu.so(caffe2 CUDA Python 绑定),基本上来自旧的caffe2项目)

├── cmake (TensorRT 6.0 support and PyTorch->ONNX->TRT6 unit test)

├── ios (与性能测试有关脚本)

├── modules (与iOS相关)

├── scripts (与iOS应用测试相关,增加 benchmark code to iOS TestApp)

├── submodules (Re-sync with internal repository)

├── third_party (谷歌、Facebook、NVIDIA、Intel等开源的第三方库)

├── tools (用于PyTorch构建的脚本)

├── torch (TH / THC提供了一些hpp头文件,它们是标准的C ++头文件,而不是C头文件。pytorch的variable、autograd、jit、onnx、distribute、model接口、python接口等都在这里声明定义。其中,PyTorch会使用tools/setup_helpers/generate_code.py来动态生成)

细节 展开2级目录

  1. $ tree -L 2
  2. .
  3. ├── android
  4. ├── build.gradle
  5. ├── gradle
  6. ├── gradle.properties
  7. ├── libs
  8. ├── pytorch_android
  9. ├── pytorch_android_torchvision
  10. ├── run_tests.sh
  11. └── settings.gradle
  12. ├── aten
  13. ├── CMakeLists.txt
  14. ├── conda
  15. ├── src
  16. └── tools
  17. ├── benchmarks
  18. ├── fastrnns
  19. ├── framework_overhead_benchmark
  20. ├── operator_benchmark
  21. └── README.md
  22. ├── binaries
  23. ├── at_launch_benchmark.cc
  24. ├── bench_gen
  25. ├── benchmark_args.h
  26. ├── benchmark_helper.cc
  27. ├── benchmark_helper.h
  28. ├── caffe2_benchmark.cc
  29. ├── CMakeLists.txt
  30. ├── convert_and_benchmark.cc
  31. ├── convert_caffe_image_db.cc
  32. ├── convert_db.cc
  33. ├── convert_encoded_to_raw_leveldb.cc
  34. ├── convert_image_to_tensor.cc
  35. ├── core_overhead_benchmark.cc
  36. ├── core_overhead_benchmark_gpu.cc
  37. ├── db_throughput.cc
  38. ├── inspect_gpu.cc
  39. ├── intra_inter_benchmark.cc
  40. ├── make_cifar_db.cc
  41. ├── make_image_db.cc
  42. ├── make_mnist_db.cc
  43. ├── parallel_info.cc
  44. ├── predictor_verifier.cc
  45. ├── print_core_object_sizes_gpu.cc
  46. ├── print_registered_core_operators.cc
  47. ├── run_plan.cc
  48. ├── run_plan_mpi.cc
  49. ├── speed_benchmark.cc
  50. ├── speed_benchmark_torch.cc
  51. ├── split_db.cc
  52. ├── tsv_2_proto.cc
  53. ├── tutorial_blob.cc
  54. └── zmq_feeder.cc
  55. ├── c10
  56. ├── CMakeLists.txt
  57. ├── core
  58. ├── cuda
  59. ├── hip
  60. ├── macros
  61. ├── test
  62. └── util
  63. ├── caffe2
  64. ├── c2_aten_srcs.bzl
  65. ├── CMakeLists.txt
  66. ├── contrib
  67. ├── core
  68. ├── cuda_rtc
  69. ├── db
  70. ├── distributed
  71. ├── experiments
  72. ├── ideep
  73. ├── image
  74. ├── __init__.py
  75. ├── mobile
  76. ├── mpi
  77. ├── observers
  78. ├── onnx
  79. ├── operators
  80. ├── opt
  81. ├── perfkernels
  82. ├── predictor
  83. ├── proto
  84. ├── python
  85. ├── quantization
  86. ├── queue
  87. ├── README.md
  88. ├── release-notes.md
  89. ├── requirements.txt
  90. ├── serialize
  91. ├── sgd
  92. ├── share
  93. ├── test
  94. ├── transforms
  95. ├── utils
  96. ├── VERSION_NUMBER
  97. └── video
  98. ├── CITATION
  99. ├── cmake
  100. ├── BuildVariables.cmake
  101. ├── Caffe2Config.cmake.in
  102. ├── Caffe2ConfigVersion.cmake.in
  103. ├── cmake_uninstall.cmake.in
  104. ├── Codegen.cmake
  105. ├── Dependencies.cmake
  106. ├── External
  107. ├── GoogleTestPatch.cmake
  108. ├── iOS.cmake
  109. ├── MiscCheck.cmake
  110. ├── Modules
  111. ├── Modules_CUDA_fix
  112. ├── ProtoBuf.cmake
  113. ├── ProtoBufPatch.cmake
  114. ├── public
  115. ├── Summary.cmake
  116. ├── TorchConfig.cmake.in
  117. ├── TorchConfigVersion.cmake.in
  118. ├── Utils.cmake
  119. └── Whitelist.cmake
  120. ├── CMakeLists.txt
  121. ├── CODEOWNERS
  122. ├── CONTRIBUTING.md
  123. ├── docker
  124. ├── caffe2
  125. └── pytorch
  126. ├── docs
  127. ├── caffe2
  128. ├── cpp
  129. ├── libtorch.rst
  130. ├── make.bat
  131. ├── Makefile
  132. ├── requirements.txt
  133. └── source
  134. ├── ios
  135. ├── LibTorch.h
  136. ├── LibTorch.podspec
  137. ├── README.md
  138. └── TestApp
  139. ├── LICENSE
  140. ├── Makefile
  141. ├── modules
  142. ├── CMakeLists.txt
  143. ├── detectron
  144. ├── module_test
  145. ├── observers
  146. └── rocksdb
  147. ├── mypy-files.txt
  148. ├── mypy.ini
  149. ├── mypy-README.md
  150. ├── NOTICE
  151. ├── README.md
  152. ├── requirements.txt
  153. ├── scripts
  154. ├── add_apache_header.sh
  155. ├── apache_header.txt
  156. ├── apache_python.txt
  157. ├── appveyor
  158. ├── build_android.sh
  159. ├── build_host_protoc.sh
  160. ├── build_ios.sh
  161. ├── build_local.sh
  162. ├── build_mobile.sh
  163. ├── build_pytorch_android.sh
  164. ├── build_raspbian.sh
  165. ├── build_tegra_x1.sh
  166. ├── build_tizen.sh
  167. ├── build_windows.bat
  168. ├── diagnose_protobuf.py
  169. ├── fbcode-dev-setup
  170. ├── get_python_cmake_flags.py
  171. ├── model_zoo
  172. ├── onnx
  173. ├── proto.ps1
  174. ├── read_conda_versions.sh
  175. ├── README.md
  176. ├── remove_apache_header.sh
  177. ├── run_mobilelab.py
  178. ├── temp.sh
  179. └── xcode_build.rb
  180. ├── setup.py
  181. ├── submodules
  182. └── nervanagpu-rev.txt
  183. ├── test
  184. ├── backward_compatibility
  185. ├── bottleneck
  186. ├── common_cuda.py
  187. ├── common_device_type.py
  188. ├── common_distributed.py
  189. ├── common_methods_invocations.py
  190. ├── common_nn.py
  191. ├── common_quantization.py
  192. ├── common_quantized.py
  193. ├── common_utils.py
  194. ├── cpp
  195. ├── cpp_api_parity
  196. ├── cpp_extensions
  197. ├── custom_operator
  198. ├── data
  199. ├── dist_autograd_test.py
  200. ├── dist_utils.py
  201. ├── error_messages
  202. ├── expect
  203. ├── expecttest.py
  204. ├── HowToWriteTestsUsingFileCheck.md
  205. ├── hypothesis_utils.py
  206. ├── jit
  207. ├── jit_utils.py
  208. ├── onnx
  209. ├── optim
  210. ├── rpc_test.py
  211. ├── run_test.py
  212. ├── simulate_nccl_errors.py
  213. ├── test_autograd.py
  214. ├── test_c10d.py
  215. ├── test_c10d_spawn.py
  216. ├── test_cpp_api_parity.py
  217. ├── test_cpp_extensions.py
  218. ├── test_cuda_primary_ctx.py
  219. ├── test_cuda.py
  220. ├── test_dataloader.py
  221. ├── test_data_parallel.py
  222. ├── test_dist_autograd_fork.py
  223. ├── test_dist_autograd_spawn.py
  224. ├── test_distributed.py
  225. ├── test_distributions.py
  226. ├── test_docs_coverage.py
  227. ├── test_expecttest.py
  228. ├── test_fake_quant.py
  229. ├── test_function_schema.py
  230. ├── test_indexing.py
  231. ├── test_jit_disabled.py
  232. ├── test_jit_fuser.py
  233. ├── test_jit.py
  234. ├── test_jit_py3.py
  235. ├── test_jit_string.py
  236. ├── test_logging.py
  237. ├── test_mkldnn.py
  238. ├── test_module
  239. ├── test_multiprocessing.py
  240. ├── test_multiprocessing_spawn.py
  241. ├── test_namedtensor.py
  242. ├── test_namedtuple_return_api.py
  243. ├── test_nccl.py
  244. ├── test_nn.py
  245. ├── test_numba_integration.py
  246. ├── test_optim.py
  247. ├── test_qat.py
  248. ├── test_quantization.py
  249. ├── test_quantized_models.py
  250. ├── test_quantized_nn_mods.py
  251. ├── test_quantized.py
  252. ├── test_quantized_tensor.py
  253. ├── test_quantizer.py
  254. ├── test_rpc_fork.py
  255. ├── test_rpc_spawn.py
  256. ├── test_sparse.py
  257. ├── test_tensorboard.py
  258. ├── test_throughput_benchmark.py
  259. ├── test_torch.py
  260. ├── test_type_hints.py
  261. ├── test_type_info.py
  262. ├── test_type_promotion.py
  263. └── test_utils.py
  264. ├── third_party(谷歌、FacebookNVIDIAIntel等开源的第三方库)
  265. ├── benchmark(谷歌开源的benchmark库)
  266. ├── cpuinfoFacebook开源的cpuinfo,检测cpu信息)
  267. ├── cubNVIDIA开源的CUB is a flexible library of cooperative threadblock primitives and other utilities for CUDA kernel programming
  268. ├── eigen(线性代数矩阵运算库)
  269. ├── fbgemmFacebook开源的低精度高性能的矩阵运算库,目前作为caffe2 x86的量化运算符的backend
  270. ├── foxiONNXIFI with Facebook Extension
  271. ├── FP16Conversion to/from half-precision floating point formats
  272. ├── FXdivC99/C++ header-only library for division via fixed-point multiplication by inverse
  273. ├── gemmlowp(谷歌开源的矩阵乘法运算库Low-precision matrix multiplicationhttps://github.com/google/gemmlowp)
  274. ├── glooFacebook开源的跨机器训练的通信库Collective communications library with various primitives for multi-machine training
  275. ├── googletest(谷歌开源的UT框架)
  276. ├── ideepIntel开源的使用MKL-DNN做的神经网络加速库)
  277. ├── ios-cmake(用于ioscmake工具链文件)
  278. ├── miniz-2.0.8(数据压缩库,Miniz is a lossless, high performance data compression library in a single source file
  279. ├── ncclNVIDIA开源的多GPU通信的优化原语,Optimized primitives for collective multi-GPU communication
  280. ├── neon2sse(与ARM有关,intende to simplify ARM->IA32 porting
  281. ├── NNPACK(多核心CPU加速包用于神经网络,Acceleration package for neural networks on multi-core CPUs
  282. ├── onnxOpen Neural Network ExchangeFacebook开源的神经网络模型交换格式,目前Pytorchcaffe2ncnncoreml等都可以对接)
  283. ├── onnx-tensorrtONNX-TensorRT: TensorRT backend for ONNX
  284. ├── protobuf(谷歌开源的protobuf
  285. ├── psimd(便携式128SIMD内部函数,Portable 128-bit SIMD intrinsics
  286. ├── pthreadpool(用于C/C++的多线程池,pthread-based thread pool for C/C++)
  287. ├── pybind11C ++ 11Python之间的无缝可操作性支撑库,Seamless operability between C++11 and Python
  288. ├── python-enumPython标准枚举模块,Mirror of enum34 package (PeachPy dependency) from PyPI to be used in submodules
  289. ├── python-peachpy(用于编写高性能汇编内核的Python框架,PeachPy is a Python framework for writing high-performance assembly kernels
  290. ├── python-sixPython 2 and 3兼容性库)
  291. ├── QNNPACKFacebook开源的面向移动平台的神经网络量化加速库)
  292. ├── README.md
  293. ├── sleefSIMD Library for Evaluating Elementary FunctionsSIMD库,用于评估基本函数)
  294. ├── tbbIntel开源的官方线程构建Blocks,Official Threading Building Blocks (TBB))
  295. └── zstd((Facebook开源的Zstandard,快速实时压缩算法库)
  296. ├── tools
  297. ├── amd_build
  298. ├── aten_mirror.sh
  299. ├── autograd
  300. ├── build_libtorch.py
  301. ├── build_pytorch_libs.py
  302. ├── build_variables.py
  303. ├── clang_format.py
  304. ├── clang_tidy.py
  305. ├── docker
  306. ├── download_mnist.py
  307. ├── flake8_hook.py
  308. ├── generated_dirs.txt
  309. ├── git_add_generated_dirs.sh
  310. ├── git-pre-commit
  311. ├── git_reset_generated_dirs.sh
  312. ├── __init__.py
  313. ├── jit
  314. ├── pyi
  315. ├── pytorch.version
  316. ├── README.md
  317. ├── setup_helpers
  318. └── shared
  319. ├── torch
  320. ├── abi-check.cpp
  321. ├── autograd
  322. ├── backends
  323. ├── _classes.py
  324. ├── CMakeLists.txt
  325. ├── __config__.py
  326. ├── contrib
  327. ├── csrc
  328. ├── cuda
  329. ├── custom_class.h
  330. ├── distributed
  331. ├── distributions
  332. ├── extension.h
  333. ├── for_onnx
  334. ├── functional.py
  335. ├── __future__.py
  336. ├── hub.py
  337. ├── __init__.py
  338. ├── __init__.pyi.in
  339. ├── jit
  340. ├── _jit_internal.py
  341. ├── legacy
  342. ├── lib
  343. ├── multiprocessing
  344. ├── _namedtensor_internals.py
  345. ├── nn
  346. ├── onnx
  347. ├── _ops.py
  348. ├── optim
  349. ├── py.typed
  350. ├── quantization
  351. ├── quasirandom.py
  352. ├── random.py
  353. ├── README.txt
  354. ├── script.h
  355. ├── serialization.py
  356. ├── _six.py
  357. ├── sparse
  358. ├── _storage_docs.py
  359. ├── storage.py
  360. ├── _tensor_docs.py
  361. ├── tensor.py
  362. ├── _tensor_str.py
  363. ├── testing
  364. ├── _torch_docs.py
  365. ├── utils
  366. ├── _utils_internal.py
  367. └── _utils.py
  368. ├── ubsan.supp
  369. └── version.txt
  370.  
  371. 148 directories, 219 files

其中 第三方库:third_party(谷歌、Facebook、NVIDIA、Intel等开源的第三方库):

├── third_party(谷歌、Facebook、NVIDIA、Intel等开源的第三方库)

│       ├── benchmark(谷歌开源的benchmark库)

│       ├── cpuinfo(Facebook开源的cpuinfo,检测cpu信息)

│       ├── cub(NVIDIA开源的CUB is a flexible library of cooperative threadblock primitives and other utilities for CUDA kernel programming)

│       ├── eigen(线性代数矩阵运算库)

│       ├── fbgemm(Facebook开源的低精度高性能的矩阵运算库,目前作为caffe2 x86的量化运算符的backend)

│       ├── foxi(ONNXIFI with Facebook Extension)

│       ├── FP16(Conversion to/from half-precision floating point formats)

│       ├── FXdiv(C99/C++ header-only library for division via fixed-point multiplication by inverse)

│       ├── gemmlowp(谷歌开源的矩阵乘法运算库Low-precision matrix multiplication,https://github.com/google/gemmlowp)

│       ├── gloo(Facebook开源的跨机器训练的通信库Collective communications library with various primitives for multi-machine training)

│       ├── googletest(谷歌开源的UT框架)

│       ├── ideep(Intel开源的使用MKL-DNN做的神经网络加速库)

│       ├── ios-cmake(用于ios的cmake工具链文件)

│       ├── miniz-2.0.8(数据压缩库,Miniz is a lossless, high performance data compression library in a single source file)

│       ├── nccl(NVIDIA开源的多GPU通信的优化原语,Optimized primitives for collective multi-GPU communication)

│       ├── neon2sse(与ARM有关,intende to simplify ARM->IA32 porting)

│       ├── NNPACK(多核心CPU加速包用于神经网络,Acceleration package for neural networks on multi-core CPUs)

│       ├── onnx(Open Neural Network Exchange,Facebook开源的神经网络模型交换格式,目前Pytorch、caffe2、ncnn、coreml等都可以对接)

│       ├── onnx-tensorrt(ONNX-TensorRT: TensorRT backend for ONNX)

│       ├── protobuf(谷歌开源的protobuf)

│       ├── psimd(便携式128位SIMD内部函数,Portable 128-bit SIMD intrinsics)

│       ├── pthreadpool(用于C/C++的多线程池,pthread-based thread pool for C/C++)

│       ├── pybind11(C ++ 11和Python之间的无缝可操作性支撑库,Seamless operability between C++11 and Python)

│       ├── python-enum(Python标准枚举模块,Mirror of enum34 package (PeachPy dependency) from PyPI to be used in submodules)

│       ├── python-peachpy(用于编写高性能汇编内核的Python框架,PeachPy is a Python framework for writing high-performance assembly kernels)

│       ├── python-six(Python 2 and 3兼容性库)

│       ├── QNNPACK(Facebook开源的面向移动平台的神经网络量化加速库)

│       ├── README.md

│       ├── sleef(SIMD Library for Evaluating Elementary Functions,SIMD库,用于评估基本函数)

│       ├── tbb(Intel开源的官方线程构建Blocks,Official Threading Building Blocks (TBB))

│       └── zstd((Facebook开源的Zstandard,快速实时压缩算法库)

Pytorch核心分为5大块:

1. c10(c10-Caffe Tensor Library,核心Tensor实现(手机端+服务端))

2. aten(aten -A TENsor library for C++11,PyTorch的C++ tensor library,aten有大量的代码是来声明和定义Tensor运算相关的逻辑)

3. caffe2 (TensorRT 6.0 support and PyTorch->ONNX->TRT6 unit test。为了复用,2018年4月Facebook宣布将Caffe2的仓库合并到了PyTorch的仓库,从用户层面来复用包含了代码、CI、部署、使用、各种管理维护等。caffe2中network、operators等的实现,会生成libcaffe2.so、libcaffe2_gpu.so、caffe2_pybind11_state.cpython-37m-x86_64-linux-gnu.so(caffe2 CPU Python 绑定)、caffe2_pybind11_state_gpu.cpython-37m-x86_64-linux-gnu.so(caffe2 CUDA Python 绑定),基本上来自旧的caffe2项目)

4. torch (TH / THC提供了一些hpp头文件,它们是标准的C ++头文件,而不是C头文件。pytorch的variable、autograd、jit、onnx、distribute、model接口、python接口等都在这里声明定义。其中,PyTorch会使用tools/setup_helpers/generate_code.py来动态生成)

5. third_party (谷歌、Facebook、NVIDIA、Intel等开源的第三方库)

具体详情如下:

c10下的核心部件(c10-Caffe Tensor Library,最核心Tensor实现(手机端+服务端)。请注意,C10库应保持最小的依赖关系-特别是,它不应该依赖于任何特定于实现或后端的库。它尤其不应依赖于任何生成的protobuf头文件,因为protobuf头文件将可传递性地迫使一个人链接到特定的protobuf版本),具体包括如下:

├── c10

│       ├── CMakeLists.txt

│       ├── core

│       ├── cuda

│       ├── hip

│       ├── macros

│       ├── test

│       └── util

Aten下的核心部件(aten -A TENsor library for C++11,PyTorch的C++ tensor library,aten有大量的代码是来声明和定义Tensor运算相关的逻辑):

$ tree -L 2

.

├── CMakeLists.txt

├── conda

│    ├── build.sh

│    └── meta.yaml

├── src

│    ├── ATen

│    ├── README.md

│    ├── TH

│    ├── THC

│    ├── THCUNN

│    └── THNN

└── tools

├── run_tests.sh

├── test_install.sh

└── valgrind.sup

8 directories, 7 files

其中,Aten/ src下

该目录包含PyTorch低级别的tensor libraries库,同时新的C++版Aten被构建,这些低级别的tensor libraries库可以追溯到最原始的Torch项目,该目录包含库如下:

* TH = TorcH

* THC = TorcH Cuda

* THCS = TorcH Cuda Sparse (now defunct)—不使用了

* THCUNN = TorcH CUda Neural Network (see cunn)

* THNN = TorcH Neural Network

* THS = TorcH Sparse (now defunct) —不使用了

caffe2模块

Caffe2是一个轻量级,模块化和可扩展的深度学习框架。支持TensorRT 6.0 (优化加速) and PyTorch->ONNX->TRT6 unit test。为了复用,2018年4月Facebook宣布将Caffe2的仓库合并到了PyTorch的仓库,从用户层面来复用包含了代码、CI、部署、使用、各种管理维护等。caffe2中network、operators等的实现,会生成libcaffe2.so、libcaffe2_gpu.so、caffe2_pybind11_state.cpython-37m-x86_64-linux-gnu.so(caffe2 CPU Python 绑定)、caffe2_pybind11_state_gpu.cpython-37m-x86_64-linux-gnu.so(caffe2 CUDA Python 绑定),基本上来自旧的caffe2项目。

torch下核心部件(TH / THC提供了一些hpp头文件,它们是标准的C ++头文件,而不是C头文件。pytorch的variable、autograd、jit、onnx、distribute、model接口、python接口等都在这里声明定义。理想情况下,根本不会安装这些标头。相反,应该使用公共函数(在类似THTensor.h的头文件中,而不是THTensor.hpp的头文件中)来操纵这些结构。但是,在Torch / csrc中有一些地方违反了这种抽象。它们头文件有指向此注释的指针。当重构THTensor的核和相关结构时,必须重构每个站点。其中,PyTorch会使用tools/setup_helpers/generate_code.py来动态生成):

.

├── autograd (梯度处理)

├── backends (后向处理,包含cuda、cudnn、mkl、mkldnn、openmp和quantized库)

├── csrc (csrc目录包含与Python集成有关的所有代码。这与lib(它包含与Python无关的Torch库)形成对比。csrc取决于lib,反之则不然。具体包含api、autograd、cuda、distributed、generic、jit、multiprocessing、onnx、tensor和utils)

├── cuda (cuda)

├── distributed (分布式处理,包括autograd)

├── distributions

├── jit (用于最优性能编译)

├── legacy (低于0.5版本才有)

├── lib (它包含与Python无关的Torch库,具体包括:c10d、libshm和libshm_windows)

├── multiprocessing (cuda多线程处理)

├── nn (与神经网络有关的操作与声明,具体包括backends、intrinsic、modules、parallel、qat、quantized和utils)

├── onnx (模型交换格式)

├── optim (优化)

├── quantization (量化)

├── utils (具体包括backcompat、bottleneck、data、ffi、hipify和tensorboard)

third_party三方模块

谷歌、Facebook、NVIDIA、Intel等开源的第三方库,具体包含请见前文。

分层的视角看待:

1           第一层C10: 最核心的Tensor实现,手机端、服务端都用;

2           第二层ATen + TH*: Tensor算法的实现,由ATen和TH*组成这一层面;这一层依赖上一层(第一层)。目前已将ATen 某些core往C10上移植,并且将Torch往ATen上移植;

3           第三层Caffe2: 是一个轻量级,模块化和可扩展的深度学习框架。支持TensorRT 6.0 (优化加速) and PyTorch->ONNX->TRT6 unit test。caffe2中network、operators等的实现,会生成libcaffe2.so、libcaffe2_gpu.so、caffe2_pybind11_state.cpython-37m-x86_64-linux-gnu.so(caffe2 CPU Python 绑定)、caffe2_pybind11_state_gpu.cpython-37m-x86_64-linux-gnu.so(caffe2 CUDA Python 绑定);基本上来自于旧的caffe2项目,这一层依赖上一层(第二层);

4           第四层Torch,PyTorch的实现,TH / THC提供了一些hpp头文件,它们是标准的C ++头文件,而不是C头文件。pytorch的variable、autograd、jit、onnx、distribute、model接口、python接口等都在这里声明定义,这一层会生成libtorch.so和libtorch_python.so(Python绑定),依赖ATen+TH*(第二层),不过因为ATen+TH*的逻辑被封装在了libcaffe2.so,因此这一层要直接依赖上一层(第三层)。

5           其他,如hird_party三方库:谷歌、Facebook、NVIDIA、Intel等开源的第三方库,用于支撑ATen + TH*、Caffe2和Torch。

Pytorch1.3源码解析-第一篇的更多相关文章

  1. Spring源码解析 | 第一篇 :IntelliJ IDEA2019.3编译Spring5.3.x源码

    前言 工欲善其事必先利其器.学习和深读Spring源码一个重要的前提:编译源码到我们的本地环境.这样方便我们在本地环境添加注释.断点追踪.查看类或接口的继承关系等等,更加高效的学习Spring源码.个 ...

  2. Apktool源码解析——第一篇

    著名的apktool是android逆向界用的最普遍的一个工具,这个项目的原始地址在这里http://code.google.com/p/android-apktool/,但是你们都懂的在天朝谷歌是无 ...

  3. jQuery2.x源码解析(设计篇)

    jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 这一篇笔者主要以设计的角度探索jQuery的源代 ...

  4. jQuery2.x源码解析(缓存篇)

    jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 缓存是jQuery中的又一核心设计,jQuery ...

  5. jQuery2.x源码解析(构建篇)

    jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 笔者阅读了园友艾伦 Aaron的系列博客< ...

  6. jQuery2.x源码解析(回调篇)

    jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 通过艾伦的博客,我们能看出,jQuery的pro ...

  7. Shiro源码解析-Session篇

    上一篇Shiro源码解析-登录篇中提到了在登录验证成功后有对session的处理,但未详细分析,本文对此部分源码详细分析下. 1. 分析切入点:DefaultSecurityManger的login方 ...

  8. linux0.11内核源码剖析:第一篇 内存管理、memory.c【转】

    转自:http://www.cnblogs.com/v-July-v/archive/2011/01/06/1983695.html linux0.11内核源码剖析第一篇:memory.c July  ...

  9. myBatis源码解析-数据源篇(3)

    前言:我们使用mybatis时,关于数据源的配置多使用如c3p0,druid等第三方的数据源.其实mybatis内置了数据源的实现,提供了连接数据库,池的功能.在分析了缓存和日志包的源码后,接下来分析 ...

随机推荐

  1. 转发: JS中的call()和apply()方法和区别 --小白变色记

    一.方法定义: apply:调用一个对象的一个方法,用另一个对象替换当前对象.例如:B.apply(A, arguments);即A对象应用B对象的方法. call:调用一个对象的一个方法,用另一个对 ...

  2. L1731

    生日蛋糕 输入的东西,一个是蛋糕的体积,一个是蛋糕的层数, 简言之,我觉得这个就是两个dfs的状态. 一旦越过这两个就得return ,同时这两个东西也参与进去了dfs. 至于题目, 第一个要求是层数 ...

  3. 在windbg调试.net时遇到的问题

    调试.net应用程序时,有时会在windbg中收到错误消息.以下是我最常遇到的几个问题. Failed to start stack walk---启动堆栈遍历失败 如果你运行sos命令!clrsta ...

  4. swiper轮播图插件

    一.简介 ①Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端.Swiper能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果. ②Swiper 是一款免费以及 ...

  5. “知乎杯”2018 CCF 大学生计算机系统与程序设计竞赛 绝地求生(battleground)

    /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-ts ...

  6. 训练集,验证集,测试集(以及为什么要使用验证集?)(Training Set, Validation Set, Test Set)

    对于训练集,验证集,测试集的概念,很多人都搞不清楚.网上的文章也是鱼龙混杂,因此,现在来把这方面的知识梳理一遍.让我们先来看一下模型验证(评估)的几种方式. 在机器学习中,当我们把模型训练出来以后,该 ...

  7. vue引入nutUI

    这段时间需要做一个移动端项目,我需要选着用哪个UI库,其它的UI库没多看,看了看mintUI和nutUI,感觉mintUI的功能要比nutUI的功能少点,mintUI是饿了么团队开发的,而nutUI是 ...

  8. ORACLE多条件的统计查询(case when)

    前几天要做一个统计查询的功能,因为涉及多张表,多种条件的统计分析.一开始便想到了UNION和IF语句,然后写了1000多行代码,就为了查30条数据觉得不应该. 然后就开始百度,多种条件下的统计.然后有 ...

  9. 第09组 Beta冲刺(3/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...

  10. 如何使用Salt Pillar

    作者言 Salt的网站上有两篇关于Pillar的文档(一,二),其中一篇内容很少,我觉得写成一篇文章更合适.本文的逻辑结构没有参照官方文档,而是根据我自己对Pillar的理解组织内容,希望能够把这个概 ...