mindspore 2.1.0__cp37-cp37m-manylinux1_x86_64.whl → 2.2.10__cp37-cp37m-manylinux1_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mindspore might be problematic. Click here for more details.

Files changed (580) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +4 -1
  3. mindspore/_akg/akg/build_module.py +5 -6
  4. mindspore/_akg/akg/composite/build_module.py +46 -19
  5. mindspore/_akg/akg/composite/split_stitch.py +10 -11
  6. mindspore/_akg/akg/ms/info_version_adapt.py +67 -1
  7. mindspore/_akg/akg/tvm/api.py +4 -3
  8. mindspore/_akg/akg/tvm/autotvm/__init__.py +1 -2
  9. mindspore/_akg/akg/tvm/autotvm/graph_tuner/base_graph_tuner.py +1 -5
  10. mindspore/_akg/akg/tvm/autotvm/measure/__init__.py +1 -1
  11. mindspore/_akg/akg/tvm/autotvm/measure/measure.py +1 -10
  12. mindspore/_akg/akg/tvm/autotvm/measure/measure_methods.py +1 -372
  13. mindspore/_akg/akg/tvm/build_module.py +16 -1
  14. mindspore/_akg/akg/tvm/contrib/graph_runtime.py +0 -53
  15. mindspore/_akg/akg/tvm/hybrid/parser.py +7 -6
  16. mindspore/_akg/akg/tvm/ir_builder.py +1 -1
  17. mindspore/_akg/akg/tvm/module.py +1 -2
  18. mindspore/_akg/akg/tvm/stmt.py +2 -2
  19. mindspore/_akg/akg/utils/ascend_profilier/__init__.py +0 -0
  20. mindspore/_akg/akg/utils/ascend_profilier/cann_file_parser.py +76 -0
  21. mindspore/_akg/akg/utils/ascend_profilier/file_manager.py +56 -0
  22. mindspore/_akg/akg/utils/ascend_profilier/op_summary_bean.py +23 -0
  23. mindspore/_akg/akg/utils/ascend_profilier/op_summary_headers.py +8 -0
  24. mindspore/_akg/akg/utils/ascend_profilier/op_summary_parser.py +42 -0
  25. mindspore/_akg/akg/utils/ascend_profilier/path_manager.py +65 -0
  26. mindspore/_akg/akg/utils/composite_op_helper.py +9 -10
  27. mindspore/_akg/akg/utils/kernel_exec.py +98 -274
  28. mindspore/_akg/akg/utils/result_analysis.py +4 -24
  29. mindspore/_akg/akg/utils/tbe_codegen_utils.py +219 -0
  30. mindspore/_akg/akg/utils/util.py +38 -0
  31. mindspore/_c_dataengine.cpython-37m-x86_64-linux-gnu.so +0 -0
  32. mindspore/_c_expression.cpython-37m-x86_64-linux-gnu.so +0 -0
  33. mindspore/_c_mindrecord.cpython-37m-x86_64-linux-gnu.so +0 -0
  34. mindspore/_check_jit_forbidden_api.py +3 -1
  35. mindspore/_checkparam.py +23 -29
  36. mindspore/_extends/graph_kernel/__init__.py +0 -1
  37. mindspore/_extends/graph_kernel/model/graph_split.py +84 -76
  38. mindspore/_extends/graph_kernel/model/model_builder.py +9 -50
  39. mindspore/_extends/graph_kernel/splitter.py +4 -11
  40. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +122 -15
  41. mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +84 -67
  42. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +4 -2
  43. mindspore/_extends/parallel_compile/akg_compiler/util.py +10 -7
  44. mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +2 -2
  45. mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +6 -5
  46. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +1 -1
  47. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -1
  48. mindspore/_extends/parse/__init__.py +12 -15
  49. mindspore/_extends/parse/namespace.py +7 -33
  50. mindspore/_extends/parse/parser.py +61 -71
  51. mindspore/_extends/parse/resources.py +1 -1
  52. mindspore/_extends/parse/standard_method.py +74 -104
  53. mindspore/_extends/parse/trope.py +1 -1
  54. mindspore/_extends/remote/kernel_build_server.py +25 -7
  55. mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
  56. mindspore/_install_custom.py +43 -0
  57. mindspore/_mindspore_offline_debug.cpython-37m-x86_64-linux-gnu.so +0 -0
  58. mindspore/amp.py +47 -11
  59. mindspore/bin/cache_admin +0 -0
  60. mindspore/bin/cache_server +0 -0
  61. mindspore/boost/boost.py +1 -8
  62. mindspore/boost/boost_cell_wrapper.py +3 -2
  63. mindspore/boost/grad_accumulation.py +1 -1
  64. mindspore/boost/group_loss_scale_manager.py +8 -7
  65. mindspore/common/__init__.py +5 -3
  66. mindspore/common/_jit_fallback_utils.py +6 -0
  67. mindspore/common/_register_for_adapter.py +2 -0
  68. mindspore/common/_register_for_tensor.py +2 -2
  69. mindspore/common/_stub_tensor.py +13 -0
  70. mindspore/common/_utils.py +13 -0
  71. mindspore/common/api.py +174 -259
  72. mindspore/common/auto_dynamic_shape.py +494 -0
  73. mindspore/common/dtype.py +18 -11
  74. mindspore/common/dump.py +6 -4
  75. mindspore/common/initializer.py +14 -14
  76. mindspore/common/jit_config.py +33 -15
  77. mindspore/common/lazy_inline.py +126 -7
  78. mindspore/common/mindir_util.py +101 -0
  79. mindspore/common/parameter.py +51 -41
  80. mindspore/common/seed.py +4 -4
  81. mindspore/common/sparse_tensor.py +13 -14
  82. mindspore/common/tensor.py +243 -165
  83. mindspore/communication/__init__.py +7 -4
  84. mindspore/communication/_comm_helper.py +83 -4
  85. mindspore/communication/management.py +152 -84
  86. mindspore/config/op_info.config +14 -3
  87. mindspore/config/super_bar_config.json +4 -2
  88. mindspore/context.py +152 -61
  89. mindspore/dataset/__init__.py +5 -5
  90. mindspore/dataset/audio/__init__.py +2 -2
  91. mindspore/dataset/audio/transforms.py +52 -52
  92. mindspore/dataset/callback/ds_callback.py +16 -2
  93. mindspore/dataset/core/config.py +68 -51
  94. mindspore/dataset/engine/cache_client.py +28 -5
  95. mindspore/dataset/engine/datasets.py +250 -112
  96. mindspore/dataset/engine/datasets_audio.py +43 -211
  97. mindspore/dataset/engine/datasets_standard_format.py +16 -35
  98. mindspore/dataset/engine/datasets_text.py +43 -67
  99. mindspore/dataset/engine/datasets_user_defined.py +86 -100
  100. mindspore/dataset/engine/datasets_vision.py +219 -1029
  101. mindspore/dataset/engine/iterators.py +11 -4
  102. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +4 -0
  103. mindspore/dataset/engine/obs/util.py +3 -0
  104. mindspore/dataset/engine/samplers.py +1 -1
  105. mindspore/dataset/engine/validators.py +19 -5
  106. mindspore/dataset/text/__init__.py +3 -3
  107. mindspore/dataset/text/transforms.py +101 -127
  108. mindspore/dataset/text/utils.py +205 -138
  109. mindspore/dataset/transforms/__init__.py +1 -1
  110. mindspore/dataset/transforms/py_transforms_util.py +40 -12
  111. mindspore/dataset/transforms/transforms.py +95 -40
  112. mindspore/dataset/utils/browse_dataset.py +8 -2
  113. mindspore/dataset/utils/line_reader.py +17 -19
  114. mindspore/dataset/vision/__init__.py +3 -3
  115. mindspore/dataset/vision/c_transforms.py +6 -3
  116. mindspore/dataset/vision/transforms.py +409 -287
  117. mindspore/dataset/vision/utils.py +13 -14
  118. mindspore/dataset/vision/validators.py +11 -1
  119. mindspore/experimental/map_parameter.py +14 -0
  120. mindspore/{nn/optim_ex → experimental/optim}/__init__.py +30 -29
  121. mindspore/{nn/optim_ex → experimental/optim}/adam.py +60 -67
  122. mindspore/{nn/optim_ex → experimental/optim}/adamw.py +181 -203
  123. mindspore/experimental/optim/lr_scheduler.py +1427 -0
  124. mindspore/{nn/optim_ex → experimental/optim}/optimizer.py +252 -259
  125. mindspore/{nn/optim_ex → experimental/optim}/sgd.py +147 -152
  126. mindspore/gen_ops.py +273 -0
  127. mindspore/include/OWNERS +0 -1
  128. mindspore/include/api/data_type.h +2 -1
  129. mindspore/include/api/graph.h +0 -15
  130. mindspore/include/api/kernel.h +2 -0
  131. mindspore/include/api/kernel_api.h +37 -12
  132. mindspore/include/api/model.h +17 -14
  133. mindspore/include/api/status.h +8 -3
  134. mindspore/include/api/types.h +37 -4
  135. mindspore/include/c_api/ms/abstract.h +67 -0
  136. mindspore/include/c_api/ms/attribute.h +197 -0
  137. mindspore/include/c_api/ms/base/handle_types.h +43 -0
  138. mindspore/include/c_api/ms/base/macros.h +32 -0
  139. mindspore/include/c_api/ms/base/status.h +33 -0
  140. mindspore/include/c_api/ms/base/types.h +282 -0
  141. mindspore/include/c_api/ms/context.h +102 -0
  142. mindspore/include/c_api/ms/graph.h +160 -0
  143. mindspore/include/c_api/ms/node.h +606 -0
  144. mindspore/include/c_api/ms/tensor.h +161 -0
  145. mindspore/include/c_api/ms/value.h +84 -0
  146. mindspore/include/dataset/constants.h +6 -5
  147. mindspore/include/dataset/execute.h +23 -13
  148. mindspore/include/dataset/text.h +26 -26
  149. mindspore/include/dataset/transforms.h +13 -13
  150. mindspore/include/dataset/vision.h +60 -60
  151. mindspore/include/dataset/vision_ascend.h +5 -6
  152. mindspore/include/dataset/vision_lite.h +17 -17
  153. mindspore/include/mindapi/base/type_id.h +1 -0
  154. mindspore/include/mindapi/base/types.h +1 -0
  155. mindspore/lib/libdnnl.so.2 +0 -0
  156. mindspore/lib/libjemalloc.so.2 +0 -0
  157. mindspore/lib/libmindspore.so +0 -0
  158. mindspore/lib/libmindspore_backend.so +0 -0
  159. mindspore/lib/libmindspore_common.so +0 -0
  160. mindspore/lib/libmindspore_core.so +0 -0
  161. mindspore/lib/libmindspore_glog.so.0 +0 -0
  162. mindspore/lib/libmindspore_gpr.so.15 +0 -0
  163. mindspore/lib/libmindspore_grpc++.so.1 +0 -0
  164. mindspore/lib/libmindspore_grpc.so.15 +0 -0
  165. mindspore/lib/libmindspore_shared_lib.so +0 -0
  166. mindspore/lib/libnnacl.so +0 -0
  167. mindspore/lib/libopencv_core.so.4.5 +0 -0
  168. mindspore/lib/libopencv_imgcodecs.so.4.5 +0 -0
  169. mindspore/lib/libopencv_imgproc.so.4.5 +0 -0
  170. mindspore/lib/libps_cache.so +0 -0
  171. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend310/aic-ascend310-ops-info.json +123 -0
  172. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend310p/aic-ascend310p-ops-info.json +123 -0
  173. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910/aic-ascend910-ops-info.json +158 -0
  174. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910b/aic-ascend910b-ops-info.json +37 -0
  175. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/add_dsl.py +46 -0
  176. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/add_tik.py +51 -0
  177. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +241 -0
  178. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/matmul_tik.py +212 -0
  179. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/add_dsl.py +46 -0
  180. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/add_tik.py +51 -0
  181. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +241 -0
  182. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/matmul_tik.py +212 -0
  183. mindspore/lib/plugin/ascend/custom_aicore_ops/op_proto/libop_proto.so +0 -0
  184. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_aicpu_kernels.so +0 -0
  185. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_cpu_kernels.so +0 -0
  186. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/config/cust_aicpu_kernel.json +8928 -0
  187. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_proto/libcust_op_proto.so +0 -0
  188. mindspore/lib/plugin/ascend/libakg.so +0 -0
  189. mindspore/lib/plugin/ascend/libascend_collective.so +0 -0
  190. mindspore/lib/plugin/ascend/libdvpp_utils.so +0 -0
  191. mindspore/lib/plugin/ascend/libhccl_plugin.so +0 -0
  192. mindspore/lib/plugin/ascend/libmindspore_aicpu_kernels.so +0 -0
  193. mindspore/lib/plugin/ascend/libmindspore_cpu_kernels.so +0 -0
  194. mindspore/lib/plugin/cpu/libakg.so +0 -0
  195. mindspore/lib/plugin/gpu/libcuda_ops.so.10 +0 -0
  196. mindspore/lib/plugin/gpu/libcuda_ops.so.11 +0 -0
  197. mindspore/lib/plugin/gpu10.1/libakg.so +0 -0
  198. mindspore/lib/plugin/gpu10.1/libnccl.so.2 +0 -0
  199. mindspore/lib/plugin/gpu11.1/libakg.so +0 -0
  200. mindspore/lib/plugin/gpu11.1/libnccl.so.2 +0 -0
  201. mindspore/lib/plugin/gpu11.6/libakg.so +0 -0
  202. mindspore/lib/plugin/gpu11.6/libnccl.so.2 +0 -0
  203. mindspore/lib/plugin/libmindspore_ascend.so.1 +0 -0
  204. mindspore/lib/plugin/libmindspore_ascend.so.2 +0 -0
  205. mindspore/lib/plugin/libmindspore_gpu.so.10.1 +0 -0
  206. mindspore/lib/plugin/libmindspore_gpu.so.11.1 +0 -0
  207. mindspore/lib/plugin/libmindspore_gpu.so.11.6 +0 -0
  208. mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
  209. mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
  210. mindspore/nn/__init__.py +0 -2
  211. mindspore/nn/cell.py +313 -74
  212. mindspore/nn/dynamic_lr.py +21 -21
  213. mindspore/nn/layer/activation.py +22 -30
  214. mindspore/nn/layer/basic.py +15 -13
  215. mindspore/nn/layer/channel_shuffle.py +1 -1
  216. mindspore/nn/layer/container.py +271 -9
  217. mindspore/nn/layer/conv.py +323 -204
  218. mindspore/nn/layer/dense.py +8 -5
  219. mindspore/nn/layer/embedding.py +33 -27
  220. mindspore/nn/layer/flash_attention.py +141 -88
  221. mindspore/nn/layer/image.py +8 -6
  222. mindspore/nn/layer/math.py +16 -25
  223. mindspore/nn/layer/normalization.py +107 -66
  224. mindspore/nn/layer/padding.py +1 -1
  225. mindspore/nn/layer/pooling.py +131 -109
  226. mindspore/nn/layer/rnn_cells.py +27 -22
  227. mindspore/nn/layer/rnns.py +13 -16
  228. mindspore/nn/layer/thor_layer.py +1 -1
  229. mindspore/nn/layer/transformer.py +221 -154
  230. mindspore/nn/learning_rate_schedule.py +9 -1
  231. mindspore/nn/loss/loss.py +235 -174
  232. mindspore/nn/optim/ada_grad.py +2 -1
  233. mindspore/nn/optim/adadelta.py +1 -0
  234. mindspore/nn/optim/adafactor.py +2 -1
  235. mindspore/nn/optim/adam.py +7 -4
  236. mindspore/nn/optim/adamax.py +3 -2
  237. mindspore/nn/optim/adasum.py +2 -2
  238. mindspore/nn/optim/asgd.py +2 -3
  239. mindspore/nn/optim/ftrl.py +6 -5
  240. mindspore/nn/optim/lamb.py +7 -4
  241. mindspore/nn/optim/lars.py +1 -1
  242. mindspore/nn/optim/lazyadam.py +5 -3
  243. mindspore/nn/optim/momentum.py +2 -1
  244. mindspore/nn/optim/optimizer.py +53 -4
  245. mindspore/nn/optim/proximal_ada_grad.py +3 -4
  246. mindspore/nn/optim/rmsprop.py +4 -3
  247. mindspore/nn/optim/rprop.py +23 -12
  248. mindspore/nn/optim/sgd.py +26 -11
  249. mindspore/nn/optim/thor.py +9 -7
  250. mindspore/nn/probability/bijector/bijector.py +5 -5
  251. mindspore/nn/probability/bijector/power_transform.py +27 -27
  252. mindspore/nn/probability/bijector/softplus.py +3 -3
  253. mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -3
  254. mindspore/nn/probability/distribution/bernoulli.py +5 -5
  255. mindspore/nn/probability/distribution/beta.py +3 -3
  256. mindspore/nn/probability/distribution/categorical.py +7 -7
  257. mindspore/nn/probability/distribution/cauchy.py +0 -1
  258. mindspore/nn/probability/distribution/distribution.py +3 -3
  259. mindspore/nn/probability/distribution/gamma.py +3 -3
  260. mindspore/nn/probability/distribution/geometric.py +4 -4
  261. mindspore/nn/probability/distribution/gumbel.py +4 -4
  262. mindspore/nn/probability/distribution/log_normal.py +2 -2
  263. mindspore/nn/probability/distribution/logistic.py +2 -2
  264. mindspore/nn/probability/distribution/poisson.py +4 -4
  265. mindspore/nn/probability/distribution/transformed_distribution.py +3 -3
  266. mindspore/nn/probability/distribution/uniform.py +6 -6
  267. mindspore/nn/wrap/cell_wrapper.py +84 -34
  268. mindspore/nn/wrap/grad_reducer.py +8 -5
  269. mindspore/nn/wrap/loss_scale.py +105 -42
  270. mindspore/numpy/array_creations.py +1 -2
  271. mindspore/numpy/array_ops.py +3 -2
  272. mindspore/numpy/utils_const.py +5 -5
  273. mindspore/offline_debug/convert_async.py +2 -2
  274. mindspore/ops/_grad_experimental/__init__.py +0 -5
  275. mindspore/ops/_grad_experimental/grad_array_ops.py +2 -3
  276. mindspore/ops/_grad_experimental/grad_comm_ops.py +15 -2
  277. mindspore/ops/_grad_experimental/grad_debug_ops.py +0 -37
  278. mindspore/ops/_grad_experimental/grad_implementations.py +11 -1
  279. mindspore/ops/_grad_experimental/grad_inner_ops.py +2 -216
  280. mindspore/ops/_grad_experimental/grad_math_ops.py +19 -199
  281. mindspore/ops/_grad_experimental/grad_sparse.py +15 -0
  282. mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -3
  283. mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
  284. mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +165 -109
  285. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +144 -86
  286. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +172 -187
  287. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +51 -57
  288. mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +6 -17
  289. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +1 -1
  290. mindspore/ops/_op_impl/aicpu/__init__.py +14 -2
  291. mindspore/ops/_op_impl/aicpu/add.py +3 -3
  292. mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
  293. mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
  294. mindspore/ops/_op_impl/aicpu/eps.py +32 -0
  295. mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
  296. mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
  297. mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
  298. mindspore/ops/_op_impl/aicpu/multinomial.py +3 -3
  299. mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +15 -7
  300. mindspore/ops/_op_impl/aicpu/random_categorical.py +39 -19
  301. mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +5 -2
  302. mindspore/ops/_op_impl/aicpu/random_poisson.py +103 -52
  303. mindspore/ops/_op_impl/aicpu/random_shuffle.py +17 -15
  304. mindspore/ops/_op_impl/aicpu/{sparseaddmm.py → sparse_addmm.py} +2 -2
  305. mindspore/ops/_op_impl/aicpu/{sparsesparsemaximum.py → sparse_sparse_maximum.py} +4 -4
  306. mindspore/ops/_op_impl/aicpu/standard_laplace.py +5 -5
  307. mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -5
  308. mindspore/ops/_op_impl/aicpu/truncated_normal.py +9 -7
  309. mindspore/ops/_op_impl/aicpu/uniform.py +5 -3
  310. mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +8 -4
  311. mindspore/ops/_op_impl/aicpu/uniform_int.py +5 -5
  312. mindspore/ops/_op_impl/aicpu/uniform_real.py +4 -4
  313. mindspore/ops/_op_impl/tbe/__init__.py +4 -4
  314. mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
  315. mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
  316. mindspore/ops/_primitive_cache.py +1 -1
  317. mindspore/ops/_tracefunc.py +45 -13
  318. mindspore/ops/_utils/utils.py +6 -1
  319. mindspore/ops/_vmap/vmap_array_ops.py +3 -3
  320. mindspore/ops/_vmap/vmap_base.py +3 -3
  321. mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
  322. mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
  323. mindspore/ops/_vmap/vmap_math_ops.py +5 -2
  324. mindspore/ops/_vmap/vmap_nn_ops.py +61 -7
  325. mindspore/ops/arg_dtype_cast.py +54 -0
  326. mindspore/ops/composite/base.py +37 -10
  327. mindspore/ops/composite/math_ops.py +5 -4
  328. mindspore/ops/composite/multitype_ops/_compile_utils.py +275 -73
  329. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +16 -9
  330. mindspore/ops/composite/multitype_ops/add_impl.py +43 -4
  331. mindspore/ops/composite/multitype_ops/getitem_impl.py +42 -4
  332. mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
  333. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  334. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
  335. mindspore/ops/deprecated.py +304 -0
  336. mindspore/ops/function/__init__.py +4 -1
  337. mindspore/ops/function/array_func.py +174 -193
  338. mindspore/ops/function/clip_func.py +81 -13
  339. mindspore/ops/function/debug_func.py +1 -1
  340. mindspore/ops/function/grad/grad_func.py +18 -9
  341. mindspore/ops/function/image_func.py +10 -4
  342. mindspore/ops/function/linalg_func.py +5 -5
  343. mindspore/ops/function/math_func.py +575 -386
  344. mindspore/ops/function/nn_func.py +568 -260
  345. mindspore/ops/function/random_func.py +88 -57
  346. mindspore/ops/function/sparse_func.py +1 -1
  347. mindspore/ops/function/sparse_unary_func.py +14 -12
  348. mindspore/ops/function/vmap_func.py +6 -5
  349. mindspore/ops/functional.py +15 -10
  350. mindspore/ops/op_info_register.py +244 -25
  351. mindspore/ops/operations/__init__.py +28 -19
  352. mindspore/ops/operations/_grad_ops.py +72 -7
  353. mindspore/ops/operations/_inner_ops.py +350 -17
  354. mindspore/ops/operations/_quant_ops.py +4 -8
  355. mindspore/ops/operations/_sequence_ops.py +42 -0
  356. mindspore/ops/operations/array_ops.py +68 -282
  357. mindspore/ops/operations/comm_ops.py +107 -59
  358. mindspore/ops/operations/custom_ops.py +94 -70
  359. mindspore/ops/operations/debug_ops.py +8 -4
  360. mindspore/ops/operations/image_ops.py +18 -12
  361. mindspore/ops/operations/inner_ops.py +26 -3
  362. mindspore/ops/operations/math_ops.py +189 -141
  363. mindspore/ops/operations/nn_ops.py +794 -489
  364. mindspore/ops/operations/other_ops.py +0 -22
  365. mindspore/ops/operations/random_ops.py +53 -111
  366. mindspore/ops/operations/sparse_ops.py +3 -1
  367. mindspore/ops/primitive.py +24 -18
  368. mindspore/parallel/_auto_parallel_context.py +68 -8
  369. mindspore/parallel/_cost_model_context.py +2 -2
  370. mindspore/parallel/_offload_context.py +17 -3
  371. mindspore/parallel/_parallel_serialization.py +12 -5
  372. mindspore/parallel/_ps_context.py +12 -0
  373. mindspore/parallel/_tensor.py +18 -13
  374. mindspore/parallel/_transformer/layers.py +5 -3
  375. mindspore/parallel/_transformer/loss.py +1 -0
  376. mindspore/parallel/_transformer/moe.py +2 -2
  377. mindspore/parallel/_transformer/op_parallel_config.py +12 -1
  378. mindspore/parallel/_transformer/transformer.py +23 -3
  379. mindspore/parallel/_utils.py +11 -7
  380. mindspore/parallel/algo_parameter_config.py +85 -5
  381. mindspore/parallel/checkpoint_transform.py +19 -12
  382. mindspore/parallel/shard.py +21 -14
  383. mindspore/profiler/common/struct_type.py +3 -3
  384. mindspore/profiler/common/util.py +4 -2
  385. mindspore/profiler/envprofiling.py +1 -1
  386. mindspore/profiler/parser/aicpu_data_parser.py +5 -3
  387. mindspore/profiler/parser/ascend_flops_generator.py +2 -2
  388. mindspore/profiler/parser/ascend_fpbp_generator.py +1 -1
  389. mindspore/profiler/parser/ascend_hccl_generator.py +249 -12
  390. mindspore/profiler/parser/ascend_msprof_exporter.py +150 -255
  391. mindspore/profiler/parser/ascend_msprof_generator.py +204 -17
  392. mindspore/profiler/parser/ascend_op_generator.py +6 -6
  393. mindspore/profiler/parser/ascend_steptrace_generator.py +6 -4
  394. mindspore/profiler/parser/ascend_timeline_generator.py +14 -187
  395. mindspore/profiler/parser/base_timeline_generator.py +10 -8
  396. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +16 -12
  397. mindspore/profiler/parser/flops_parser.py +15 -11
  398. mindspore/profiler/parser/framework_parser.py +38 -22
  399. mindspore/profiler/parser/hccl_parser.py +16 -12
  400. mindspore/profiler/parser/integrator.py +22 -11
  401. mindspore/profiler/parser/memory_usage_parser.py +2 -2
  402. mindspore/profiler/parser/minddata_analyzer.py +12 -14
  403. mindspore/profiler/parser/minddata_pipeline_parser.py +1 -1
  404. mindspore/profiler/parser/msadvisor_parser.py +8 -4
  405. mindspore/profiler/parser/op_intermediate_parser.py +5 -2
  406. mindspore/profiler/parser/optime_parser.py +1 -1
  407. mindspore/profiler/parser/profiler_info.py +21 -2
  408. mindspore/profiler/parser/step_trace_parser.py +11 -14
  409. mindspore/profiler/profiling.py +179 -89
  410. mindspore/rewrite/api/node.py +102 -19
  411. mindspore/rewrite/api/node_type.py +5 -1
  412. mindspore/rewrite/api/pattern_engine.py +1 -1
  413. mindspore/rewrite/api/scoped_value.py +9 -17
  414. mindspore/rewrite/api/symbol_tree.py +131 -47
  415. mindspore/rewrite/ast_helpers/__init__.py +2 -1
  416. mindspore/rewrite/ast_helpers/ast_finder.py +129 -0
  417. mindspore/rewrite/ast_helpers/ast_modifier.py +116 -104
  418. mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +93 -46
  419. mindspore/rewrite/common/rewrite_elog.py +5 -1
  420. mindspore/rewrite/namer.py +33 -24
  421. mindspore/rewrite/namespace.py +14 -5
  422. mindspore/{_extends/graph_kernel/expanders/complex → rewrite/node}/__init__.py +9 -9
  423. mindspore/rewrite/node/call_function.py +79 -0
  424. mindspore/rewrite/node/cell_container.py +135 -0
  425. mindspore/rewrite/node/control_flow.py +88 -0
  426. mindspore/rewrite/{node.py → node/node.py} +273 -234
  427. mindspore/rewrite/node/node_manager.py +254 -0
  428. mindspore/rewrite/{topological_manager.py → node/node_topological_manager.py} +13 -46
  429. mindspore/rewrite/parsers/arguments_parser.py +22 -21
  430. mindspore/rewrite/parsers/assign_parser.py +216 -221
  431. mindspore/rewrite/parsers/attribute_parser.py +9 -7
  432. mindspore/rewrite/parsers/class_def_parser.py +174 -113
  433. mindspore/rewrite/parsers/constant_parser.py +9 -6
  434. mindspore/rewrite/parsers/container_parser.py +9 -7
  435. mindspore/rewrite/parsers/for_parser.py +36 -15
  436. mindspore/rewrite/parsers/function_def_parser.py +24 -16
  437. mindspore/rewrite/parsers/if_parser.py +28 -24
  438. mindspore/rewrite/parsers/module_parser.py +196 -25
  439. mindspore/rewrite/{parser.py → parsers/parser.py} +4 -2
  440. mindspore/rewrite/{parser_register.py → parsers/parser_register.py} +1 -1
  441. mindspore/rewrite/parsers/return_parser.py +6 -6
  442. mindspore/rewrite/sparsify/sparse_transformer.py +12 -3
  443. mindspore/rewrite/sparsify/utils.py +1 -1
  444. mindspore/rewrite/symbol_tree.py +523 -578
  445. mindspore/rewrite/symbol_tree_builder.py +9 -193
  446. mindspore/rewrite/symbol_tree_dumper.py +2 -2
  447. mindspore/run_check/_check_version.py +6 -4
  448. mindspore/{ops/bprop_mindir → safeguard}/__init__.py +4 -3
  449. mindspore/safeguard/rewrite_obfuscation.py +541 -0
  450. mindspore/scipy/linalg.py +1 -1
  451. mindspore/scipy/optimize/minimize.py +7 -3
  452. mindspore/train/_utils.py +7 -3
  453. mindspore/train/amp.py +323 -123
  454. mindspore/train/anf_ir_pb2.py +14 -2
  455. mindspore/train/callback/_backup_and_restore.py +2 -12
  456. mindspore/train/callback/_callback.py +29 -4
  457. mindspore/train/callback/_checkpoint.py +23 -8
  458. mindspore/train/callback/_early_stop.py +2 -2
  459. mindspore/train/callback/_landscape.py +4 -4
  460. mindspore/train/callback/_loss_monitor.py +2 -2
  461. mindspore/train/callback/_on_request_exit.py +2 -2
  462. mindspore/train/callback/_reduce_lr_on_plateau.py +3 -4
  463. mindspore/train/callback/_summary_collector.py +15 -8
  464. mindspore/train/callback/_time_monitor.py +58 -5
  465. mindspore/train/data_sink.py +5 -11
  466. mindspore/train/dataset_helper.py +84 -57
  467. mindspore/train/loss_scale_manager.py +2 -2
  468. mindspore/train/metrics/__init__.py +3 -3
  469. mindspore/train/metrics/cosine_similarity.py +1 -1
  470. mindspore/train/metrics/hausdorff_distance.py +3 -2
  471. mindspore/train/metrics/mean_surface_distance.py +3 -2
  472. mindspore/train/metrics/metric.py +39 -19
  473. mindspore/train/metrics/roc.py +2 -2
  474. mindspore/train/metrics/root_mean_square_surface_distance.py +4 -3
  475. mindspore/train/mind_ir_pb2.py +85 -36
  476. mindspore/train/model.py +187 -47
  477. mindspore/train/serialization.py +487 -161
  478. mindspore/train/summary/_summary_adapter.py +1 -1
  479. mindspore/train/summary/_writer_pool.py +3 -2
  480. mindspore/train/summary/summary_record.py +37 -17
  481. mindspore/train/train_thor/convert_utils.py +3 -3
  482. mindspore/train/train_thor/dataset_helper.py +1 -1
  483. mindspore/version.py +1 -1
  484. {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/METADATA +6 -7
  485. {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/RECORD +488 -528
  486. {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/entry_points.txt +0 -1
  487. mindspore/_akg/akg/tvm/contrib/debugger/__init__.py +0 -16
  488. mindspore/_akg/akg/tvm/contrib/debugger/debug_result.py +0 -274
  489. mindspore/_akg/akg/tvm/contrib/debugger/debug_runtime.py +0 -259
  490. mindspore/_akg/akg/tvm/contrib/peak.py +0 -341
  491. mindspore/_akg/akg/tvm/contrib/rpc.py +0 -25
  492. mindspore/_akg/akg/tvm/contrib/xcode.py +0 -257
  493. mindspore/_akg/akg/tvm/exec/__init__.py +0 -17
  494. mindspore/_akg/akg/tvm/exec/autotvm_log_editor.py +0 -60
  495. mindspore/_akg/akg/tvm/exec/measure_peak.py +0 -48
  496. mindspore/_akg/akg/tvm/exec/query_rpc_tracker.py +0 -48
  497. mindspore/_akg/akg/tvm/exec/rpc_proxy.py +0 -98
  498. mindspore/_akg/akg/tvm/exec/rpc_server.py +0 -88
  499. mindspore/_akg/akg/tvm/exec/rpc_tracker.py +0 -62
  500. mindspore/_akg/akg/tvm/rpc/__init__.py +0 -29
  501. mindspore/_akg/akg/tvm/rpc/base.py +0 -182
  502. mindspore/_akg/akg/tvm/rpc/client.py +0 -436
  503. mindspore/_akg/akg/tvm/rpc/proxy.py +0 -595
  504. mindspore/_akg/akg/tvm/rpc/server.py +0 -413
  505. mindspore/_akg/akg/tvm/rpc/tornado_util.py +0 -121
  506. mindspore/_akg/akg/tvm/rpc/tracker.py +0 -431
  507. mindspore/_extends/graph_kernel/expander.py +0 -80
  508. mindspore/_extends/graph_kernel/expanders/__init__.py +0 -54
  509. mindspore/_extends/graph_kernel/expanders/_utils.py +0 -269
  510. mindspore/_extends/graph_kernel/expanders/addn.py +0 -33
  511. mindspore/_extends/graph_kernel/expanders/batchnorm.py +0 -152
  512. mindspore/_extends/graph_kernel/expanders/batchnorm_grad.py +0 -105
  513. mindspore/_extends/graph_kernel/expanders/clip_by_norm_no_div_sum.py +0 -33
  514. mindspore/_extends/graph_kernel/expanders/complex/abs.py +0 -30
  515. mindspore/_extends/graph_kernel/expanders/complex/add.py +0 -44
  516. mindspore/_extends/graph_kernel/expanders/complex/div.py +0 -62
  517. mindspore/_extends/graph_kernel/expanders/complex/mul.py +0 -52
  518. mindspore/_extends/graph_kernel/expanders/complex/real_div.py +0 -62
  519. mindspore/_extends/graph_kernel/expanders/complex/sub.py +0 -45
  520. mindspore/_extends/graph_kernel/expanders/conv2d.py +0 -200
  521. mindspore/_extends/graph_kernel/expanders/dropout_grad.py +0 -30
  522. mindspore/_extends/graph_kernel/expanders/equal_count.py +0 -50
  523. mindspore/_extends/graph_kernel/expanders/erfc.py +0 -35
  524. mindspore/_extends/graph_kernel/expanders/expand_dims.py +0 -50
  525. mindspore/_extends/graph_kernel/expanders/fused_adam.py +0 -44
  526. mindspore/_extends/graph_kernel/expanders/fused_adam_weight_decay.py +0 -47
  527. mindspore/_extends/graph_kernel/expanders/fused_mul_add.py +0 -28
  528. mindspore/_extends/graph_kernel/expanders/gelu_grad.py +0 -70
  529. mindspore/_extends/graph_kernel/expanders/gkdropout.py +0 -40
  530. mindspore/_extends/graph_kernel/expanders/identity.py +0 -25
  531. mindspore/_extends/graph_kernel/expanders/layernorm.py +0 -93
  532. mindspore/_extends/graph_kernel/expanders/layernorm_grad.py +0 -113
  533. mindspore/_extends/graph_kernel/expanders/logsoftmax.py +0 -46
  534. mindspore/_extends/graph_kernel/expanders/logsoftmax_grad.py +0 -36
  535. mindspore/_extends/graph_kernel/expanders/matmul.py +0 -80
  536. mindspore/_extends/graph_kernel/expanders/maximum_grad.py +0 -59
  537. mindspore/_extends/graph_kernel/expanders/minimum_grad.py +0 -80
  538. mindspore/_extends/graph_kernel/expanders/oneslike.py +0 -26
  539. mindspore/_extends/graph_kernel/expanders/reduce_mean.py +0 -43
  540. mindspore/_extends/graph_kernel/expanders/relu_grad.py +0 -32
  541. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits.py +0 -41
  542. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits_grad.py +0 -35
  543. mindspore/_extends/graph_kernel/expanders/sigmoid_grad.py +0 -31
  544. mindspore/_extends/graph_kernel/expanders/slice.py +0 -35
  545. mindspore/_extends/graph_kernel/expanders/softmax_cross_entropy_with_logits.py +0 -42
  546. mindspore/_extends/graph_kernel/expanders/softmax_grad_ext.py +0 -41
  547. mindspore/_extends/graph_kernel/expanders/softsign.py +0 -28
  548. mindspore/_extends/graph_kernel/expanders/sqrt_grad.py +0 -29
  549. mindspore/_extends/graph_kernel/expanders/square_sum_all.py +0 -44
  550. mindspore/_extends/graph_kernel/expanders/square_sum_v1.py +0 -37
  551. mindspore/_extends/graph_kernel/expanders/squared_difference.py +0 -43
  552. mindspore/_extends/graph_kernel/expanders/tanh_grad.py +0 -31
  553. mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
  554. mindspore/dataset/datapreprocess/__init__.py +0 -20
  555. mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
  556. mindspore/include/api/net.h +0 -142
  557. mindspore/nn/lr_scheduler.py +0 -262
  558. mindspore/ops/_grad_experimental/grad_image_ops.py +0 -248
  559. mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -181
  560. mindspore/ops/_grad_experimental/grad_other_ops.py +0 -72
  561. mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
  562. mindspore/ops/_grad_experimental/grad_sequence_ops.py +0 -351
  563. mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -0
  564. mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -0
  565. mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -0
  566. mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
  567. mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
  568. mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -0
  569. mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -0
  570. mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
  571. mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
  572. mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -0
  573. mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -0
  574. mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -0
  575. mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -0
  576. mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -0
  577. mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
  578. mindspore/rewrite/node_visitor.py +0 -44
  579. {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/WHEEL +0 -0
  580. {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/top_level.txt +0 -0
@@ -1,595 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
- """RPC proxy, allows both client/server to connect and match connection.
18
-
19
- In normal RPC, client directly connect to server's IP address.
20
- Sometimes this cannot be done when server do not have a static address.
21
- RPCProxy allows both client and server connect to the proxy server,
22
- the proxy server will forward the message between the client and server.
23
- """
24
- # pylint: disable=unused-variable, unused-argument
25
- from __future__ import absolute_import
26
-
27
- import os
28
- import logging
29
- import socket
30
- import multiprocessing
31
- import errno
32
- import struct
33
- import time
34
-
35
- try:
36
- import tornado
37
- from tornado import gen
38
- from tornado import websocket
39
- from tornado import ioloop
40
- from . import tornado_util
41
- except ImportError as error_msg:
42
- raise ImportError(
43
- "RPCProxy module requires tornado package %s. Try 'pip install tornado'." % error_msg)
44
-
45
- from . import base
46
- from .base import TrackerCode
47
- from .server import _server_env
48
- from .._ffi.base import py_str
49
-
50
-
51
- class ForwardHandler(object):
52
- """Forward handler to forward the message."""
53
- def _init_handler(self):
54
- """Initialize handler."""
55
- self._init_message = bytes()
56
- self._init_req_nbytes = 4
57
- self._magic = None
58
- self.timeout = None
59
- self._rpc_key_length = None
60
- self._done = False
61
- self._proxy = ProxyServerHandler.current
62
- assert self._proxy
63
- self.rpc_key = None
64
- self.match_key = None
65
- self.forward_proxy = None
66
- self.alloc_time = None
67
-
68
- def __del__(self):
69
- logging.info("Delete %s...", self.name())
70
-
71
- def name(self):
72
- """Name of this connection."""
73
- return "RPCConnection"
74
-
75
- def _init_step(self, message):
76
- if self._magic is None:
77
- assert len(message) == 4
78
- self._magic = struct.unpack('<i', message)[0]
79
- if self._magic != base.RPC_MAGIC:
80
- logging.info("Invalid RPC magic from %s", self.name())
81
- self.close()
82
- self._init_req_nbytes = 4
83
- elif self._rpc_key_length is None:
84
- assert len(message) == 4
85
- self._rpc_key_length = struct.unpack('<i', message)[0]
86
- self._init_req_nbytes = self._rpc_key_length
87
- elif self.rpc_key is None:
88
- assert len(message) == self._rpc_key_length
89
- self.rpc_key = py_str(message)
90
- # match key is used to do the matching
91
- self.match_key = self.rpc_key[7:].split()[0]
92
- self.on_start()
93
- else:
94
- assert False
95
-
96
- def on_start(self):
97
- """Event when the initialization is completed"""
98
- self._proxy.handler_ready(self)
99
-
100
- def on_data(self, message):
101
- """on data"""
102
- assert isinstance(message, bytes)
103
- if self.forward_proxy:
104
- self.forward_proxy.send_data(message)
105
- else:
106
- while message and self._init_req_nbytes > len(self._init_message):
107
- nbytes = self._init_req_nbytes - len(self._init_message)
108
- self._init_message += message[:nbytes]
109
- message = message[nbytes:]
110
- if self._init_req_nbytes == len(self._init_message):
111
- temp = self._init_message
112
- self._init_req_nbytes = 0
113
- self._init_message = bytes()
114
- self._init_step(temp)
115
- if message:
116
- logging.info("Invalid RPC protocol, too many bytes %s", self.name())
117
- self.close()
118
-
119
- def on_error(self, err):
120
- logging.info("%s: Error in RPC %s", self.name(), err)
121
- self.close_pair()
122
-
123
- def close_pair(self):
124
- if self.forward_proxy:
125
- self.forward_proxy.signal_close()
126
- self.forward_proxy = None
127
- self.close()
128
-
129
- def on_close_event(self):
130
- """on close event"""
131
- assert not self._done
132
- logging.info("RPCProxy:on_close %s ...", self.name())
133
- if self.match_key:
134
- key = self.match_key
135
- if self._proxy._client_pool.get(key, None) == self:
136
- self._proxy._client_pool.pop(key)
137
- if self._proxy._server_pool.get(key, None) == self:
138
- self._proxy._server_pool.pop(key)
139
- self._done = True
140
- self.forward_proxy = None
141
-
142
-
143
- class TCPHandler(tornado_util.TCPHandler, ForwardHandler):
144
- """Event driven TCP handler."""
145
- def __init__(self, sock, addr):
146
- super(TCPHandler, self).__init__(sock)
147
- self._init_handler()
148
- self.addr = addr
149
-
150
- def name(self):
151
- return "TCPSocketProxy:%s:%s" % (str(self.addr[0]), self.rpc_key)
152
-
153
- def send_data(self, message, binary=True):
154
- self.write_message(message, True)
155
-
156
- def on_message(self, message):
157
- self.on_data(message)
158
-
159
- def on_close(self):
160
- if self.forward_proxy:
161
- self.forward_proxy.signal_close()
162
- self.forward_proxy = None
163
- logging.info("%s Close socket..", self.name())
164
- self.on_close_event()
165
-
166
-
167
- class WebSocketHandler(websocket.WebSocketHandler, ForwardHandler):
168
- """Handler for websockets."""
169
- def __init__(self, *args, **kwargs):
170
- super(WebSocketHandler, self).__init__(*args, **kwargs)
171
- self._init_handler()
172
-
173
- def name(self):
174
- return "WebSocketProxy:%s" % (self.rpc_key)
175
-
176
- def on_message(self, message):
177
- self.on_data(message)
178
-
179
- def data_received(self, _):
180
- raise NotImplementedError()
181
-
182
- def send_data(self, message):
183
- try:
184
- self.write_message(message, True)
185
- except websocket.WebSocketClosedError as err:
186
- self.on_error(err)
187
-
188
- def on_close(self):
189
- if self.forward_proxy:
190
- self.forward_proxy.signal_close()
191
- self.forward_proxy = None
192
- self.on_close_event()
193
-
194
- def signal_close(self):
195
- self.close()
196
-
197
-
198
- class RequestHandler(tornado.web.RequestHandler):
199
- """Handles html request."""
200
- def __init__(self, *args, **kwargs):
201
- file_path = kwargs.pop("file_path")
202
- if file_path.endswith("html"):
203
- self.page = open(file_path).read()
204
- web_port = kwargs.pop("rpc_web_port", None)
205
- if web_port:
206
- self.page = self.page.replace(
207
- "ws://localhost:9190/ws",
208
- "ws://localhost:%d/ws" % web_port)
209
- else:
210
- self.page = open(file_path, "rb").read()
211
- super(RequestHandler, self).__init__(*args, **kwargs)
212
-
213
- def data_received(self, _):
214
- pass
215
-
216
- def get(self, *args, **kwargs):
217
- self.write(self.page)
218
-
219
-
220
- class ProxyServerHandler(object):
221
- """Internal proxy server handler class."""
222
- current = None
223
- def __init__(self,
224
- sock,
225
- listen_port,
226
- web_port,
227
- timeout_client,
228
- timeout_server,
229
- tracker_addr,
230
- index_page=None,
231
- resource_files=None):
232
- assert ProxyServerHandler.current is None
233
- ProxyServerHandler.current = self
234
- if web_port:
235
- handlers = [
236
- (r"/ws", WebSocketHandler),
237
- ]
238
- if index_page:
239
- handlers.append(
240
- (r"/", RequestHandler, {"file_path": index_page, "rpc_web_port": web_port}))
241
- logging.info("Serving RPC index html page at http://localhost:%d", web_port)
242
- resource_files = resource_files if resource_files else []
243
- for fname in resource_files:
244
- basename = os.path.basename(fname)
245
- pair = (r"/%s" % basename, RequestHandler, {"file_path": fname})
246
- handlers.append(pair)
247
- logging.info(pair)
248
- self.app = tornado.web.Application(handlers)
249
- self.app.listen(web_port)
250
- self.sock = sock
251
- self.sock.setblocking(0)
252
- self.loop = ioloop.IOLoop.current()
253
- def event_handler(_, events):
254
- self._on_event(events)
255
- self.loop.add_handler(
256
- self.sock.fileno(), event_handler, self.loop.READ)
257
- self._client_pool = {}
258
- self._server_pool = {}
259
- self.timeout_alloc = 5
260
- self.timeout_client = timeout_client
261
- self.timeout_server = timeout_server
262
- # tracker information
263
- self._listen_port = listen_port
264
- self._tracker_addr = tracker_addr
265
- self._tracker_conn = None
266
- self._tracker_pending_puts = []
267
- self._key_set = set()
268
- self.update_tracker_period = 2
269
- if tracker_addr:
270
- logging.info("Tracker address:%s", str(tracker_addr))
271
- def _callback():
272
- self._update_tracker(True)
273
- self.loop.call_later(self.update_tracker_period, _callback)
274
- logging.info("RPCProxy: Websock port bind to %d", web_port)
275
-
276
- def _on_event(self, _):
277
- while True:
278
- try:
279
- conn, addr = self.sock.accept()
280
- TCPHandler(conn, addr)
281
- except socket.error as err:
282
- if err.args[0] in (errno.EAGAIN, errno.EWOULDBLOCK):
283
- break
284
-
285
- def _pair_up(self, lhs, rhs):
286
- lhs.forward_proxy = rhs
287
- rhs.forward_proxy = lhs
288
-
289
- lhs.send_data(struct.pack('<i', base.RPC_CODE_SUCCESS))
290
- lhs.send_data(struct.pack('<i', len(rhs.rpc_key)))
291
- lhs.send_data(rhs.rpc_key.encode("utf-8"))
292
-
293
- rhs.send_data(struct.pack('<i', base.RPC_CODE_SUCCESS))
294
- rhs.send_data(struct.pack('<i', len(lhs.rpc_key)))
295
- rhs.send_data(lhs.rpc_key.encode("utf-8"))
296
- logging.info("Pairup connect %s and %s", lhs.name(), rhs.name())
297
-
298
- def _regenerate_server_keys(self, keys):
299
- """Regenerate keys for server pool"""
300
- keyset = set(self._server_pool.keys())
301
- new_keys = []
302
- # re-generate the server match key, so old information is invalidated.
303
- for key in keys:
304
- rpc_key, _ = key.split(":")
305
- handle = self._server_pool[key]
306
- del self._server_pool[key]
307
- new_key = base.random_key(rpc_key + ":", keyset)
308
- self._server_pool[new_key] = handle
309
- keyset.add(new_key)
310
- new_keys.append(new_key)
311
- return new_keys
312
-
313
- def _update_tracker(self, period_update=False):
314
- """Update information on tracker."""
315
- try:
316
- if self._tracker_conn is None:
317
- self._tracker_conn = socket.socket(base.get_addr_family(self._tracker_addr),
318
- socket.SOCK_STREAM)
319
- self._tracker_conn.connect(self._tracker_addr)
320
- self._tracker_conn.sendall(struct.pack("<i", base.RPC_TRACKER_MAGIC))
321
- magic = struct.unpack("<i", base.recvall(self._tracker_conn, 4))[0]
322
- if magic != base.RPC_TRACKER_MAGIC:
323
- self.loop.stop()
324
- raise RuntimeError("%s is not RPC Tracker" % str(self._tracker_addr))
325
- # just connect to tracker, need to update all keys
326
- self._tracker_pending_puts = self._server_pool.keys()
327
-
328
- if self._tracker_conn and period_update:
329
- # periodically update tracker information
330
- # regenerate key if the key is not in tracker anymore
331
- # and there is no in-coming connection after timeout_alloc
332
- base.sendjson(self._tracker_conn, [TrackerCode.GET_PENDING_MATCHKEYS])
333
- pending_keys = set(base.recvjson(self._tracker_conn))
334
- update_keys = []
335
- for k, v in self._server_pool.items():
336
- if k not in pending_keys:
337
- if v.alloc_time is None:
338
- v.alloc_time = time.time()
339
- elif time.time() - v.alloc_time > self.timeout_alloc:
340
- update_keys.append(k)
341
- v.alloc_time = None
342
- if update_keys:
343
- logging.info("RPCProxy: No incoming conn on %s, regenerate keys...",
344
- str(update_keys))
345
- new_keys = self._regenerate_server_keys(update_keys)
346
- self._tracker_pending_puts += new_keys
347
-
348
- need_update_info = False
349
- # report new connections
350
- for key in self._tracker_pending_puts:
351
- rpc_key = key.split(":")[0]
352
- base.sendjson(self._tracker_conn,
353
- [TrackerCode.PUT, rpc_key,
354
- (self._listen_port, key), None])
355
- assert base.recvjson(self._tracker_conn) == TrackerCode.SUCCESS
356
- if rpc_key not in self._key_set:
357
- self._key_set.add(rpc_key)
358
- need_update_info = True
359
-
360
- if need_update_info:
361
- keylist = "[" + ",".join(self._key_set) + "]"
362
- cinfo = {"key": "server:proxy" + keylist}
363
- base.sendjson(self._tracker_conn,
364
- [TrackerCode.UPDATE_INFO, cinfo])
365
- assert base.recvjson(self._tracker_conn) == TrackerCode.SUCCESS
366
- self._tracker_pending_puts = []
367
- except (socket.error, IOError) as err:
368
- logging.info(
369
- "Lost tracker connection: %s, try reconnect in %g sec",
370
- str(err), self.update_tracker_period)
371
- self._tracker_conn.close()
372
- self._tracker_conn = None
373
- self._regenerate_server_keys(self._server_pool.keys())
374
-
375
- if period_update:
376
- def _callback():
377
- self._update_tracker(True)
378
- self.loop.call_later(self.update_tracker_period, _callback)
379
-
380
- def _handler_ready_tracker_mode(self, handler):
381
- """tracker mode to handle handler ready."""
382
- if handler.rpc_key.startswith("server:"):
383
- key = base.random_key(handler.match_key + ":", self._server_pool)
384
- handler.match_key = key
385
- self._server_pool[key] = handler
386
- self._tracker_pending_puts.append(key)
387
- self._update_tracker()
388
- else:
389
- if handler.match_key in self._server_pool:
390
- self._pair_up(self._server_pool.pop(handler.match_key), handler)
391
- else:
392
- handler.send_data(struct.pack('<i', base.RPC_CODE_MISMATCH))
393
- handler.signal_close()
394
-
395
- def _handler_ready_proxy_mode(self, handler):
396
- """Normal proxy mode when handler is ready."""
397
- if handler.rpc_key.startswith("server:"):
398
- pool_src, pool_dst = self._client_pool, self._server_pool
399
- timeout = self.timeout_server
400
- else:
401
- pool_src, pool_dst = self._server_pool, self._client_pool
402
- timeout = self.timeout_client
403
-
404
- key = handler.match_key
405
- if key in pool_src:
406
- self._pair_up(pool_src.pop(key), handler)
407
- return
408
- if key not in pool_dst:
409
- pool_dst[key] = handler
410
- def cleanup():
411
- """Cleanup client connection if timeout"""
412
- if pool_dst.get(key, None) == handler:
413
- logging.info("Timeout client connection %s, cannot find match key=%s",
414
- handler.name(), key)
415
- pool_dst.pop(key)
416
- handler.send_data(struct.pack('<i', base.RPC_CODE_MISMATCH))
417
- handler.signal_close()
418
- self.loop.call_later(timeout, cleanup)
419
- else:
420
- logging.info("Duplicate connection with same key=%s", key)
421
- handler.send_data(struct.pack('<i', base.RPC_CODE_DUPLICATE))
422
- handler.signal_close()
423
-
424
- def handler_ready(self, handler):
425
- """Report handler to be ready."""
426
- logging.info("Handler ready %s", handler.name())
427
- if self._tracker_addr:
428
- self._handler_ready_tracker_mode(handler)
429
- else:
430
- self._handler_ready_proxy_mode(handler)
431
-
432
- def run(self):
433
- """Run the proxy server"""
434
- ioloop.IOLoop.current().start()
435
-
436
-
437
- def _proxy_server(listen_sock,
438
- listen_port,
439
- web_port,
440
- timeout_client,
441
- timeout_server,
442
- tracker_addr,
443
- index_page,
444
- resource_files):
445
- handler = ProxyServerHandler(listen_sock,
446
- listen_port,
447
- web_port,
448
- timeout_client,
449
- timeout_server,
450
- tracker_addr,
451
- index_page,
452
- resource_files)
453
- handler.run()
454
-
455
-
456
- class Proxy(object):
457
- """Start RPC proxy server on a seperate process.
458
-
459
- Python implementation based on multi-processing.
460
-
461
- Parameters
462
- ----------
463
- host : str
464
- The host url of the server.
465
-
466
- port : int
467
- The TCP port to be bind to
468
-
469
- port_end : int, optional
470
- The end TCP port to search
471
-
472
- web_port : int, optional
473
- The http/websocket port of the server.
474
-
475
- timeout_client : float, optional
476
- Timeout of client until it sees a matching connection.
477
-
478
- timeout_server : float, optional
479
- Timeout of server until it sees a matching connection.
480
-
481
- tracker_addr: Tuple (str, int) , optional
482
- The address of RPC Tracker in tuple (host, ip) format.
483
- If is not None, the server will register itself to the tracker.
484
-
485
- index_page : str, optional
486
- Path to an index page that can be used to display at proxy index.
487
-
488
- resource_files : str, optional
489
- Path to local resources that can be included in the http request
490
- """
491
- def __init__(self,
492
- host,
493
- port=9091,
494
- port_end=9199,
495
- web_port=0,
496
- timeout_client=600,
497
- timeout_server=600,
498
- tracker_addr=None,
499
- index_page=None,
500
- resource_files=None):
501
- sock = socket.socket(base.get_addr_family((host, port)), socket.SOCK_STREAM)
502
- self.port = None
503
- for my_port in range(port, port_end):
504
- try:
505
- sock.bind((host, my_port))
506
- self.port = my_port
507
- break
508
- except socket.error as sock_err:
509
- if sock_err.errno in [98, 48]:
510
- continue
511
- else:
512
- raise sock_err
513
- if not self.port:
514
- raise ValueError("cannot bind to any port in [%d, %d)" % (port, port_end))
515
- logging.info("RPCProxy: client port bind to %s:%d", host, self.port)
516
- sock.listen(1)
517
- self.proc = multiprocessing.Process(
518
- target=_proxy_server,
519
- args=(sock, self.port, web_port,
520
- timeout_client, timeout_server,
521
- tracker_addr, index_page, resource_files))
522
- self.proc.start()
523
- sock.close()
524
- self.host = host
525
-
526
- def terminate(self):
527
- """Terminate the server process"""
528
- if self.proc:
529
- logging.info("Terminating Proxy Server...")
530
- self.proc.terminate()
531
- self.proc = None
532
-
533
- def __del__(self):
534
- self.terminate()
535
-
536
-
537
- def websocket_proxy_server(url, key=""):
538
- """Create a RPC server that uses an websocket that connects to a proxy.
539
-
540
- Parameters
541
- ----------
542
- url : str
543
- The url to be connected.
544
-
545
- key : str
546
- The key to identify the server.
547
- """
548
- def create_on_message(conn):
549
- def _fsend(data):
550
- data = bytes(data)
551
- conn.write_message(data, binary=True)
552
- return len(data)
553
- on_message = base._CreateEventDrivenServer(
554
- _fsend, "WebSocketProxyServer", "%toinit")
555
- return on_message
556
-
557
- @gen.coroutine
558
- def _connect(key):
559
- conn = yield websocket.websocket_connect(url)
560
- on_message = create_on_message(conn)
561
- temp = _server_env(None)
562
- # Start connecton
563
- conn.write_message(struct.pack('<i', base.RPC_MAGIC), binary=True)
564
- key = "server:" + key
565
- conn.write_message(struct.pack('<i', len(key)), binary=True)
566
- conn.write_message(key.encode("utf-8"), binary=True)
567
- msg = yield conn.read_message()
568
- assert len(msg) >= 4
569
- magic = struct.unpack('<i', msg[:4])[0]
570
- if magic == base.RPC_CODE_DUPLICATE:
571
- raise RuntimeError("key: %s has already been used in proxy" % key)
572
- elif magic == base.RPC_CODE_MISMATCH:
573
- logging.info("RPCProxy do not have matching client key %s", key)
574
- elif magic != base.RPC_CODE_SUCCESS:
575
- raise RuntimeError("%s is not RPC Proxy" % url)
576
- msg = msg[4:]
577
-
578
- logging.info("Connection established with remote")
579
-
580
- if msg:
581
- on_message(bytearray(msg), 3)
582
-
583
- while True:
584
- try:
585
- msg = yield conn.read_message()
586
- if msg is None:
587
- break
588
- on_message(bytearray(msg), 3)
589
- except websocket.WebSocketClosedError as err:
590
- break
591
- logging.info("WebSocketProxyServer closed...")
592
- temp.remove()
593
- ioloop.IOLoop.current().stop()
594
- ioloop.IOLoop.current().spawn_callback(_connect, key)
595
- ioloop.IOLoop.current().start()