mindspore 2.2.14__cp38-cp38-manylinux1_x86_64.whl → 2.3.0rc2__cp38-cp38-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 (1172) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +4 -4
  3. mindspore/_akg/akg/composite/build_module.py +155 -11
  4. mindspore/_akg/akg/config/repository.json +38 -0
  5. mindspore/_akg/akg/ms/info_version_adapt.py +29 -0
  6. mindspore/_akg/akg/tvm/contrib/nvcc.py +4 -1
  7. mindspore/_akg/akg/utils/ascend_profilier/path_manager.py +2 -1
  8. mindspore/_akg/akg/utils/composite_op_helper.py +4 -2
  9. mindspore/_akg/akg/utils/dump_ascend_meta.py +2 -2
  10. mindspore/_akg/akg/utils/gen_random.py +14 -8
  11. mindspore/_akg/akg/utils/op_dsl.py +11 -0
  12. mindspore/_akg/akg/utils/tbe_codegen_utils.py +18 -8
  13. mindspore/_c_dataengine.cpython-38-x86_64-linux-gnu.so +0 -0
  14. mindspore/_c_expression.cpython-38-x86_64-linux-gnu.so +0 -0
  15. mindspore/_c_mindrecord.cpython-38-x86_64-linux-gnu.so +0 -0
  16. mindspore/_checkparam.py +78 -0
  17. mindspore/_extends/builtin_operations.py +2 -1
  18. mindspore/_extends/graph_kernel/model/graph_parallel.py +16 -6
  19. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +3 -16
  20. mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +16 -4
  21. mindspore/_extends/parallel_compile/akg_compiler/compiler.py +1 -0
  22. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +96 -0
  23. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +2 -1
  24. mindspore/_extends/parallel_compile/akg_compiler/util.py +5 -2
  25. mindspore/_extends/parse/__init__.py +18 -14
  26. mindspore/_extends/parse/compile_config.py +229 -0
  27. mindspore/_extends/parse/parser.py +155 -59
  28. mindspore/_extends/parse/resources.py +40 -7
  29. mindspore/_extends/parse/standard_method.py +127 -206
  30. mindspore/_extends/remote/kernel_build_server.py +2 -0
  31. mindspore/_mindspore_offline_debug.cpython-38-x86_64-linux-gnu.so +0 -0
  32. mindspore/{ops/_op_impl/tbe/atomic_addr_clean.py → _profiler.py} +13 -16
  33. mindspore/amp.py +24 -18
  34. mindspore/bin/cache_admin +0 -0
  35. mindspore/bin/cache_server +0 -0
  36. mindspore/boost/boost_cell_wrapper.py +1 -1
  37. mindspore/boost/group_loss_scale_manager.py +1 -1
  38. mindspore/common/__init__.py +7 -3
  39. mindspore/common/_jit_fallback_utils.py +2 -3
  40. mindspore/common/_register_for_adapter.py +7 -0
  41. mindspore/common/_register_for_recompute.py +48 -0
  42. mindspore/common/_stub_tensor.py +7 -1
  43. mindspore/common/_utils.py +5 -17
  44. mindspore/common/api.py +145 -50
  45. mindspore/common/auto_dynamic_shape.py +27 -14
  46. mindspore/common/dtype.py +9 -6
  47. mindspore/common/dump.py +5 -4
  48. mindspore/common/hook_handle.py +51 -4
  49. mindspore/common/initializer.py +1 -1
  50. mindspore/common/jit_config.py +33 -13
  51. mindspore/common/lazy_inline.py +58 -17
  52. mindspore/common/mindir_util.py +12 -2
  53. mindspore/common/mutable.py +79 -14
  54. mindspore/common/parameter.py +24 -4
  55. mindspore/common/recompute.py +247 -0
  56. mindspore/common/seed.py +9 -9
  57. mindspore/common/sparse_tensor.py +251 -18
  58. mindspore/common/symbol.py +122 -0
  59. mindspore/common/tensor.py +391 -465
  60. mindspore/communication/__init__.py +3 -3
  61. mindspore/communication/_comm_helper.py +5 -0
  62. mindspore/communication/management.py +53 -38
  63. mindspore/config/op_info.config +22 -54
  64. mindspore/context.py +176 -55
  65. mindspore/dataset/__init__.py +5 -5
  66. mindspore/dataset/audio/__init__.py +6 -6
  67. mindspore/dataset/audio/transforms.py +711 -158
  68. mindspore/dataset/callback/ds_callback.py +2 -2
  69. mindspore/dataset/engine/cache_client.py +2 -2
  70. mindspore/dataset/engine/datasets.py +72 -38
  71. mindspore/dataset/engine/datasets_audio.py +14 -14
  72. mindspore/dataset/engine/datasets_standard_format.py +33 -3
  73. mindspore/dataset/engine/datasets_text.py +38 -38
  74. mindspore/dataset/engine/datasets_user_defined.py +7 -7
  75. mindspore/dataset/engine/datasets_vision.py +75 -71
  76. mindspore/dataset/engine/offload.py +5 -7
  77. mindspore/dataset/text/__init__.py +3 -3
  78. mindspore/dataset/text/transforms.py +408 -121
  79. mindspore/dataset/text/utils.py +9 -9
  80. mindspore/dataset/transforms/__init__.py +1 -1
  81. mindspore/dataset/transforms/transforms.py +261 -76
  82. mindspore/dataset/utils/browse_dataset.py +9 -9
  83. mindspore/dataset/vision/__init__.py +3 -3
  84. mindspore/dataset/vision/c_transforms.py +5 -5
  85. mindspore/dataset/vision/transforms.py +2264 -514
  86. mindspore/dataset/vision/utils.py +40 -9
  87. mindspore/dataset/vision/validators.py +7 -1
  88. mindspore/experimental/optim/__init__.py +12 -2
  89. mindspore/experimental/optim/adadelta.py +161 -0
  90. mindspore/experimental/optim/adagrad.py +168 -0
  91. mindspore/experimental/optim/adam.py +35 -34
  92. mindspore/experimental/optim/adamax.py +170 -0
  93. mindspore/experimental/optim/adamw.py +40 -16
  94. mindspore/experimental/optim/asgd.py +153 -0
  95. mindspore/experimental/optim/lr_scheduler.py +66 -121
  96. mindspore/experimental/optim/nadam.py +157 -0
  97. mindspore/experimental/optim/optimizer.py +15 -8
  98. mindspore/experimental/optim/radam.py +194 -0
  99. mindspore/experimental/optim/rmsprop.py +154 -0
  100. mindspore/experimental/optim/rprop.py +164 -0
  101. mindspore/experimental/optim/sgd.py +28 -19
  102. mindspore/hal/__init__.py +34 -0
  103. mindspore/hal/_ascend.py +57 -0
  104. mindspore/hal/_base.py +57 -0
  105. mindspore/hal/_cpu.py +56 -0
  106. mindspore/hal/_gpu.py +57 -0
  107. mindspore/hal/device.py +356 -0
  108. mindspore/hal/event.py +179 -0
  109. mindspore/hal/stream.py +339 -0
  110. mindspore/include/api/data_type.h +2 -2
  111. mindspore/include/api/dual_abi_helper.h +16 -3
  112. mindspore/include/api/model.h +1 -3
  113. mindspore/include/api/status.h +14 -0
  114. mindspore/include/c_api/model_c.h +173 -0
  115. mindspore/include/c_api/ms/base/types.h +1 -0
  116. mindspore/include/c_api/types_c.h +19 -0
  117. mindspore/include/dataset/execute.h +1 -3
  118. mindspore/include/mindapi/base/format.h +125 -23
  119. mindspore/include/mindapi/base/types.h +12 -0
  120. mindspore/lib/libdnnl.so.2 +0 -0
  121. mindspore/lib/libmindspore.so +0 -0
  122. mindspore/lib/libmindspore_backend.so +0 -0
  123. mindspore/lib/libmindspore_common.so +0 -0
  124. mindspore/lib/libmindspore_core.so +0 -0
  125. mindspore/lib/libmindspore_glog.so.0 +0 -0
  126. mindspore/lib/libmindspore_gpr.so.15 +0 -0
  127. mindspore/lib/libmindspore_grpc++.so.1 +0 -0
  128. mindspore/lib/libmindspore_grpc.so.15 +0 -0
  129. mindspore/lib/libmindspore_shared_lib.so +0 -0
  130. mindspore/lib/libmpi_adapter.so +0 -0
  131. mindspore/lib/libmpi_collective.so +0 -0
  132. mindspore/lib/libnnacl.so +0 -0
  133. mindspore/lib/libopencv_core.so.4.5 +0 -0
  134. mindspore/lib/libopencv_imgcodecs.so.4.5 +0 -0
  135. mindspore/lib/libopencv_imgproc.so.4.5 +0 -0
  136. mindspore/lib/libps_cache.so +0 -0
  137. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910/aic-ascend910-ops-info.json +2044 -154
  138. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910b/aic-ascend910b-ops-info.json +2044 -33
  139. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/build_tbe_kernel.py +529 -0
  140. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/compiler.py +56 -0
  141. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/custom.py +1109 -0
  142. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/get_file_path.py +36 -0
  143. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +0 -2
  144. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/tbe_topi.py +556 -0
  145. mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +0 -2
  146. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_cpu_kernels.so +0 -0
  147. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/config/cust_aicpu_kernel.json +6318 -1760
  148. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_proto/libcust_op_proto.so +0 -0
  149. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_api/include/aclnn_add_custom.h +49 -0
  150. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_api/include/aclnn_decoder_kv_cache.h +59 -0
  151. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_api/include/aclnn_prompt_kv_cache.h +59 -0
  152. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_api/lib/libcust_opapi.so +0 -0
  153. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_impl/ai_core/tbe/config/ascend310p/aic-ascend310p-ops-info.json +52 -0
  154. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_impl/ai_core/tbe/config/ascend910/aic-ascend910-ops-info.json +232 -0
  155. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_impl/ai_core/tbe/config/ascend910b/aic-ascend910b-ops-info.json +232 -0
  156. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_impl/ai_core/tbe/custom_ascendc_ops_impl/dynamic/add_custom.cpp +81 -0
  157. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_impl/ai_core/tbe/custom_ascendc_ops_impl/dynamic/add_custom.py +134 -0
  158. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_impl/ai_core/tbe/custom_ascendc_ops_impl/dynamic/decoder_kv_cache.cpp +192 -0
  159. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_impl/ai_core/tbe/custom_ascendc_ops_impl/dynamic/decoder_kv_cache.py +134 -0
  160. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_impl/ai_core/tbe/custom_ascendc_ops_impl/dynamic/prompt_kv_cache.cpp +274 -0
  161. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_impl/ai_core/tbe/custom_ascendc_ops_impl/dynamic/prompt_kv_cache.py +134 -0
  162. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_impl/ai_core/tbe/op_tiling/lib/linux/x86_64/libcust_opmaster_rt2.0.so +0 -0
  163. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_impl/ai_core/tbe/op_tiling/liboptiling.so +0 -0
  164. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_proto/inc/op_proto.h +39 -0
  165. mindspore/lib/plugin/ascend/custom_ascendc_ops/op_proto/lib/linux/x86_64/libcust_opsproto_rt2.0.so +0 -0
  166. mindspore/lib/plugin/ascend/libakg.so +0 -0
  167. mindspore/lib/plugin/ascend/libascend_collective.so +0 -0
  168. mindspore/lib/plugin/ascend/libdvpp_utils.so +0 -0
  169. mindspore/lib/plugin/ascend/libhccl_plugin.so +0 -0
  170. mindspore/lib/plugin/ascend/libmindspore_cpu_kernels.so +0 -0
  171. mindspore/lib/plugin/cpu/libakg.so +0 -0
  172. mindspore/lib/plugin/gpu/libcuda_ops.so.10 +0 -0
  173. mindspore/lib/plugin/gpu/libcuda_ops.so.11 +0 -0
  174. mindspore/lib/plugin/gpu10.1/libakg.so +0 -0
  175. mindspore/lib/plugin/gpu10.1/libnccl.so.2 +0 -0
  176. mindspore/lib/plugin/gpu10.1/libnvidia_collective.so +0 -0
  177. mindspore/lib/plugin/gpu11.1/libakg.so +0 -0
  178. mindspore/lib/plugin/gpu11.1/libnccl.so.2 +0 -0
  179. mindspore/lib/plugin/gpu11.1/libnvidia_collective.so +0 -0
  180. mindspore/lib/plugin/gpu11.6/libakg.so +0 -0
  181. mindspore/lib/plugin/gpu11.6/libnccl.so.2 +0 -0
  182. mindspore/lib/plugin/gpu11.6/libnvidia_collective.so +0 -0
  183. mindspore/lib/plugin/{libmindspore_ascend.so.1 → libmindspore_ascend.so.2} +0 -0
  184. mindspore/lib/plugin/libmindspore_gpu.so.10.1 +0 -0
  185. mindspore/lib/plugin/libmindspore_gpu.so.11.1 +0 -0
  186. mindspore/lib/plugin/libmindspore_gpu.so.11.6 +0 -0
  187. mindspore/log.py +2 -2
  188. mindspore/mindrecord/__init__.py +5 -1
  189. mindspore/mindrecord/config.py +809 -0
  190. mindspore/mindrecord/filereader.py +25 -0
  191. mindspore/mindrecord/filewriter.py +74 -56
  192. mindspore/mindrecord/mindpage.py +40 -6
  193. mindspore/mindrecord/shardutils.py +3 -2
  194. mindspore/mindrecord/shardwriter.py +7 -0
  195. mindspore/mindrecord/tools/cifar100_to_mr.py +8 -13
  196. mindspore/mindrecord/tools/cifar10_to_mr.py +9 -15
  197. mindspore/mindrecord/tools/csv_to_mr.py +4 -9
  198. mindspore/mindrecord/tools/imagenet_to_mr.py +3 -8
  199. mindspore/mindrecord/tools/mnist_to_mr.py +7 -12
  200. mindspore/mindrecord/tools/tfrecord_to_mr.py +1 -6
  201. mindspore/mint/__init__.py +457 -0
  202. mindspore/mint/nn/__init__.py +430 -0
  203. mindspore/mint/nn/functional.py +424 -0
  204. mindspore/mint/optim/__init__.py +24 -0
  205. mindspore/mint/optim/adamw.py +186 -0
  206. mindspore/multiprocessing/__init__.py +72 -0
  207. mindspore/nn/__init__.py +3 -0
  208. mindspore/nn/cell.py +131 -174
  209. mindspore/nn/dynamic_lr.py +2 -2
  210. mindspore/nn/extend/__init__.py +29 -0
  211. mindspore/nn/extend/basic.py +140 -0
  212. mindspore/nn/extend/embedding.py +143 -0
  213. mindspore/{rewrite/ast_creator_register.py → nn/extend/layer/__init__.py} +9 -19
  214. mindspore/nn/extend/layer/normalization.py +107 -0
  215. mindspore/nn/extend/pooling.py +117 -0
  216. mindspore/nn/generator.py +297 -0
  217. mindspore/nn/layer/activation.py +79 -90
  218. mindspore/nn/layer/basic.py +113 -81
  219. mindspore/nn/layer/channel_shuffle.py +3 -16
  220. mindspore/nn/layer/container.py +3 -3
  221. mindspore/nn/layer/conv.py +71 -71
  222. mindspore/nn/layer/embedding.py +105 -44
  223. mindspore/nn/layer/image.py +4 -7
  224. mindspore/nn/layer/normalization.py +52 -66
  225. mindspore/nn/layer/padding.py +30 -39
  226. mindspore/nn/layer/pooling.py +13 -9
  227. mindspore/nn/layer/rnn_cells.py +5 -15
  228. mindspore/nn/layer/rnns.py +6 -5
  229. mindspore/nn/layer/thor_layer.py +1 -2
  230. mindspore/nn/layer/timedistributed.py +1 -1
  231. mindspore/nn/layer/transformer.py +52 -50
  232. mindspore/nn/learning_rate_schedule.py +6 -5
  233. mindspore/nn/loss/loss.py +43 -64
  234. mindspore/nn/optim/ada_grad.py +4 -2
  235. mindspore/nn/optim/adadelta.py +3 -1
  236. mindspore/nn/optim/adafactor.py +1 -1
  237. mindspore/nn/optim/adam.py +102 -181
  238. mindspore/nn/optim/adamax.py +4 -2
  239. mindspore/nn/optim/adasum.py +2 -2
  240. mindspore/nn/optim/asgd.py +4 -2
  241. mindspore/nn/optim/ftrl.py +31 -61
  242. mindspore/nn/optim/lamb.py +5 -3
  243. mindspore/nn/optim/lars.py +2 -2
  244. mindspore/nn/optim/lazyadam.py +6 -4
  245. mindspore/nn/optim/momentum.py +13 -25
  246. mindspore/nn/optim/optimizer.py +6 -3
  247. mindspore/nn/optim/proximal_ada_grad.py +4 -2
  248. mindspore/nn/optim/rmsprop.py +9 -3
  249. mindspore/nn/optim/rprop.py +4 -2
  250. mindspore/nn/optim/sgd.py +6 -5
  251. mindspore/nn/optim/thor.py +2 -2
  252. mindspore/nn/probability/distribution/_utils/custom_ops.py +2 -2
  253. mindspore/nn/probability/distribution/beta.py +2 -2
  254. mindspore/nn/probability/distribution/categorical.py +4 -6
  255. mindspore/nn/probability/distribution/cauchy.py +2 -2
  256. mindspore/nn/probability/distribution/exponential.py +1 -1
  257. mindspore/nn/probability/distribution/gumbel.py +2 -2
  258. mindspore/nn/probability/distribution/poisson.py +2 -2
  259. mindspore/nn/probability/distribution/uniform.py +2 -2
  260. mindspore/nn/reinforcement/_tensors_queue.py +13 -1
  261. mindspore/nn/wrap/__init__.py +2 -1
  262. mindspore/nn/wrap/cell_wrapper.py +33 -12
  263. mindspore/nn/wrap/grad_reducer.py +148 -8
  264. mindspore/nn/wrap/loss_scale.py +7 -7
  265. mindspore/numpy/__init__.py +2 -0
  266. mindspore/numpy/array_creations.py +2 -0
  267. mindspore/numpy/array_ops.py +1 -5
  268. mindspore/numpy/fft.py +431 -0
  269. mindspore/numpy/math_ops.py +54 -60
  270. mindspore/numpy/utils.py +3 -0
  271. mindspore/ops/__init__.py +5 -4
  272. mindspore/ops/_grad_experimental/grad_array_ops.py +4 -129
  273. mindspore/ops/_grad_experimental/grad_comm_ops.py +14 -18
  274. mindspore/ops/_grad_experimental/grad_math_ops.py +68 -283
  275. mindspore/ops/_grad_experimental/grad_nn_ops.py +0 -53
  276. mindspore/ops/_grad_experimental/grad_quant_ops.py +3 -3
  277. mindspore/ops/_grad_experimental/grad_sparse.py +1 -1
  278. mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -3
  279. mindspore/ops/_op_impl/__init__.py +0 -1
  280. mindspore/ops/_op_impl/aicpu/gamma.py +2 -0
  281. mindspore/ops/_op_impl/aicpu/generate_eod_mask.py +1 -1
  282. mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +1 -3
  283. mindspore/ops/_op_impl/aicpu/poisson.py +2 -0
  284. mindspore/ops/_op_impl/cpu/__init__.py +1 -3
  285. mindspore/ops/_op_impl/cpu/adam.py +2 -2
  286. mindspore/ops/_op_impl/cpu/adam_weight_decay.py +3 -2
  287. mindspore/ops/_op_impl/cpu/maximum_grad.py +16 -14
  288. mindspore/ops/_op_impl/cpu/minimum_grad.py +8 -0
  289. mindspore/ops/_vmap/vmap_array_ops.py +137 -101
  290. mindspore/ops/_vmap/vmap_base.py +8 -1
  291. mindspore/ops/_vmap/vmap_grad_math_ops.py +95 -9
  292. mindspore/ops/_vmap/vmap_grad_nn_ops.py +143 -58
  293. mindspore/ops/_vmap/vmap_image_ops.py +70 -13
  294. mindspore/ops/_vmap/vmap_math_ops.py +101 -57
  295. mindspore/ops/_vmap/vmap_nn_ops.py +230 -97
  296. mindspore/ops/_vmap/vmap_other_ops.py +1 -1
  297. mindspore/ops/auto_generate/__init__.py +31 -0
  298. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +205 -0
  299. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +257 -0
  300. mindspore/ops/auto_generate/gen_arg_handler.py +171 -0
  301. mindspore/ops/auto_generate/gen_extend_func.py +404 -0
  302. mindspore/ops/auto_generate/gen_ops_def.py +5653 -0
  303. mindspore/ops/auto_generate/gen_ops_prim.py +11623 -0
  304. mindspore/ops/auto_generate/pyboost_inner_prim.py +359 -0
  305. mindspore/ops/composite/__init__.py +5 -2
  306. mindspore/ops/composite/base.py +118 -17
  307. mindspore/ops/composite/math_ops.py +9 -48
  308. mindspore/ops/composite/multitype_ops/_compile_utils.py +168 -602
  309. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +24 -133
  310. mindspore/ops/composite/multitype_ops/add_impl.py +6 -0
  311. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +6 -0
  312. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +6 -0
  313. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +6 -0
  314. mindspore/ops/composite/multitype_ops/div_impl.py +8 -0
  315. mindspore/ops/composite/multitype_ops/equal_impl.py +6 -0
  316. mindspore/ops/composite/multitype_ops/floordiv_impl.py +8 -0
  317. mindspore/ops/composite/multitype_ops/getitem_impl.py +6 -0
  318. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +6 -0
  319. mindspore/ops/composite/multitype_ops/greater_impl.py +6 -0
  320. mindspore/ops/composite/multitype_ops/in_impl.py +8 -2
  321. mindspore/ops/composite/multitype_ops/left_shift_impl.py +6 -0
  322. mindspore/ops/composite/multitype_ops/less_equal_impl.py +6 -0
  323. mindspore/ops/composite/multitype_ops/less_impl.py +6 -0
  324. mindspore/ops/composite/multitype_ops/logic_not_impl.py +6 -0
  325. mindspore/ops/composite/multitype_ops/logical_and_impl.py +6 -0
  326. mindspore/ops/composite/multitype_ops/logical_or_impl.py +6 -0
  327. mindspore/ops/composite/multitype_ops/mod_impl.py +6 -0
  328. mindspore/ops/composite/multitype_ops/mul_impl.py +6 -0
  329. mindspore/ops/composite/multitype_ops/negative_impl.py +9 -3
  330. mindspore/ops/composite/multitype_ops/not_equal_impl.py +6 -0
  331. mindspore/ops/composite/multitype_ops/not_in_impl.py +6 -1
  332. mindspore/ops/composite/multitype_ops/ones_like_impl.py +2 -2
  333. mindspore/ops/composite/multitype_ops/pow_impl.py +6 -0
  334. mindspore/ops/composite/multitype_ops/right_shift_impl.py +6 -0
  335. mindspore/ops/composite/multitype_ops/setitem_impl.py +32 -21
  336. mindspore/ops/composite/multitype_ops/sub_impl.py +6 -0
  337. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +6 -3
  338. mindspore/ops/deprecated.py +14 -3
  339. mindspore/ops/extend/__init__.py +54 -0
  340. mindspore/ops/extend/array_func.py +259 -0
  341. mindspore/ops/extend/math_func.py +76 -0
  342. mindspore/ops/extend/nn_func.py +384 -0
  343. mindspore/ops/function/__init__.py +37 -12
  344. mindspore/ops/function/array_func.py +702 -1867
  345. mindspore/ops/function/clip_func.py +19 -31
  346. mindspore/ops/function/debug_func.py +1 -4
  347. mindspore/ops/function/fft_func.py +31 -0
  348. mindspore/ops/function/grad/grad_func.py +24 -17
  349. mindspore/ops/function/image_func.py +27 -21
  350. mindspore/ops/function/linalg_func.py +35 -68
  351. mindspore/ops/function/math_func.py +639 -2531
  352. mindspore/ops/function/nn_func.py +1274 -832
  353. mindspore/ops/function/other_func.py +4 -5
  354. mindspore/ops/function/parameter_func.py +5 -93
  355. mindspore/ops/function/random_func.py +84 -71
  356. mindspore/ops/function/sparse_unary_func.py +9 -16
  357. mindspore/ops/function/spectral_func.py +1 -1
  358. mindspore/ops/function/vmap_func.py +14 -14
  359. mindspore/ops/functional.py +57 -63
  360. mindspore/ops/op_info_register.py +16 -43
  361. mindspore/ops/operations/__init__.py +19 -20
  362. mindspore/ops/operations/_grad_ops.py +20 -828
  363. mindspore/ops/operations/_inner_ops.py +180 -288
  364. mindspore/ops/operations/_scalar_ops.py +5 -480
  365. mindspore/ops/operations/_sequence_ops.py +6 -36
  366. mindspore/ops/operations/array_ops.py +83 -2697
  367. mindspore/ops/operations/comm_ops.py +38 -46
  368. mindspore/ops/operations/custom_ops.py +14 -96
  369. mindspore/ops/operations/debug_ops.py +100 -31
  370. mindspore/ops/operations/image_ops.py +1 -217
  371. mindspore/ops/operations/inner_ops.py +3 -38
  372. mindspore/ops/operations/linalg_ops.py +1 -49
  373. mindspore/{rewrite/ast_transformers → ops/operations/manually_defined}/__init__.py +11 -4
  374. mindspore/ops/operations/manually_defined/_inner.py +61 -0
  375. mindspore/ops/operations/manually_defined/ops_def.py +1716 -0
  376. mindspore/ops/operations/math_ops.py +581 -4629
  377. mindspore/ops/operations/nn_ops.py +260 -1941
  378. mindspore/ops/operations/other_ops.py +50 -42
  379. mindspore/ops/operations/random_ops.py +3 -52
  380. mindspore/ops/operations/sparse_ops.py +3 -3
  381. mindspore/ops/primitive.py +196 -96
  382. mindspore/ops_generate/__init__.py +27 -0
  383. mindspore/ops_generate/arg_dtype_cast.py +257 -0
  384. mindspore/ops_generate/arg_handler.py +171 -0
  385. mindspore/ops_generate/gen_aclnn_implement.py +266 -0
  386. mindspore/ops_generate/gen_ops.py +1062 -0
  387. mindspore/ops_generate/gen_ops_inner_prim.py +131 -0
  388. mindspore/ops_generate/gen_pyboost_func.py +939 -0
  389. mindspore/ops_generate/gen_utils.py +188 -0
  390. mindspore/ops_generate/op_proto.py +138 -0
  391. mindspore/ops_generate/pyboost_utils.py +349 -0
  392. mindspore/ops_generate/template.py +238 -0
  393. mindspore/parallel/__init__.py +6 -4
  394. mindspore/parallel/_auto_parallel_context.py +52 -2
  395. mindspore/parallel/_cell_wrapper.py +16 -9
  396. mindspore/parallel/_cost_model_context.py +1 -1
  397. mindspore/parallel/_dp_allreduce_fusion.py +159 -159
  398. mindspore/parallel/_parallel_serialization.py +29 -13
  399. mindspore/parallel/_ps_context.py +1 -1
  400. mindspore/parallel/_recovery_context.py +1 -1
  401. mindspore/parallel/_tensor.py +19 -7
  402. mindspore/parallel/_transformer/__init__.py +1 -1
  403. mindspore/parallel/_transformer/layers.py +1 -1
  404. mindspore/parallel/_transformer/loss.py +1 -1
  405. mindspore/parallel/_transformer/moe.py +1 -1
  406. mindspore/parallel/_transformer/op_parallel_config.py +1 -1
  407. mindspore/parallel/_transformer/transformer.py +1 -1
  408. mindspore/parallel/_utils.py +147 -6
  409. mindspore/parallel/algo_parameter_config.py +6 -6
  410. mindspore/parallel/checkpoint_transform.py +180 -24
  411. mindspore/parallel/cluster/__init__.py +15 -0
  412. mindspore/parallel/cluster/process_entity/__init__.py +18 -0
  413. mindspore/parallel/cluster/process_entity/_api.py +345 -0
  414. mindspore/parallel/cluster/process_entity/_utils.py +116 -0
  415. mindspore/parallel/cluster/run.py +139 -0
  416. mindspore/parallel/mpi/__init__.py +1 -1
  417. mindspore/parallel/mpi/_mpi_config.py +1 -1
  418. mindspore/parallel/parameter_broadcast.py +152 -0
  419. mindspore/parallel/shard.py +99 -2
  420. mindspore/profiler/common/util.py +20 -0
  421. mindspore/profiler/envprofiling.py +1 -1
  422. mindspore/{_extends/parallel_compile/tbe_compiler → profiler/parser/ascend_analysis}/__init__.py +1 -1
  423. mindspore/profiler/parser/ascend_analysis/constant.py +66 -0
  424. mindspore/profiler/parser/ascend_analysis/file_manager.py +77 -0
  425. mindspore/profiler/parser/ascend_analysis/function_event.py +146 -0
  426. mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +109 -0
  427. mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +80 -0
  428. mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +52 -0
  429. mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +116 -0
  430. mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +86 -0
  431. mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +59 -0
  432. mindspore/profiler/parser/ascend_cluster_generator.py +14 -9
  433. mindspore/profiler/parser/ascend_communicate_generator.py +0 -1
  434. mindspore/profiler/parser/ascend_flops_generator.py +20 -4
  435. mindspore/profiler/parser/ascend_hccl_generator.py +25 -277
  436. mindspore/profiler/parser/ascend_msprof_exporter.py +112 -132
  437. mindspore/profiler/parser/ascend_msprof_generator.py +73 -283
  438. mindspore/profiler/parser/ascend_op_generator.py +92 -42
  439. mindspore/profiler/parser/ascend_timeline_generator.py +294 -133
  440. mindspore/profiler/parser/base_timeline_generator.py +6 -0
  441. mindspore/profiler/parser/framework_parser.py +3 -2
  442. mindspore/profiler/parser/integrator.py +3 -1
  443. mindspore/profiler/parser/msadvisor_analyzer.py +1 -1
  444. mindspore/profiler/parser/msadvisor_parser.py +1 -1
  445. mindspore/profiler/parser/profiler_info.py +16 -1
  446. mindspore/profiler/profiling.py +305 -167
  447. mindspore/rewrite/__init__.py +2 -13
  448. mindspore/rewrite/api/node.py +121 -35
  449. mindspore/rewrite/api/pattern_engine.py +2 -3
  450. mindspore/rewrite/api/scoped_value.py +16 -15
  451. mindspore/rewrite/api/symbol_tree.py +45 -29
  452. mindspore/rewrite/ast_helpers/__init__.py +3 -6
  453. mindspore/rewrite/ast_helpers/ast_converter.py +143 -0
  454. mindspore/rewrite/ast_helpers/ast_finder.py +48 -0
  455. mindspore/rewrite/ast_helpers/ast_flattener.py +268 -0
  456. mindspore/rewrite/ast_helpers/ast_modifier.py +160 -92
  457. mindspore/rewrite/common/__init__.py +1 -2
  458. mindspore/rewrite/common/config.py +24 -0
  459. mindspore/rewrite/common/{rewrite_elog.py → error_log.py} +39 -39
  460. mindspore/rewrite/{namer.py → common/namer.py} +63 -18
  461. mindspore/rewrite/common/namespace.py +118 -0
  462. mindspore/rewrite/node/__init__.py +5 -5
  463. mindspore/rewrite/node/call_function.py +23 -7
  464. mindspore/rewrite/node/cell_container.py +7 -3
  465. mindspore/rewrite/node/control_flow.py +53 -28
  466. mindspore/rewrite/node/node.py +212 -196
  467. mindspore/rewrite/node/node_manager.py +51 -22
  468. mindspore/rewrite/node/node_topological_manager.py +3 -23
  469. mindspore/rewrite/parsers/__init__.py +12 -0
  470. mindspore/rewrite/parsers/arguments_parser.py +8 -9
  471. mindspore/rewrite/parsers/assign_parser.py +635 -413
  472. mindspore/rewrite/parsers/attribute_parser.py +3 -4
  473. mindspore/rewrite/parsers/class_def_parser.py +107 -144
  474. mindspore/rewrite/parsers/constant_parser.py +5 -5
  475. mindspore/rewrite/parsers/container_parser.py +4 -6
  476. mindspore/rewrite/parsers/expr_parser.py +55 -0
  477. mindspore/rewrite/parsers/for_parser.py +31 -98
  478. mindspore/rewrite/parsers/function_def_parser.py +13 -5
  479. mindspore/rewrite/parsers/if_parser.py +28 -10
  480. mindspore/rewrite/parsers/module_parser.py +8 -182
  481. mindspore/rewrite/parsers/parser.py +1 -5
  482. mindspore/rewrite/parsers/parser_register.py +1 -1
  483. mindspore/rewrite/parsers/return_parser.py +5 -10
  484. mindspore/rewrite/parsers/while_parser.py +59 -0
  485. mindspore/rewrite/sparsify/utils.py +1 -1
  486. mindspore/rewrite/symbol_tree/__init__.py +20 -0
  487. mindspore/rewrite/{symbol_tree.py → symbol_tree/symbol_tree.py} +704 -185
  488. mindspore/rewrite/{symbol_tree_builder.py → symbol_tree/symbol_tree_builder.py} +8 -8
  489. mindspore/rewrite/{symbol_tree_dumper.py → symbol_tree/symbol_tree_dumper.py} +4 -4
  490. mindspore/run_check/_check_version.py +6 -14
  491. mindspore/run_check/run_check.py +1 -1
  492. mindspore/safeguard/rewrite_obfuscation.py +9 -19
  493. mindspore/scipy/__init__.py +2 -1
  494. mindspore/scipy/fft.py +133 -0
  495. mindspore/scipy/linalg.py +140 -55
  496. mindspore/scipy/ops.py +15 -71
  497. mindspore/scipy/ops_grad.py +5 -34
  498. mindspore/scipy/optimize/line_search.py +2 -2
  499. mindspore/scipy/optimize/minimize.py +1 -1
  500. mindspore/train/__init__.py +3 -2
  501. mindspore/train/_utils.py +178 -4
  502. mindspore/train/amp.py +167 -245
  503. mindspore/train/anf_ir_pb2.py +8 -2
  504. mindspore/train/callback/_backup_and_restore.py +4 -4
  505. mindspore/train/callback/_callback.py +4 -4
  506. mindspore/train/callback/_checkpoint.py +39 -13
  507. mindspore/train/callback/_early_stop.py +2 -2
  508. mindspore/train/callback/_landscape.py +14 -8
  509. mindspore/train/callback/_loss_monitor.py +2 -2
  510. mindspore/train/callback/_on_request_exit.py +2 -2
  511. mindspore/train/callback/_reduce_lr_on_plateau.py +2 -2
  512. mindspore/train/callback/_summary_collector.py +7 -7
  513. mindspore/train/callback/_time_monitor.py +2 -2
  514. mindspore/train/data_sink.py +1 -1
  515. mindspore/train/dataset_helper.py +18 -4
  516. mindspore/train/loss_scale_manager.py +2 -2
  517. mindspore/train/metrics/accuracy.py +7 -7
  518. mindspore/train/metrics/confusion_matrix.py +8 -6
  519. mindspore/train/metrics/cosine_similarity.py +6 -4
  520. mindspore/train/metrics/error.py +2 -2
  521. mindspore/train/metrics/metric.py +3 -3
  522. mindspore/train/metrics/perplexity.py +2 -1
  523. mindspore/train/metrics/topk.py +2 -2
  524. mindspore/train/mind_ir_pb2.py +89 -15
  525. mindspore/train/model.py +24 -22
  526. mindspore/train/serialization.py +257 -133
  527. mindspore/train/summary/summary_record.py +51 -28
  528. mindspore/train/train_thor/convert_utils.py +3 -3
  529. mindspore/version.py +1 -1
  530. {mindspore-2.2.14.dist-info → mindspore-2.3.0rc2.dist-info}/METADATA +2 -2
  531. {mindspore-2.2.14.dist-info → mindspore-2.3.0rc2.dist-info}/RECORD +534 -1066
  532. {mindspore-2.2.14.dist-info → mindspore-2.3.0rc2.dist-info}/entry_points.txt +1 -0
  533. mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +0 -662
  534. mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +0 -377
  535. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +0 -201
  536. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +0 -515
  537. mindspore/config/super_bar_config.json +0 -544
  538. mindspore/gen_ops.py +0 -273
  539. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_aicpu_kernels.so +0 -0
  540. mindspore/lib/plugin/ascend/libmindspore_aicpu_kernels.so +0 -0
  541. mindspore/nn/layer/flash_attention.py +0 -189
  542. mindspore/ops/_op_impl/cpu/concat.py +0 -39
  543. mindspore/ops/_op_impl/cpu/tensor_shape.py +0 -42
  544. mindspore/ops/_op_impl/tbe/__init__.py +0 -47
  545. mindspore/ops/_op_impl/tbe/abs.py +0 -38
  546. mindspore/ops/_op_impl/tbe/abs_ds.py +0 -39
  547. mindspore/ops/_op_impl/tbe/abs_grad.py +0 -43
  548. mindspore/ops/_op_impl/tbe/abs_grad_ds.py +0 -44
  549. mindspore/ops/_op_impl/tbe/accumulate_n_v2.py +0 -41
  550. mindspore/ops/_op_impl/tbe/accumulate_n_v2_ds.py +0 -42
  551. mindspore/ops/_op_impl/tbe/acos.py +0 -37
  552. mindspore/ops/_op_impl/tbe/acos_ds.py +0 -38
  553. mindspore/ops/_op_impl/tbe/acos_grad.py +0 -43
  554. mindspore/ops/_op_impl/tbe/acos_grad_ds.py +0 -44
  555. mindspore/ops/_op_impl/tbe/acosh.py +0 -37
  556. mindspore/ops/_op_impl/tbe/acosh_ds.py +0 -38
  557. mindspore/ops/_op_impl/tbe/acosh_grad.py +0 -43
  558. mindspore/ops/_op_impl/tbe/acosh_grad_ds.py +0 -44
  559. mindspore/ops/_op_impl/tbe/act_ulq_clamp_max_grad.py +0 -38
  560. mindspore/ops/_op_impl/tbe/act_ulq_clamp_min_grad.py +0 -38
  561. mindspore/ops/_op_impl/tbe/acts_ulq.py +0 -45
  562. mindspore/ops/_op_impl/tbe/acts_ulq_input_grad.py +0 -38
  563. mindspore/ops/_op_impl/tbe/adam_apply_one.py +0 -50
  564. mindspore/ops/_op_impl/tbe/adam_apply_one_assign.py +0 -53
  565. mindspore/ops/_op_impl/tbe/adam_apply_one_ds.py +0 -51
  566. mindspore/ops/_op_impl/tbe/adam_apply_one_with_decay.py +0 -54
  567. mindspore/ops/_op_impl/tbe/adam_apply_one_with_decay_assign.py +0 -54
  568. mindspore/ops/_op_impl/tbe/adam_apply_one_with_decay_ds.py +0 -55
  569. mindspore/ops/_op_impl/tbe/adaptive_max_pool2d.py +0 -37
  570. mindspore/ops/_op_impl/tbe/add.py +0 -42
  571. mindspore/ops/_op_impl/tbe/add_ds.py +0 -43
  572. mindspore/ops/_op_impl/tbe/add_n.py +0 -39
  573. mindspore/ops/_op_impl/tbe/add_n_ds.py +0 -40
  574. mindspore/ops/_op_impl/tbe/addcdiv.py +0 -41
  575. mindspore/ops/_op_impl/tbe/addcdiv_ds.py +0 -42
  576. mindspore/ops/_op_impl/tbe/addcmul.py +0 -43
  577. mindspore/ops/_op_impl/tbe/addcmul_ds.py +0 -44
  578. mindspore/ops/_op_impl/tbe/apply_ada_max.py +0 -68
  579. mindspore/ops/_op_impl/tbe/apply_ada_max_ds.py +0 -69
  580. mindspore/ops/_op_impl/tbe/apply_adadelta.py +0 -66
  581. mindspore/ops/_op_impl/tbe/apply_adadelta_ds.py +0 -67
  582. mindspore/ops/_op_impl/tbe/apply_adagrad.py +0 -55
  583. mindspore/ops/_op_impl/tbe/apply_adagrad_d_a.py +0 -67
  584. mindspore/ops/_op_impl/tbe/apply_adagrad_ds.py +0 -56
  585. mindspore/ops/_op_impl/tbe/apply_adagrad_v2.py +0 -48
  586. mindspore/ops/_op_impl/tbe/apply_adagrad_v2_ds.py +0 -49
  587. mindspore/ops/_op_impl/tbe/apply_adam.py +0 -79
  588. mindspore/ops/_op_impl/tbe/apply_adam_ds.py +0 -80
  589. mindspore/ops/_op_impl/tbe/apply_adam_with_amsgrad.py +0 -60
  590. mindspore/ops/_op_impl/tbe/apply_adam_with_amsgrad_ds.py +0 -61
  591. mindspore/ops/_op_impl/tbe/apply_add_sign.py +0 -65
  592. mindspore/ops/_op_impl/tbe/apply_add_sign_ds.py +0 -66
  593. mindspore/ops/_op_impl/tbe/apply_centered_rms_prop.py +0 -77
  594. mindspore/ops/_op_impl/tbe/apply_centered_rms_prop_ds.py +0 -78
  595. mindspore/ops/_op_impl/tbe/apply_ftrl.py +0 -67
  596. mindspore/ops/_op_impl/tbe/apply_ftrl_ds.py +0 -68
  597. mindspore/ops/_op_impl/tbe/apply_gradient_descent.py +0 -44
  598. mindspore/ops/_op_impl/tbe/apply_gradient_descent_ds.py +0 -45
  599. mindspore/ops/_op_impl/tbe/apply_keras_momentum.py +0 -49
  600. mindspore/ops/_op_impl/tbe/apply_momentum.py +0 -64
  601. mindspore/ops/_op_impl/tbe/apply_momentum_ds.py +0 -65
  602. mindspore/ops/_op_impl/tbe/apply_power_sign.py +0 -65
  603. mindspore/ops/_op_impl/tbe/apply_power_sign_ds.py +0 -66
  604. mindspore/ops/_op_impl/tbe/apply_proximal_adagrad.py +0 -57
  605. mindspore/ops/_op_impl/tbe/apply_proximal_adagrad_ds.py +0 -58
  606. mindspore/ops/_op_impl/tbe/apply_proximal_gradient_descent.py +0 -54
  607. mindspore/ops/_op_impl/tbe/apply_proximal_gradient_descent_ds.py +0 -55
  608. mindspore/ops/_op_impl/tbe/apply_rms_prop.py +0 -52
  609. mindspore/ops/_op_impl/tbe/approximate_equal.py +0 -39
  610. mindspore/ops/_op_impl/tbe/approximate_equal_ds.py +0 -40
  611. mindspore/ops/_op_impl/tbe/arg_max.py +0 -38
  612. mindspore/ops/_op_impl/tbe/arg_max_with_value.py +0 -38
  613. mindspore/ops/_op_impl/tbe/arg_max_with_value_ds.py +0 -39
  614. mindspore/ops/_op_impl/tbe/arg_min.py +0 -38
  615. mindspore/ops/_op_impl/tbe/arg_min_v2_ds.py +0 -40
  616. mindspore/ops/_op_impl/tbe/arg_min_with_value.py +0 -38
  617. mindspore/ops/_op_impl/tbe/arg_min_with_value_ds.py +0 -39
  618. mindspore/ops/_op_impl/tbe/asin.py +0 -37
  619. mindspore/ops/_op_impl/tbe/asin_ds.py +0 -38
  620. mindspore/ops/_op_impl/tbe/asin_grad.py +0 -43
  621. mindspore/ops/_op_impl/tbe/asin_grad_ds.py +0 -44
  622. mindspore/ops/_op_impl/tbe/asinh.py +0 -37
  623. mindspore/ops/_op_impl/tbe/asinh_ds.py +0 -38
  624. mindspore/ops/_op_impl/tbe/asinh_grad.py +0 -43
  625. mindspore/ops/_op_impl/tbe/asinh_grad_ds.py +0 -44
  626. mindspore/ops/_op_impl/tbe/assign.py +0 -79
  627. mindspore/ops/_op_impl/tbe/assign_add.py +0 -59
  628. mindspore/ops/_op_impl/tbe/assign_add_ds.py +0 -60
  629. mindspore/ops/_op_impl/tbe/assign_ds.py +0 -80
  630. mindspore/ops/_op_impl/tbe/assign_sub.py +0 -55
  631. mindspore/ops/_op_impl/tbe/assign_sub_ds.py +0 -56
  632. mindspore/ops/_op_impl/tbe/atan.py +0 -37
  633. mindspore/ops/_op_impl/tbe/atan2.py +0 -38
  634. mindspore/ops/_op_impl/tbe/atan2_ds.py +0 -39
  635. mindspore/ops/_op_impl/tbe/atan_ds.py +0 -38
  636. mindspore/ops/_op_impl/tbe/atan_grad.py +0 -43
  637. mindspore/ops/_op_impl/tbe/atan_grad_ds.py +0 -44
  638. mindspore/ops/_op_impl/tbe/atanh.py +0 -37
  639. mindspore/ops/_op_impl/tbe/atanh_ds.py +0 -38
  640. mindspore/ops/_op_impl/tbe/avg_pool.py +0 -43
  641. mindspore/ops/_op_impl/tbe/avg_pool_3d.py +0 -44
  642. mindspore/ops/_op_impl/tbe/avg_pool_3d_grad.py +0 -45
  643. mindspore/ops/_op_impl/tbe/avg_pool_ds.py +0 -44
  644. mindspore/ops/_op_impl/tbe/avg_pool_grad.py +0 -42
  645. mindspore/ops/_op_impl/tbe/avg_pool_grad_vm.py +0 -42
  646. mindspore/ops/_op_impl/tbe/basic_lstm_cell.py +0 -57
  647. mindspore/ops/_op_impl/tbe/basic_lstm_cell_c_state_grad.py +0 -50
  648. mindspore/ops/_op_impl/tbe/basic_lstm_cell_c_state_grad_v2.py +0 -51
  649. mindspore/ops/_op_impl/tbe/basic_lstm_cell_input_grad.py +0 -42
  650. mindspore/ops/_op_impl/tbe/basic_lstm_cell_weight_grad.py +0 -41
  651. mindspore/ops/_op_impl/tbe/batch_matmul.py +0 -42
  652. mindspore/ops/_op_impl/tbe/batch_matmul_ds.py +0 -41
  653. mindspore/ops/_op_impl/tbe/batch_matmul_v2.py +0 -47
  654. mindspore/ops/_op_impl/tbe/batch_to_space.py +0 -38
  655. mindspore/ops/_op_impl/tbe/batch_to_space_nd.py +0 -38
  656. mindspore/ops/_op_impl/tbe/batch_to_space_nd_ds.py +0 -39
  657. mindspore/ops/_op_impl/tbe/batch_to_space_nd_v2.py +0 -41
  658. mindspore/ops/_op_impl/tbe/batchnorm.py +0 -58
  659. mindspore/ops/_op_impl/tbe/batchnorm_grad.py +0 -58
  660. mindspore/ops/_op_impl/tbe/bce_with_logits_loss.py +0 -42
  661. mindspore/ops/_op_impl/tbe/bessel_i0e.py +0 -37
  662. mindspore/ops/_op_impl/tbe/bessel_i0e_ds.py +0 -38
  663. mindspore/ops/_op_impl/tbe/bessel_i1e.py +0 -37
  664. mindspore/ops/_op_impl/tbe/bessel_i1e_ds.py +0 -38
  665. mindspore/ops/_op_impl/tbe/bias_add.py +0 -38
  666. mindspore/ops/_op_impl/tbe/bias_add_ds.py +0 -39
  667. mindspore/ops/_op_impl/tbe/bias_add_grad.py +0 -53
  668. mindspore/ops/_op_impl/tbe/binary_cross_entropy.py +0 -39
  669. mindspore/ops/_op_impl/tbe/binary_cross_entropy_ds.py +0 -40
  670. mindspore/ops/_op_impl/tbe/binary_cross_entropy_grad.py +0 -44
  671. mindspore/ops/_op_impl/tbe/binary_cross_entropy_grad_ds.py +0 -45
  672. mindspore/ops/_op_impl/tbe/bitwise_and.py +0 -39
  673. mindspore/ops/_op_impl/tbe/bitwise_and_ds.py +0 -40
  674. mindspore/ops/_op_impl/tbe/bitwise_or.py +0 -39
  675. mindspore/ops/_op_impl/tbe/bitwise_or_ds.py +0 -40
  676. mindspore/ops/_op_impl/tbe/bitwise_xor.py +0 -39
  677. mindspore/ops/_op_impl/tbe/bitwise_xor_ds.py +0 -40
  678. mindspore/ops/_op_impl/tbe/bn_infer.py +0 -43
  679. mindspore/ops/_op_impl/tbe/bn_infer_ds.py +0 -45
  680. mindspore/ops/_op_impl/tbe/bn_infer_grad.py +0 -41
  681. mindspore/ops/_op_impl/tbe/bn_infer_grad_ds.py +0 -40
  682. mindspore/ops/_op_impl/tbe/bn_inference.py +0 -50
  683. mindspore/ops/_op_impl/tbe/bn_training_reduce.py +0 -38
  684. mindspore/ops/_op_impl/tbe/bn_training_reduce_ds.py +0 -39
  685. mindspore/ops/_op_impl/tbe/bn_training_reduce_grad.py +0 -46
  686. mindspore/ops/_op_impl/tbe/bn_training_reduce_grad_ds.py +0 -47
  687. mindspore/ops/_op_impl/tbe/bn_training_update.py +0 -52
  688. mindspore/ops/_op_impl/tbe/bn_training_update_ds.py +0 -53
  689. mindspore/ops/_op_impl/tbe/bn_training_update_grad.py +0 -44
  690. mindspore/ops/_op_impl/tbe/bn_training_update_grad_ds.py +0 -45
  691. mindspore/ops/_op_impl/tbe/bn_training_update_v2.py +0 -48
  692. mindspore/ops/_op_impl/tbe/bn_training_update_v3.py +0 -51
  693. mindspore/ops/_op_impl/tbe/bounding_box_decode.py +0 -41
  694. mindspore/ops/_op_impl/tbe/bounding_box_decode_ds.py +0 -42
  695. mindspore/ops/_op_impl/tbe/bounding_box_encode.py +0 -38
  696. mindspore/ops/_op_impl/tbe/broadcast_to.py +0 -40
  697. mindspore/ops/_op_impl/tbe/broadcast_to_ds.py +0 -44
  698. mindspore/ops/_op_impl/tbe/cast.py +0 -55
  699. mindspore/ops/_op_impl/tbe/cast_ds.py +0 -58
  700. mindspore/ops/_op_impl/tbe/cdist.py +0 -38
  701. mindspore/ops/_op_impl/tbe/cdist_grad.py +0 -42
  702. mindspore/ops/_op_impl/tbe/ceil.py +0 -37
  703. mindspore/ops/_op_impl/tbe/ceil_ds.py +0 -38
  704. mindspore/ops/_op_impl/tbe/celu.py +0 -39
  705. mindspore/ops/_op_impl/tbe/centralization.py +0 -39
  706. mindspore/ops/_op_impl/tbe/check_valid.py +0 -38
  707. mindspore/ops/_op_impl/tbe/check_valid_ds.py +0 -39
  708. mindspore/ops/_op_impl/tbe/clip_by_norm_no_div_sum.py +0 -41
  709. mindspore/ops/_op_impl/tbe/clip_by_norm_no_div_sum_ds.py +0 -42
  710. mindspore/ops/_op_impl/tbe/clip_by_value.py +0 -41
  711. mindspore/ops/_op_impl/tbe/clip_by_value_ds.py +0 -42
  712. mindspore/ops/_op_impl/tbe/concat.py +0 -40
  713. mindspore/ops/_op_impl/tbe/concat_ds.py +0 -38
  714. mindspore/ops/_op_impl/tbe/confusion_matrix.py +0 -63
  715. mindspore/ops/_op_impl/tbe/confusion_mul_grad.py +0 -40
  716. mindspore/ops/_op_impl/tbe/confusion_softmax_grad.py +0 -41
  717. mindspore/ops/_op_impl/tbe/confusion_transpose_d.py +0 -39
  718. mindspore/ops/_op_impl/tbe/conv2d.py +0 -47
  719. mindspore/ops/_op_impl/tbe/conv2d_backprop_filter.py +0 -42
  720. mindspore/ops/_op_impl/tbe/conv2d_backprop_filter_ds.py +0 -43
  721. mindspore/ops/_op_impl/tbe/conv2d_backprop_input.py +0 -42
  722. mindspore/ops/_op_impl/tbe/conv2d_backprop_input_ds.py +0 -44
  723. mindspore/ops/_op_impl/tbe/conv2d_ds.py +0 -47
  724. mindspore/ops/_op_impl/tbe/conv2d_transpose.py +0 -48
  725. mindspore/ops/_op_impl/tbe/conv3d.py +0 -45
  726. mindspore/ops/_op_impl/tbe/conv3d_backprop_filter.py +0 -42
  727. mindspore/ops/_op_impl/tbe/conv3d_backprop_input.py +0 -42
  728. mindspore/ops/_op_impl/tbe/conv3d_transpose.py +0 -47
  729. mindspore/ops/_op_impl/tbe/conv3d_transpose_ds.py +0 -48
  730. mindspore/ops/_op_impl/tbe/cos.py +0 -37
  731. mindspore/ops/_op_impl/tbe/cos_ds.py +0 -38
  732. mindspore/ops/_op_impl/tbe/cosh.py +0 -37
  733. mindspore/ops/_op_impl/tbe/cosh_ds.py +0 -38
  734. mindspore/ops/_op_impl/tbe/ctc_loss_v2.py +0 -42
  735. mindspore/ops/_op_impl/tbe/ctc_loss_v2_grad.py +0 -44
  736. mindspore/ops/_op_impl/tbe/cum_sum.py +0 -42
  737. mindspore/ops/_op_impl/tbe/cum_sum_ds.py +0 -44
  738. mindspore/ops/_op_impl/tbe/cummin.py +0 -41
  739. mindspore/ops/_op_impl/tbe/cumprod.py +0 -42
  740. mindspore/ops/_op_impl/tbe/data_format_dim_map.py +0 -38
  741. mindspore/ops/_op_impl/tbe/data_format_dim_map_ds.py +0 -40
  742. mindspore/ops/_op_impl/tbe/deformable_offsets.py +0 -45
  743. mindspore/ops/_op_impl/tbe/deformable_offsets_grad.py +0 -48
  744. mindspore/ops/_op_impl/tbe/depth_to_space_ds.py +0 -49
  745. mindspore/ops/_op_impl/tbe/depthwise_conv2d.py +0 -44
  746. mindspore/ops/_op_impl/tbe/depthwise_conv2d_backprop_filter.py +0 -41
  747. mindspore/ops/_op_impl/tbe/depthwise_conv2d_backprop_input.py +0 -41
  748. mindspore/ops/_op_impl/tbe/diag.py +0 -38
  749. mindspore/ops/_op_impl/tbe/diag_part.py +0 -38
  750. mindspore/ops/_op_impl/tbe/dilation.py +0 -40
  751. mindspore/ops/_op_impl/tbe/div.py +0 -41
  752. mindspore/ops/_op_impl/tbe/div_ds.py +0 -42
  753. mindspore/ops/_op_impl/tbe/div_no_nan.py +0 -41
  754. mindspore/ops/_op_impl/tbe/div_no_nan_ds.py +0 -42
  755. mindspore/ops/_op_impl/tbe/dropout_do_mask.py +0 -38
  756. mindspore/ops/_op_impl/tbe/dropout_do_mask_ds.py +0 -39
  757. mindspore/ops/_op_impl/tbe/dropout_do_mask_v3.py +0 -39
  758. mindspore/ops/_op_impl/tbe/dynamic_atomic_addr_clean.py +0 -34
  759. mindspore/ops/_op_impl/tbe/dynamic_gru_v2.py +0 -95
  760. mindspore/ops/_op_impl/tbe/dynamic_rnn.py +0 -82
  761. mindspore/ops/_op_impl/tbe/elu.py +0 -38
  762. mindspore/ops/_op_impl/tbe/elu_ds.py +0 -39
  763. mindspore/ops/_op_impl/tbe/elu_grad.py +0 -43
  764. mindspore/ops/_op_impl/tbe/elu_grad_ds.py +0 -44
  765. mindspore/ops/_op_impl/tbe/equal.py +0 -42
  766. mindspore/ops/_op_impl/tbe/equal_ds.py +0 -42
  767. mindspore/ops/_op_impl/tbe/erf.py +0 -37
  768. mindspore/ops/_op_impl/tbe/erf_ds.py +0 -38
  769. mindspore/ops/_op_impl/tbe/erfc.py +0 -37
  770. mindspore/ops/_op_impl/tbe/erfc_ds.py +0 -38
  771. mindspore/ops/_op_impl/tbe/erfinv.py +0 -36
  772. mindspore/ops/_op_impl/tbe/exp.py +0 -40
  773. mindspore/ops/_op_impl/tbe/exp_ds.py +0 -41
  774. mindspore/ops/_op_impl/tbe/expand_dims.py +0 -38
  775. mindspore/ops/_op_impl/tbe/expm1.py +0 -37
  776. mindspore/ops/_op_impl/tbe/expm1_ds.py +0 -38
  777. mindspore/ops/_op_impl/tbe/extract_image_patches.py +0 -41
  778. mindspore/ops/_op_impl/tbe/extract_volume_patches.py +0 -39
  779. mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars.py +0 -39
  780. mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars_gradient.py +0 -43
  781. mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars_per_channel.py +0 -39
  782. mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars_per_channel_gradient.py +0 -43
  783. mindspore/ops/_op_impl/tbe/fast_gelu.py +0 -37
  784. mindspore/ops/_op_impl/tbe/fast_gelu_ds.py +0 -38
  785. mindspore/ops/_op_impl/tbe/fast_gelu_grad.py +0 -41
  786. mindspore/ops/_op_impl/tbe/fast_gelu_grad_ds.py +0 -42
  787. mindspore/ops/_op_impl/tbe/fill.py +0 -56
  788. mindspore/ops/_op_impl/tbe/fill_ds.py +0 -42
  789. mindspore/ops/_op_impl/tbe/flatten.py +0 -48
  790. mindspore/ops/_op_impl/tbe/floor.py +0 -37
  791. mindspore/ops/_op_impl/tbe/floor_div.py +0 -41
  792. mindspore/ops/_op_impl/tbe/floor_div_ds.py +0 -42
  793. mindspore/ops/_op_impl/tbe/floor_ds.py +0 -38
  794. mindspore/ops/_op_impl/tbe/floor_mod.py +0 -39
  795. mindspore/ops/_op_impl/tbe/floor_mod_ds.py +0 -40
  796. mindspore/ops/_op_impl/tbe/fused_dbn_dw.py +0 -52
  797. mindspore/ops/_op_impl/tbe/fused_mul_add.py +0 -38
  798. mindspore/ops/_op_impl/tbe/fused_mul_add_n.py +0 -48
  799. mindspore/ops/_op_impl/tbe/fused_mul_add_n_l2loss.py +0 -53
  800. mindspore/ops/_op_impl/tbe/fused_mul_apply_momentum.py +0 -57
  801. mindspore/ops/_op_impl/tbe/fused_mul_apply_momentum_extern.py +0 -67
  802. mindspore/ops/_op_impl/tbe/gather_nd.py +0 -52
  803. mindspore/ops/_op_impl/tbe/gather_nd_ds.py +0 -48
  804. mindspore/ops/_op_impl/tbe/gather_v2.py +0 -56
  805. mindspore/ops/_op_impl/tbe/gather_v2_ds.py +0 -68
  806. mindspore/ops/_op_impl/tbe/gelu.py +0 -37
  807. mindspore/ops/_op_impl/tbe/gelu_ds.py +0 -38
  808. mindspore/ops/_op_impl/tbe/gelu_grad.py +0 -42
  809. mindspore/ops/_op_impl/tbe/gelu_grad_ds.py +0 -43
  810. mindspore/ops/_op_impl/tbe/ger.py +0 -43
  811. mindspore/ops/_op_impl/tbe/ger_ds.py +0 -44
  812. mindspore/ops/_op_impl/tbe/greater.py +0 -43
  813. mindspore/ops/_op_impl/tbe/greater_equal.py +0 -41
  814. mindspore/ops/_op_impl/tbe/greater_equal_ds.py +0 -42
  815. mindspore/ops/_op_impl/tbe/gru_v2_hidden_grad.py +0 -51
  816. mindspore/ops/_op_impl/tbe/gru_v2_hidden_grad_cell.py +0 -52
  817. mindspore/ops/_op_impl/tbe/hard_swish.py +0 -37
  818. mindspore/ops/_op_impl/tbe/hard_swish_ds.py +0 -38
  819. mindspore/ops/_op_impl/tbe/hard_swish_grad.py +0 -41
  820. mindspore/ops/_op_impl/tbe/hard_swish_grad_ds.py +0 -42
  821. mindspore/ops/_op_impl/tbe/histogram_fixed_width.py +0 -40
  822. mindspore/ops/_op_impl/tbe/hshrink.py +0 -33
  823. mindspore/ops/_op_impl/tbe/hshrink_grad.py +0 -37
  824. mindspore/ops/_op_impl/tbe/hsigmoid.py +0 -45
  825. mindspore/ops/_op_impl/tbe/hsigmoid_grad.py +0 -39
  826. mindspore/ops/_op_impl/tbe/ifmr.py +0 -47
  827. mindspore/ops/_op_impl/tbe/ifmr_ds.py +0 -48
  828. mindspore/ops/_op_impl/tbe/im2col.py +0 -42
  829. mindspore/ops/_op_impl/tbe/in_top_k.py +0 -37
  830. mindspore/ops/_op_impl/tbe/inplace_add.py +0 -39
  831. mindspore/ops/_op_impl/tbe/inplace_index_add.py +0 -46
  832. mindspore/ops/_op_impl/tbe/inplace_sub.py +0 -39
  833. mindspore/ops/_op_impl/tbe/inplace_update.py +0 -39
  834. mindspore/ops/_op_impl/tbe/inplace_update_ds.py +0 -40
  835. mindspore/ops/_op_impl/tbe/inv.py +0 -38
  836. mindspore/ops/_op_impl/tbe/inv_ds.py +0 -39
  837. mindspore/ops/_op_impl/tbe/inv_grad.py +0 -40
  838. mindspore/ops/_op_impl/tbe/inv_grad_ds.py +0 -41
  839. mindspore/ops/_op_impl/tbe/invert.py +0 -37
  840. mindspore/ops/_op_impl/tbe/invert_ds.py +0 -38
  841. mindspore/ops/_op_impl/tbe/iou.py +0 -38
  842. mindspore/ops/_op_impl/tbe/iou_ds.py +0 -39
  843. mindspore/ops/_op_impl/tbe/is_close.py +0 -40
  844. mindspore/ops/_op_impl/tbe/kl_div_loss.py +0 -38
  845. mindspore/ops/_op_impl/tbe/kl_div_loss_ds.py +0 -39
  846. mindspore/ops/_op_impl/tbe/kl_div_loss_grad.py +0 -40
  847. mindspore/ops/_op_impl/tbe/l2_loss.py +0 -36
  848. mindspore/ops/_op_impl/tbe/l2_loss_ds.py +0 -37
  849. mindspore/ops/_op_impl/tbe/l2_normalize.py +0 -38
  850. mindspore/ops/_op_impl/tbe/l2_normalize_grad.py +0 -40
  851. mindspore/ops/_op_impl/tbe/lamb_apply_optimizer_assign.py +0 -55
  852. mindspore/ops/_op_impl/tbe/lamb_apply_weight_assign.py +0 -42
  853. mindspore/ops/_op_impl/tbe/lamb_next_mv.py +0 -59
  854. mindspore/ops/_op_impl/tbe/lamb_next_mv_with_decay.py +0 -59
  855. mindspore/ops/_op_impl/tbe/lamb_next_right.py +0 -44
  856. mindspore/ops/_op_impl/tbe/lamb_update_with_lr.py +0 -48
  857. mindspore/ops/_op_impl/tbe/lamb_update_with_lr_v2.py +0 -44
  858. mindspore/ops/_op_impl/tbe/lars_update.py +0 -50
  859. mindspore/ops/_op_impl/tbe/lars_update_ds.py +0 -51
  860. mindspore/ops/_op_impl/tbe/layer_norm.py +0 -46
  861. mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop.py +0 -44
  862. mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop_ds.py +0 -45
  863. mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop_v2.py +0 -40
  864. mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop_v2_ds.py +0 -41
  865. mindspore/ops/_op_impl/tbe/layer_norm_ds.py +0 -47
  866. mindspore/ops/_op_impl/tbe/layer_norm_grad.py +0 -48
  867. mindspore/ops/_op_impl/tbe/layer_norm_x_backprop.py +0 -43
  868. mindspore/ops/_op_impl/tbe/layer_norm_x_backprop_ds.py +0 -44
  869. mindspore/ops/_op_impl/tbe/layer_norm_x_backprop_v2.py +0 -45
  870. mindspore/ops/_op_impl/tbe/layer_norm_x_backprop_v2_ds.py +0 -45
  871. mindspore/ops/_op_impl/tbe/lerp.py +0 -38
  872. mindspore/ops/_op_impl/tbe/less.py +0 -41
  873. mindspore/ops/_op_impl/tbe/less_ds.py +0 -42
  874. mindspore/ops/_op_impl/tbe/less_equal.py +0 -41
  875. mindspore/ops/_op_impl/tbe/less_equal_ds.py +0 -42
  876. mindspore/ops/_op_impl/tbe/log.py +0 -40
  877. mindspore/ops/_op_impl/tbe/log1p.py +0 -37
  878. mindspore/ops/_op_impl/tbe/log1p_ds.py +0 -38
  879. mindspore/ops/_op_impl/tbe/log_ds.py +0 -41
  880. mindspore/ops/_op_impl/tbe/logical_and.py +0 -37
  881. mindspore/ops/_op_impl/tbe/logical_and_ds.py +0 -38
  882. mindspore/ops/_op_impl/tbe/logical_not.py +0 -36
  883. mindspore/ops/_op_impl/tbe/logical_not_ds.py +0 -37
  884. mindspore/ops/_op_impl/tbe/logical_or.py +0 -37
  885. mindspore/ops/_op_impl/tbe/logical_or_ds.py +0 -38
  886. mindspore/ops/_op_impl/tbe/logsoftmax.py +0 -37
  887. mindspore/ops/_op_impl/tbe/logsoftmax_ds.py +0 -38
  888. mindspore/ops/_op_impl/tbe/logsoftmax_grad.py +0 -38
  889. mindspore/ops/_op_impl/tbe/logsoftmax_grad_ds.py +0 -39
  890. mindspore/ops/_op_impl/tbe/lp_norm.py +0 -40
  891. mindspore/ops/_op_impl/tbe/lp_norm_ds.py +0 -41
  892. mindspore/ops/_op_impl/tbe/lrn.py +0 -41
  893. mindspore/ops/_op_impl/tbe/lrn_grad.py +0 -42
  894. mindspore/ops/_op_impl/tbe/lstm_input_grad.py +0 -51
  895. mindspore/ops/_op_impl/tbe/masked_fill.py +0 -40
  896. mindspore/ops/_op_impl/tbe/masked_fill_ds.py +0 -41
  897. mindspore/ops/_op_impl/tbe/matmul.py +0 -53
  898. mindspore/ops/_op_impl/tbe/matmul_ds.py +0 -47
  899. mindspore/ops/_op_impl/tbe/matmul_v2.py +0 -50
  900. mindspore/ops/_op_impl/tbe/matrix_diag.py +0 -45
  901. mindspore/ops/_op_impl/tbe/matrix_diag_part.py +0 -45
  902. mindspore/ops/_op_impl/tbe/matrix_set_diag.py +0 -46
  903. mindspore/ops/_op_impl/tbe/max_pool.py +0 -39
  904. mindspore/ops/_op_impl/tbe/max_pool3d.py +0 -44
  905. mindspore/ops/_op_impl/tbe/max_pool3d_grad.py +0 -43
  906. mindspore/ops/_op_impl/tbe/max_pool3d_grad_grad.py +0 -44
  907. mindspore/ops/_op_impl/tbe/max_pool_ds.py +0 -40
  908. mindspore/ops/_op_impl/tbe/max_pool_grad.py +0 -43
  909. mindspore/ops/_op_impl/tbe/max_pool_grad_grad.py +0 -41
  910. mindspore/ops/_op_impl/tbe/max_pool_grad_grad_with_argmax.py +0 -41
  911. mindspore/ops/_op_impl/tbe/max_pool_grad_with_argmax.py +0 -42
  912. mindspore/ops/_op_impl/tbe/max_pool_with_argmax.py +0 -40
  913. mindspore/ops/_op_impl/tbe/maximum.py +0 -39
  914. mindspore/ops/_op_impl/tbe/maximum_ds.py +0 -40
  915. mindspore/ops/_op_impl/tbe/maximum_grad.py +0 -46
  916. mindspore/ops/_op_impl/tbe/maximum_grad_ds.py +0 -47
  917. mindspore/ops/_op_impl/tbe/mem_set.py +0 -38
  918. mindspore/ops/_op_impl/tbe/minimum.py +0 -40
  919. mindspore/ops/_op_impl/tbe/minimum_ds.py +0 -41
  920. mindspore/ops/_op_impl/tbe/minimum_grad.py +0 -46
  921. mindspore/ops/_op_impl/tbe/minimum_grad_ds.py +0 -47
  922. mindspore/ops/_op_impl/tbe/mish.py +0 -37
  923. mindspore/ops/_op_impl/tbe/mod.py +0 -41
  924. mindspore/ops/_op_impl/tbe/mod_ds.py +0 -42
  925. mindspore/ops/_op_impl/tbe/mul.py +0 -37
  926. mindspore/ops/_op_impl/tbe/mul_ds.py +0 -38
  927. mindspore/ops/_op_impl/tbe/mul_no_nan.py +0 -39
  928. mindspore/ops/_op_impl/tbe/mul_no_nan_ds.py +0 -40
  929. mindspore/ops/_op_impl/tbe/multilabel_margin_loss.py +0 -39
  930. mindspore/ops/_op_impl/tbe/neg.py +0 -39
  931. mindspore/ops/_op_impl/tbe/neg_ds.py +0 -40
  932. mindspore/ops/_op_impl/tbe/new_im2col.py +0 -40
  933. mindspore/ops/_op_impl/tbe/nll_loss.py +0 -41
  934. mindspore/ops/_op_impl/tbe/nll_loss_grad.py +0 -44
  935. mindspore/ops/_op_impl/tbe/nms_with_mask.py +0 -39
  936. mindspore/ops/_op_impl/tbe/not_equal.py +0 -41
  937. mindspore/ops/_op_impl/tbe/not_equal_ds.py +0 -42
  938. mindspore/ops/_op_impl/tbe/npu_alloc_float_status.py +0 -34
  939. mindspore/ops/_op_impl/tbe/npu_clear_float_status.py +0 -35
  940. mindspore/ops/_op_impl/tbe/npu_clear_float_status_v2.py +0 -35
  941. mindspore/ops/_op_impl/tbe/npu_get_float_status.py +0 -35
  942. mindspore/ops/_op_impl/tbe/npu_get_float_status_v2.py +0 -35
  943. mindspore/ops/_op_impl/tbe/one_hot.py +0 -48
  944. mindspore/ops/_op_impl/tbe/one_hot_ds.py +0 -45
  945. mindspore/ops/_op_impl/tbe/ones_like.py +0 -40
  946. mindspore/ops/_op_impl/tbe/ones_like_ds.py +0 -41
  947. mindspore/ops/_op_impl/tbe/p_s_r_o_i_pooling.py +0 -40
  948. mindspore/ops/_op_impl/tbe/p_s_r_o_i_pooling_grad.py +0 -40
  949. mindspore/ops/_op_impl/tbe/pack.py +0 -58
  950. mindspore/ops/_op_impl/tbe/pack_ds.py +0 -59
  951. mindspore/ops/_op_impl/tbe/pad_d.py +0 -40
  952. mindspore/ops/_op_impl/tbe/pad_d_ds.py +0 -41
  953. mindspore/ops/_op_impl/tbe/parallel_concat.py +0 -70
  954. mindspore/ops/_op_impl/tbe/parallel_resize_bilinear.py +0 -45
  955. mindspore/ops/_op_impl/tbe/parallel_resize_bilinear_grad.py +0 -44
  956. mindspore/ops/_op_impl/tbe/pdist.py +0 -36
  957. mindspore/ops/_op_impl/tbe/pooling.py +0 -46
  958. mindspore/ops/_op_impl/tbe/population_count.py +0 -38
  959. mindspore/ops/_op_impl/tbe/pow.py +0 -41
  960. mindspore/ops/_op_impl/tbe/pow_ds.py +0 -42
  961. mindspore/ops/_op_impl/tbe/prelu.py +0 -37
  962. mindspore/ops/_op_impl/tbe/prelu_ds.py +0 -38
  963. mindspore/ops/_op_impl/tbe/prelu_grad.py +0 -40
  964. mindspore/ops/_op_impl/tbe/range.py +0 -39
  965. mindspore/ops/_op_impl/tbe/real_div.py +0 -38
  966. mindspore/ops/_op_impl/tbe/real_div_ds.py +0 -39
  967. mindspore/ops/_op_impl/tbe/reciprocal.py +0 -36
  968. mindspore/ops/_op_impl/tbe/reciprocal_ds.py +0 -37
  969. mindspore/ops/_op_impl/tbe/reciprocal_grad.py +0 -38
  970. mindspore/ops/_op_impl/tbe/reciprocal_grad_ds.py +0 -39
  971. mindspore/ops/_op_impl/tbe/reduce_all.py +0 -38
  972. mindspore/ops/_op_impl/tbe/reduce_all_ds.py +0 -39
  973. mindspore/ops/_op_impl/tbe/reduce_any.py +0 -38
  974. mindspore/ops/_op_impl/tbe/reduce_any_ds.py +0 -39
  975. mindspore/ops/_op_impl/tbe/reduce_max.py +0 -43
  976. mindspore/ops/_op_impl/tbe/reduce_max_ds.py +0 -41
  977. mindspore/ops/_op_impl/tbe/reduce_mean.py +0 -40
  978. mindspore/ops/_op_impl/tbe/reduce_mean_ds.py +0 -42
  979. mindspore/ops/_op_impl/tbe/reduce_min.py +0 -41
  980. mindspore/ops/_op_impl/tbe/reduce_min_ds.py +0 -41
  981. mindspore/ops/_op_impl/tbe/reduce_prod.py +0 -42
  982. mindspore/ops/_op_impl/tbe/reduce_prod_ds.py +0 -41
  983. mindspore/ops/_op_impl/tbe/reduce_std.py +0 -44
  984. mindspore/ops/_op_impl/tbe/reduce_sum.py +0 -39
  985. mindspore/ops/_op_impl/tbe/reduce_sum_ds.py +0 -41
  986. mindspore/ops/_op_impl/tbe/relu.py +0 -39
  987. mindspore/ops/_op_impl/tbe/relu6.py +0 -38
  988. mindspore/ops/_op_impl/tbe/relu6_ds.py +0 -39
  989. mindspore/ops/_op_impl/tbe/relu6_grad.py +0 -43
  990. mindspore/ops/_op_impl/tbe/relu6_grad_ds.py +0 -44
  991. mindspore/ops/_op_impl/tbe/relu_ds.py +0 -40
  992. mindspore/ops/_op_impl/tbe/relu_grad.py +0 -41
  993. mindspore/ops/_op_impl/tbe/relu_grad_ds.py +0 -42
  994. mindspore/ops/_op_impl/tbe/relu_grad_v2.py +0 -40
  995. mindspore/ops/_op_impl/tbe/relu_grad_v2_ds.py +0 -41
  996. mindspore/ops/_op_impl/tbe/relu_v2.py +0 -40
  997. mindspore/ops/_op_impl/tbe/relu_v2_ds.py +0 -41
  998. mindspore/ops/_op_impl/tbe/renorm.py +0 -39
  999. mindspore/ops/_op_impl/tbe/resize_bilinear.py +0 -40
  1000. mindspore/ops/_op_impl/tbe/resize_bilinear_grad.py +0 -41
  1001. mindspore/ops/_op_impl/tbe/resize_bilinear_v2.py +0 -43
  1002. mindspore/ops/_op_impl/tbe/resize_nearest_neighbor.py +0 -40
  1003. mindspore/ops/_op_impl/tbe/resize_nearest_neighbor_ds.py +0 -40
  1004. mindspore/ops/_op_impl/tbe/resize_nearest_neighbor_grad.py +0 -39
  1005. mindspore/ops/_op_impl/tbe/resize_nearest_neighbor_grad_ds.py +0 -42
  1006. mindspore/ops/_op_impl/tbe/reverse_v2_d.py +0 -37
  1007. mindspore/ops/_op_impl/tbe/rint.py +0 -37
  1008. mindspore/ops/_op_impl/tbe/rint_ds.py +0 -38
  1009. mindspore/ops/_op_impl/tbe/roi_align.py +0 -43
  1010. mindspore/ops/_op_impl/tbe/roi_align_ds.py +0 -44
  1011. mindspore/ops/_op_impl/tbe/roi_align_grad.py +0 -43
  1012. mindspore/ops/_op_impl/tbe/roi_align_grad_ds.py +0 -44
  1013. mindspore/ops/_op_impl/tbe/roll.py +0 -42
  1014. mindspore/ops/_op_impl/tbe/round.py +0 -38
  1015. mindspore/ops/_op_impl/tbe/round_ds.py +0 -39
  1016. mindspore/ops/_op_impl/tbe/rsqrt.py +0 -37
  1017. mindspore/ops/_op_impl/tbe/rsqrt_ds.py +0 -38
  1018. mindspore/ops/_op_impl/tbe/rsqrt_grad.py +0 -40
  1019. mindspore/ops/_op_impl/tbe/rsqrt_grad_ds.py +0 -41
  1020. mindspore/ops/_op_impl/tbe/scatter_add.py +0 -44
  1021. mindspore/ops/_op_impl/tbe/scatter_div.py +0 -46
  1022. mindspore/ops/_op_impl/tbe/scatter_max.py +0 -45
  1023. mindspore/ops/_op_impl/tbe/scatter_min.py +0 -45
  1024. mindspore/ops/_op_impl/tbe/scatter_mul.py +0 -44
  1025. mindspore/ops/_op_impl/tbe/scatter_nd.py +0 -41
  1026. mindspore/ops/_op_impl/tbe/scatter_nd_add.py +0 -45
  1027. mindspore/ops/_op_impl/tbe/scatter_nd_d.py +0 -41
  1028. mindspore/ops/_op_impl/tbe/scatter_nd_ds.py +0 -49
  1029. mindspore/ops/_op_impl/tbe/scatter_nd_sub.py +0 -47
  1030. mindspore/ops/_op_impl/tbe/scatter_nd_sub_ds.py +0 -48
  1031. mindspore/ops/_op_impl/tbe/scatter_nd_update.py +0 -47
  1032. mindspore/ops/_op_impl/tbe/scatter_nd_update_ds.py +0 -48
  1033. mindspore/ops/_op_impl/tbe/scatter_non_aliasing_add.py +0 -39
  1034. mindspore/ops/_op_impl/tbe/scatter_non_aliasing_add_ds.py +0 -40
  1035. mindspore/ops/_op_impl/tbe/scatter_sub.py +0 -47
  1036. mindspore/ops/_op_impl/tbe/scatter_sub_ds.py +0 -48
  1037. mindspore/ops/_op_impl/tbe/scatter_update.py +0 -43
  1038. mindspore/ops/_op_impl/tbe/select.py +0 -38
  1039. mindspore/ops/_op_impl/tbe/select_ds.py +0 -39
  1040. mindspore/ops/_op_impl/tbe/selu.py +0 -39
  1041. mindspore/ops/_op_impl/tbe/selu_ds.py +0 -40
  1042. mindspore/ops/_op_impl/tbe/sgd.py +0 -62
  1043. mindspore/ops/_op_impl/tbe/sigmoid.py +0 -37
  1044. mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits.py +0 -41
  1045. mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits_ds.py +0 -42
  1046. mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits_grad.py +0 -42
  1047. mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits_grad_ds.py +0 -43
  1048. mindspore/ops/_op_impl/tbe/sigmoid_ds.py +0 -38
  1049. mindspore/ops/_op_impl/tbe/sigmoid_grad.py +0 -39
  1050. mindspore/ops/_op_impl/tbe/sigmoid_grad_ds.py +0 -40
  1051. mindspore/ops/_op_impl/tbe/sign.py +0 -38
  1052. mindspore/ops/_op_impl/tbe/sign_ds.py +0 -39
  1053. mindspore/ops/_op_impl/tbe/sin.py +0 -37
  1054. mindspore/ops/_op_impl/tbe/sin_ds.py +0 -38
  1055. mindspore/ops/_op_impl/tbe/sinh.py +0 -37
  1056. mindspore/ops/_op_impl/tbe/sinh_ds.py +0 -38
  1057. mindspore/ops/_op_impl/tbe/slice.py +0 -58
  1058. mindspore/ops/_op_impl/tbe/smooth_l1_loss.py +0 -45
  1059. mindspore/ops/_op_impl/tbe/smooth_l1_loss_ds.py +0 -46
  1060. mindspore/ops/_op_impl/tbe/smooth_l1_loss_grad.py +0 -46
  1061. mindspore/ops/_op_impl/tbe/smooth_l1_loss_grad_ds.py +0 -47
  1062. mindspore/ops/_op_impl/tbe/soft_margin_loss.py +0 -38
  1063. mindspore/ops/_op_impl/tbe/soft_margin_loss_grad.py +0 -39
  1064. mindspore/ops/_op_impl/tbe/soft_shrink.py +0 -36
  1065. mindspore/ops/_op_impl/tbe/soft_shrink_grad.py +0 -38
  1066. mindspore/ops/_op_impl/tbe/softmax.py +0 -37
  1067. mindspore/ops/_op_impl/tbe/softmax_cross_entropy_with_logits.py +0 -38
  1068. mindspore/ops/_op_impl/tbe/softmax_cross_entropy_with_logits_ds.py +0 -39
  1069. mindspore/ops/_op_impl/tbe/softmax_ds.py +0 -38
  1070. mindspore/ops/_op_impl/tbe/softmax_grad_ext.py +0 -42
  1071. mindspore/ops/_op_impl/tbe/softmax_v2_with_dropout_do_mask_v3.py +0 -39
  1072. mindspore/ops/_op_impl/tbe/softplus.py +0 -37
  1073. mindspore/ops/_op_impl/tbe/softplus_ds.py +0 -38
  1074. mindspore/ops/_op_impl/tbe/softplus_grad.py +0 -38
  1075. mindspore/ops/_op_impl/tbe/softplus_grad_ds.py +0 -38
  1076. mindspore/ops/_op_impl/tbe/softsign.py +0 -37
  1077. mindspore/ops/_op_impl/tbe/softsign_ds.py +0 -38
  1078. mindspore/ops/_op_impl/tbe/sort.py +0 -38
  1079. mindspore/ops/_op_impl/tbe/sort_ds.py +0 -39
  1080. mindspore/ops/_op_impl/tbe/space_to_batch.py +0 -38
  1081. mindspore/ops/_op_impl/tbe/space_to_batch_nd.py +0 -38
  1082. mindspore/ops/_op_impl/tbe/space_to_depth.py +0 -47
  1083. mindspore/ops/_op_impl/tbe/sparse_apply_adadelta.py +0 -56
  1084. mindspore/ops/_op_impl/tbe/sparse_apply_adagrad.py +0 -45
  1085. mindspore/ops/_op_impl/tbe/sparse_apply_adagrad_ds.py +0 -46
  1086. mindspore/ops/_op_impl/tbe/sparse_apply_adagrad_v2.py +0 -46
  1087. mindspore/ops/_op_impl/tbe/sparse_apply_adagrad_v2_ds.py +0 -47
  1088. mindspore/ops/_op_impl/tbe/sparse_apply_ftrl_d.py +0 -53
  1089. mindspore/ops/_op_impl/tbe/sparse_apply_ftrl_d_ds.py +0 -50
  1090. mindspore/ops/_op_impl/tbe/sparse_apply_ftrl_v2.py +0 -50
  1091. mindspore/ops/_op_impl/tbe/sparse_apply_proximal_adagrad.py +0 -66
  1092. mindspore/ops/_op_impl/tbe/sparse_apply_proximal_adagrad_ds.py +0 -67
  1093. mindspore/ops/_op_impl/tbe/sparse_apply_r_m_s_prop.py +0 -57
  1094. mindspore/ops/_op_impl/tbe/sparse_apply_r_m_s_prop_ds.py +0 -58
  1095. mindspore/ops/_op_impl/tbe/sparse_gather_v2.py +0 -56
  1096. mindspore/ops/_op_impl/tbe/sparse_gather_v2_ds.py +0 -58
  1097. mindspore/ops/_op_impl/tbe/split_d.py +0 -38
  1098. mindspore/ops/_op_impl/tbe/split_d_ds.py +0 -39
  1099. mindspore/ops/_op_impl/tbe/split_v.py +0 -39
  1100. mindspore/ops/_op_impl/tbe/splitv.py +0 -39
  1101. mindspore/ops/_op_impl/tbe/sqrt.py +0 -37
  1102. mindspore/ops/_op_impl/tbe/sqrt_ds.py +0 -38
  1103. mindspore/ops/_op_impl/tbe/sqrt_grad.py +0 -43
  1104. mindspore/ops/_op_impl/tbe/sqrt_grad_ds.py +0 -44
  1105. mindspore/ops/_op_impl/tbe/square.py +0 -38
  1106. mindspore/ops/_op_impl/tbe/square_ds.py +0 -39
  1107. mindspore/ops/_op_impl/tbe/square_sum_all.py +0 -40
  1108. mindspore/ops/_op_impl/tbe/square_sum_all_ds.py +0 -41
  1109. mindspore/ops/_op_impl/tbe/square_sum_v1.py +0 -38
  1110. mindspore/ops/_op_impl/tbe/square_sum_v1_ds.py +0 -39
  1111. mindspore/ops/_op_impl/tbe/square_sum_v2.py +0 -39
  1112. mindspore/ops/_op_impl/tbe/squared_difference.py +0 -39
  1113. mindspore/ops/_op_impl/tbe/squared_difference_ds.py +0 -41
  1114. mindspore/ops/_op_impl/tbe/squeeze.py +0 -37
  1115. mindspore/ops/_op_impl/tbe/strided_read.py +0 -38
  1116. mindspore/ops/_op_impl/tbe/strided_slice_d.py +0 -44
  1117. mindspore/ops/_op_impl/tbe/strided_slice_ds.py +0 -71
  1118. mindspore/ops/_op_impl/tbe/strided_slice_grad_d.py +0 -51
  1119. mindspore/ops/_op_impl/tbe/strided_slice_grad_ds.py +0 -57
  1120. mindspore/ops/_op_impl/tbe/strided_write.py +0 -38
  1121. mindspore/ops/_op_impl/tbe/sub.py +0 -39
  1122. mindspore/ops/_op_impl/tbe/sub_ds.py +0 -40
  1123. mindspore/ops/_op_impl/tbe/tan.py +0 -38
  1124. mindspore/ops/_op_impl/tbe/tan_ds.py +0 -39
  1125. mindspore/ops/_op_impl/tbe/tanh.py +0 -37
  1126. mindspore/ops/_op_impl/tbe/tanh_ds.py +0 -38
  1127. mindspore/ops/_op_impl/tbe/tanh_grad.py +0 -39
  1128. mindspore/ops/_op_impl/tbe/tanh_grad_ds.py +0 -40
  1129. mindspore/ops/_op_impl/tbe/tensor_move.py +0 -49
  1130. mindspore/ops/_op_impl/tbe/tensor_move_ds.py +0 -50
  1131. mindspore/ops/_op_impl/tbe/tensor_scatter_update.py +0 -41
  1132. mindspore/ops/_op_impl/tbe/tile.py +0 -37
  1133. mindspore/ops/_op_impl/tbe/tile_ds.py +0 -42
  1134. mindspore/ops/_op_impl/tbe/top_k.py +0 -42
  1135. mindspore/ops/_op_impl/tbe/top_k_ds.py +0 -43
  1136. mindspore/ops/_op_impl/tbe/trans_data.py +0 -167
  1137. mindspore/ops/_op_impl/tbe/trans_data_ds.py +0 -180
  1138. mindspore/ops/_op_impl/tbe/trans_data_rnn.py +0 -44
  1139. mindspore/ops/_op_impl/tbe/transpose.py +0 -60
  1140. mindspore/ops/_op_impl/tbe/transpose_d.py +0 -47
  1141. mindspore/ops/_op_impl/tbe/transpose_nod.py +0 -60
  1142. mindspore/ops/_op_impl/tbe/trunc.py +0 -39
  1143. mindspore/ops/_op_impl/tbe/truncate_div.py +0 -41
  1144. mindspore/ops/_op_impl/tbe/truncate_div_ds.py +0 -42
  1145. mindspore/ops/_op_impl/tbe/truncate_mod.py +0 -41
  1146. mindspore/ops/_op_impl/tbe/truncate_mod_ds.py +0 -42
  1147. mindspore/ops/_op_impl/tbe/unpack.py +0 -38
  1148. mindspore/ops/_op_impl/tbe/unpack_ds.py +0 -39
  1149. mindspore/ops/_op_impl/tbe/unsorted_segment_max.py +0 -49
  1150. mindspore/ops/_op_impl/tbe/unsorted_segment_max_ds.py +0 -40
  1151. mindspore/ops/_op_impl/tbe/unsorted_segment_min.py +0 -49
  1152. mindspore/ops/_op_impl/tbe/unsorted_segment_min_ds.py +0 -40
  1153. mindspore/ops/_op_impl/tbe/unsorted_segment_prod.py +0 -49
  1154. mindspore/ops/_op_impl/tbe/unsorted_segment_prod_ds.py +0 -38
  1155. mindspore/ops/_op_impl/tbe/unsorted_segment_sum.py +0 -38
  1156. mindspore/ops/_op_impl/tbe/unsorted_segment_sum_ds.py +0 -41
  1157. mindspore/ops/_op_impl/tbe/wts_arq.py +0 -40
  1158. mindspore/ops/_op_impl/tbe/xdivy.py +0 -38
  1159. mindspore/ops/_op_impl/tbe/xdivy_ds.py +0 -39
  1160. mindspore/ops/_op_impl/tbe/xlogy.py +0 -38
  1161. mindspore/ops/_op_impl/tbe/xlogy_ds.py +0 -39
  1162. mindspore/ops/_op_impl/tbe/zeros_like.py +0 -41
  1163. mindspore/ops/_op_impl/tbe/zeros_like_ds.py +0 -42
  1164. mindspore/ops/_tracefunc.py +0 -241
  1165. mindspore/ops/arg_dtype_cast.py +0 -54
  1166. mindspore/rewrite/api/tree_node_helper.py +0 -60
  1167. mindspore/rewrite/ast_helpers/ast_creator.py +0 -115
  1168. mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +0 -267
  1169. mindspore/rewrite/ast_transformers/remove_return_out_of_if.py +0 -228
  1170. mindspore/rewrite/namespace.py +0 -53
  1171. {mindspore-2.2.14.dist-info → mindspore-2.3.0rc2.dist-info}/WHEEL +0 -0
  1172. {mindspore-2.2.14.dist-info → mindspore-2.3.0rc2.dist-info}/top_level.txt +0 -0
@@ -13,28 +13,28 @@
13
13
  # limitations under the License.
14
14
  # ============================================================================
15
15
  """Parse ast.Assign in construct function to node of SymbolTree."""
16
- from typing import Union
16
+ from typing import Union, List, Dict
17
+ import types
17
18
  import os
18
19
  import ast
19
20
  import sys
20
21
  import inspect
22
+ import builtins
23
+ from textwrap import dedent
21
24
 
22
25
  from mindspore import log as logger
23
- from mindspore.nn import Cell, SequentialCell
24
- from mindspore.ops import Primitive
25
- from mindspore.rewrite.parsers.parser_register import ParserRegister, reg_parser
26
- from mindspore.rewrite.namespace import is_subtree, is_functional, get_functional
27
- from mindspore.rewrite.symbol_tree import SymbolTree
28
- from mindspore.rewrite.node.node import Node, TreeNode
29
- from mindspore.rewrite.node.node_manager import NodeManager
30
- from mindspore.rewrite.node.call_function import CallFunction
31
- from mindspore.rewrite.node.cell_container import CellContainer
32
- from mindspore.rewrite.parsers.parser import Parser
33
- from mindspore.rewrite.api.scoped_value import ScopedValue, ValueType
34
- from mindspore.rewrite.symbol_tree_builder import SymbolTreeBuilder
35
- from mindspore.rewrite.ast_transformers.flatten_recursive_stmt import FlattenRecursiveStmt
36
- from mindspore.rewrite.ast_helpers import AstReplacer
37
- from ..common import error_str
26
+ from mindspore.nn import Cell, SequentialCell, CellList
27
+ from mindspore.ops.primitive import Primitive
28
+ import mindspore.ops.functional as F
29
+ from . import Parser, ParserRegister, reg_parser
30
+ from ..symbol_tree import SymbolTree
31
+ from ..node import Node, TreeNode, NodeManager, CallFunction, CellContainer, ControlFlow, LocalPrim
32
+ from ..api.scoped_value import ScopedValue
33
+ from ..ast_helpers import AstFlattener, AstConverter, AstFinder
34
+ from ..common.error_log import error_str
35
+ from ..common.namespace import is_subtree, is_ms_function, is_third_party
36
+ from ..common.namer import FunctionNamer
37
+
38
38
 
39
39
  if sys.version_info >= (3, 9):
40
40
  import ast as astunparse # pylint: disable=reimported, ungrouped-imports
@@ -47,75 +47,27 @@ class AssignParser(Parser):
47
47
 
48
48
  # Types for creating Cell Container node
49
49
  types_for_cell_container = [SequentialCell,]
50
-
51
- def target(self):
52
- """Parse target type."""
53
- return ast.Assign
54
-
55
- @staticmethod
56
- def _create_scopedvalue_from_tuple_ast(node: ast.Tuple) -> ScopedValue:
57
- """
58
- Create ScopedValue from a tuple ast node.
59
-
60
- Args:
61
- node (ast.Tuple): A tuple node.
62
-
63
- Returns:
64
- An instance of ScopedValue.
65
-
66
- Raises:
67
- RuntimeError: Only support ast.Constant as elts of ast.Tuple.
68
- """
69
- tuple_elts = node.elts
70
- tuple_values = []
71
- for tuple_elt in tuple_elts:
72
- if not isinstance(tuple_elt, (ast.Constant, ast.Name, ast.Attribute)):
73
- raise RuntimeError(error_str(f"Only support ast.Constant or ast.Name as elts of ast.Tuple, "
74
- f"but got ast type {type(tuple_elt).__name__}",
75
- child_node=tuple_elt, father_node=node))
76
- if isinstance(tuple_elt, ast.Constant):
77
- tuple_values.append(tuple_elt.value)
78
- elif isinstance(tuple_elt, ast.Name):
79
- tuple_values.append(tuple_elt.id)
80
- elif isinstance(tuple_elt, ast.Attribute):
81
- tuple_values.append("".join([tuple_elt.value.id, '.', tuple_elt.attr]))
82
- return ScopedValue.create_variable_value(tuple(tuple_values))
83
-
84
- @staticmethod
85
- def _create_scopedvalue(node: ast.expr) -> ScopedValue:
86
- """
87
- Create ScopedValue from an ast node.
88
-
89
- Args:
90
- node (ast.expr): An ast node.
91
-
92
- Returns:
93
- An instance of ScopedValue.
94
-
95
- Raises:
96
- RuntimeError: Value of target of ast.Assign should be an ast.Name when target is an ast.Attribute.
97
- RuntimeError: Type of input node is unsupported.
98
- """
99
- if isinstance(node, ast.Name):
100
- return ScopedValue.create_naming_value(node.id)
101
- if isinstance(node, ast.Attribute):
102
- scope = node.value
103
- if not isinstance(scope, ast.Name):
104
- raise RuntimeError(error_str(f"value of target of ast.Assign should be a ast.Name when target is a "
105
- f"ast.Attribute, but got ast type '{type(scope).__name__}'",
106
- child_node=scope, father_node=node))
107
- return ScopedValue.create_naming_value(node.attr, scope.id)
108
- if isinstance(node, ast.Tuple):
109
- return AssignParser._create_scopedvalue_from_tuple_ast(node)
110
- if isinstance(node, (ast.Constant, ast.NameConstant)):
111
- return ScopedValue.create_variable_value(node.value)
112
- if isinstance(node, ast.Num):
113
- return ScopedValue.create_variable_value(node.n)
114
- if isinstance(node, (ast.Str, ast.Bytes)):
115
- return ScopedValue.create_variable_value(node.s)
116
- raise RuntimeError(error_str(f"only support (ast.Name, ast.Attribute, ast.Tuple, ast.Constant, ast.Num"
117
- f"ast.Str, ast.Bytes to argument), but got ast type '{type(node).__name__}'",
118
- father_node=node))
50
+ # If mindspore built-in function to be parsered or skipped
51
+ _skip_ms_function = False
52
+ # Functions in black list will not be parsed
53
+ _function_parse_black_list = [F.arange]
54
+ # Share one implementation for the same instances
55
+ _share_one_implementation = False
56
+ # Implementation caches of sub SymbolTrees, CallFunction nodes and CellContainer nodes
57
+ # Keys are ids of the instance object
58
+ _cached_trees: Dict[int, SymbolTree] = {}
59
+ _cached_functions: Dict[int, Node] = {}
60
+ _cached_cell_containers: Dict[int, Node] = {}
61
+
62
+ def __init__(self):
63
+ super().__init__()
64
+ self._variables_cache = []
65
+ self.stree: SymbolTree = None
66
+ self.ast_assign: ast.Assign = None
67
+ self.node_manager: NodeManager = None
68
+ self.targets: List[ScopedValue] = None
69
+ self.args: List[ScopedValue] = None
70
+ self.kwargs: Dict[str, ScopedValue] = None
119
71
 
120
72
  @staticmethod
121
73
  def _get_func_name(ast_call: ast.Call) -> str:
@@ -127,72 +79,45 @@ class AssignParser(Parser):
127
79
 
128
80
  Returns:
129
81
  Func name.
130
-
131
- Raises:
132
- RuntimeError: Func of input ast node is not ast.Name or ast.Attribute.
133
82
  """
134
83
  func = ast_call.func
135
84
  if isinstance(func, ast.Name):
136
85
  return func.id
137
86
  if isinstance(func, ast.Attribute):
138
87
  return func.attr
139
- if isinstance(func, ast.Call):
140
- return AssignParser._get_func_name(func)
141
- raise RuntimeError(error_str(f"funcValue should be Name or a Attribute or a Call, but got ast type "
142
- f"'{type(func).__name__}'", child_node=func, father_node=ast_call))
88
+ func_full_name = astunparse.unparse(func).strip()
89
+ if func_full_name.count('.') > 0:
90
+ return func_full_name.split('.')[-1]
91
+ return func_full_name
143
92
 
144
93
  @staticmethod
145
- def _get_func_scope(ast_call: ast.Call, node_manager: NodeManager = None) -> str:
94
+ def _get_func_scope(ast_call: ast.Call) -> str:
146
95
  """
147
96
  Get the func scope from ast.Call.
148
97
 
149
98
  Args:
150
99
  ast_call (ast.Call): Input ast.Call node.
151
- node_manager (NodeManager): NodeManager those asts belong to.
152
100
 
153
101
  Returns:
154
102
  Func scope.
155
-
156
- Raises:
157
- RuntimeError: FuncValue is not an ast.Name when func is an ast.Attribute.
158
- RuntimeError: Func of input ast node is not ast.Name or ast.Attribute.
159
103
  """
160
104
  func = ast_call.func
161
105
  if isinstance(func, ast.Name):
162
106
  return ""
163
- if isinstance(func, ast.Attribute):
164
- parser = ParserRegister.instance().get_parser(type(func))
165
- value = parser.process(None, func, node_manager)
166
- return value.rsplit(".", 1)[0]
167
- if isinstance(func, ast.Call):
168
- return AssignParser._get_func_scope(func, node_manager)
169
- raise RuntimeError(error_str(f"funcValue should be Name or a Attribute or a Call, but got ast type "
170
- f"'{type(func).__name__}'", child_node=func, father_node=ast_call))
107
+ func_full_name = astunparse.unparse(func).strip()
108
+ if func_full_name.count('.') > 0:
109
+ return func_full_name.rsplit('.', 1)[0]
110
+ return ""
171
111
 
172
112
  @staticmethod
173
- def _get_symbol_object(symbol_name, origin_net):
174
- """
175
- Get the func scope from ast.Call.
176
-
177
- Args:
178
- symbol_name (str): Func name.
179
- origin_net ([nn.Cell]): Network instance.
180
-
181
- Returns:
182
- Symbol Object.
183
- """
184
- var_dict = origin_net.__dict__
185
- for key, value in var_dict["_cells"].items():
186
- if key == symbol_name:
187
- return value
188
-
189
- for key, value in var_dict["_primitives"].items():
190
- if key == symbol_name:
191
- return value
192
- return None
113
+ def _create_targets(ast_target: ast.AST) -> List[ScopedValue]:
114
+ """Get targets from ast node."""
115
+ ast_target_elems = AstConverter.get_ast_target_elems(ast_target)
116
+ targets = [AstConverter.create_scopedvalue(ast_node) for ast_node in ast_target_elems]
117
+ return targets
193
118
 
194
119
  @staticmethod
195
- def _create_kwargs(keywords: [ast.keyword]) -> {str, ScopedValue}:
120
+ def _create_kwargs(keywords: [ast.keyword]) -> Dict[str, ScopedValue]:
196
121
  """
197
122
  Transfer ast.Call keywords to a dict of ScopedValue when creating a symbol tree node.
198
123
 
@@ -204,29 +129,133 @@ class AssignParser(Parser):
204
129
  """
205
130
  results = {}
206
131
  for keyword in keywords:
207
- results[keyword.arg] = AssignParser._create_scopedvalue(keyword.value)
132
+ results[keyword.arg] = AstConverter.create_scopedvalue(keyword.value)
208
133
  return results
209
134
 
135
+
210
136
  @staticmethod
211
- def _get_call_instance(func_scope, func_name, stree: SymbolTree):
137
+ def _get_inst_and_name(ast_node: ast.Attribute, stree: SymbolTree):
138
+ """
139
+ Try to get instance object of ast_node from ast.Attribute.
212
140
  """
213
- Get object instance from ast.Call with type of Cell or Primitive.
141
+ if not isinstance(ast_node, ast.Attribute):
142
+ return None, ""
143
+ scope_name = astunparse.unparse(ast_node).strip()
144
+ scope, name = scope_name.split('.', 1)
145
+ if scope != 'self':
146
+ return None, scope_name
147
+ if not hasattr(stree.get_origin_network(), name):
148
+ return None, scope_name
149
+ return getattr(stree.get_origin_network(), name), scope_name
150
+
151
+ @staticmethod
152
+ def _list_of_cells(cell_list: list):
153
+ """Check if elements in the list are all cells."""
154
+ for item in cell_list:
155
+ if not isinstance(item, Cell):
156
+ return False
157
+ return True
158
+
159
+ @staticmethod
160
+ def _get_path_of_node_manager(node_manager: NodeManager):
161
+ """Get file path of type(instance) in NodeManager"""
162
+ node_manager = node_manager.get_top_manager()
163
+ if isinstance(node_manager, SymbolTree):
164
+ return inspect.getfile(type(node_manager.get_origin_network()))
165
+ return inspect.getfile(node_manager.get_instance())
166
+
167
+ @staticmethod
168
+ def _get_module_of_node_manager(node_manager: NodeManager):
169
+ """Get module where the node manager is located"""
170
+ # get module where function object is used
171
+ func_path = AssignParser._get_path_of_node_manager(node_manager)
172
+ func_path = os.path.normcase(os.path.normpath(func_path))
173
+ modules = list(sys.modules.values())
174
+ for m in modules:
175
+ if hasattr(m, "__file__") and m.__file__ is not None and func_path == os.path.normcase(m.__file__):
176
+ return m, func_path
177
+ return None, func_path
178
+
179
+ @staticmethod
180
+ def _get_object_from_module(func_full_name: str, module: types.ModuleType):
181
+ """Get object from module according to full name of function"""
182
+ names = func_full_name.split('.')
183
+ obj = module
184
+ for attr in names:
185
+ if not hasattr(obj, attr):
186
+ logger.info(f"For '{func_full_name}', failed to get attr '{attr}' from '{obj}'")
187
+ return None
188
+ obj = getattr(obj, attr)
189
+ return obj
190
+
191
+ @staticmethod
192
+ def _get_local_var_provider(node_manager: NodeManager, var: str) -> Node:
193
+ """Get the node providing specific variable"""
194
+ node = node_manager.get_tail()
195
+ while node is not None:
196
+ if var in [str(target) for target in node.get_targets()]:
197
+ return node
198
+ node = node.get_prev()
199
+ # When node_manager is control flow, nodes in upper node_manager need to be traversed.
200
+ if isinstance(node_manager, ControlFlow):
201
+ return AssignParser._get_local_var_provider(node_manager.get_node_manager(), var)
202
+ return None
203
+
204
+ def target(self):
205
+ """Parse target type."""
206
+ return ast.Assign
207
+
208
+ def store_env(self):
209
+ """Store current environments"""
210
+ self._variables_cache.append(
211
+ [self.stree, self.ast_assign, self.node_manager, self.targets, self.args, self.kwargs])
212
+ self.stree = None
213
+ self.ast_assign = None
214
+ self.node_manager = None
215
+ self.targets = None
216
+ self.args = None
217
+ self.kwargs = None
218
+
219
+ def restore_env(self):
220
+ """Restore last environments"""
221
+ self.stree, self.ast_assign, self.node_manager, self.targets, self.args, self.kwargs = \
222
+ self._variables_cache.pop()
223
+
224
+ def _get_cell_instance(self, func_scope, func_name):
225
+ """
226
+ Get object instance from ast.Call with type of Cell.
214
227
 
215
228
  Args:
216
229
  func_scope (str): Func scope.
217
230
  func_name (str): Func name.
218
- stree (SymbolTree): Belong SymbolTree.
219
231
 
220
232
  Returns:
221
233
  An instance represents operator instance.
222
234
  """
223
235
  if func_scope != "self":
224
236
  return None
225
- var_dict = stree.get_origin_network().__dict__
237
+ var_dict = self.stree.get_origin_network().__dict__
226
238
  # Instance is of type Cell
227
239
  for key, value in var_dict["_cells"].items():
228
240
  if key == func_name:
229
241
  return value
242
+ # Instance is of other type.
243
+ return None
244
+
245
+ def _get_primitive_instance(self, func_scope, func_name):
246
+ """
247
+ Get object instance from ast.Call with type of Primitive.
248
+
249
+ Args:
250
+ func_scope (str): Func scope.
251
+ func_name (str): Func name.
252
+
253
+ Returns:
254
+ An instance represents operator instance.
255
+ """
256
+ if func_scope != "self":
257
+ return None
258
+ var_dict = self.stree.get_origin_network().__dict__
230
259
  # Instance is of type Primitive
231
260
  for key, value in var_dict["_primitives"].items():
232
261
  if key == func_name:
@@ -234,46 +263,111 @@ class AssignParser(Parser):
234
263
  # Instance is of other type.
235
264
  return None
236
265
 
237
- @staticmethod
238
- def _get_targets(all_targets: ScopedValue) -> [Union[ScopedValue, str]]:
239
- """Get targets from tuple or single value."""
240
- targets: [Union[ScopedValue, str]] = []
241
- if all_targets.type == ValueType.TupleValue:
242
- for single_target in all_targets.value:
243
- if not isinstance(single_target, ScopedValue) and not isinstance(single_target.value, str):
244
- raise RuntimeError(f"For MindSpore Rewrite, only support str target in tuple, but got type "
245
- f"{type(single_target).__name__}")
246
- if single_target.type == ValueType.ConstantValue and isinstance(single_target.value, str):
247
- single_target.type = ValueType.NamingValue
248
- targets.append(single_target)
249
- else:
250
- targets.append(all_targets)
251
- return targets
266
+ def _get_method_object(self, func_scope, func_name):
267
+ """Get method object from network instance."""
268
+ stree = self.stree
269
+ if func_scope in ('self', stree.get_opt_cls_name()) and hasattr(stree.get_origin_network(), func_name):
270
+ return getattr(stree.get_origin_network(), func_name)
271
+ return None
252
272
 
253
- @staticmethod
254
- def _update_field_in_init(func_scope, func_name, stree: SymbolTree, sub_tree: SymbolTree) -> bool:
273
+ def _get_local_variable(self, func_scope, func_name) -> (bool, object):
274
+ """
275
+ Get local variable
276
+
277
+ Args:
278
+ func_scope (str): Func scope.
279
+ func_name (str): Func name.
280
+
281
+ Returns:
282
+ bool: Indicate whether local variable is found.
283
+ object (Union[LocalPrim, type]): Instance of LocalPrim when calling the class, or class type
284
+ object when initializing the class.
285
+ """
286
+ func_full_name = f"{func_scope}.{func_name}" if func_scope else func_name
287
+ # try to find func_name in class variables initializing the primitive during forward method
288
+ provider_node = None
289
+ if func_scope == "self":
290
+ for node in self.stree.local_prim_inits():
291
+ if func_full_name in [str(target) for target in node.get_targets()]:
292
+ provider_node = node
293
+ # try to find func_name in local variables
294
+ if provider_node is None:
295
+ provider_node = AssignParser._get_local_var_provider(self.node_manager, func_full_name)
296
+ if provider_node:
297
+ # when the node providering the local variable initialized a primitive during forward method,
298
+ # we use LocalPrim to indicate the instance of this primitive. e.g. :
299
+ # abs_inst = P.Abs() -> 'abs_inst' is an instance of primitive initialized locally
300
+ # y = abs_inst(x) -> here we are parsing now
301
+ cls_init = provider_node.get_init_cls()
302
+ if cls_init and inspect.isclass(cls_init) and issubclass(cls_init, Primitive):
303
+ return True, LocalPrim(cls_init)
304
+ # when the node providering the local variable represent a primitive type object, we return
305
+ # type-object to indicate that we are initializing this primitive. e.g. :
306
+ # abs_ops = _get_cache_prim(P.Abs) -> 'abs_ops' is an primitive type object
307
+ # y = abs_ops(x) -> here we are parsing now
308
+ cls_type = provider_node.get_type_cls()
309
+ if cls_type and inspect.isclass(cls_type) and issubclass(cls_type, Primitive):
310
+ return True, cls_type
311
+ # local variable whose type is not primitive instance
312
+ logger.info(f"Ignore local variable: {func_full_name}")
313
+ return True, None
314
+ # other local variable
315
+ if AssignParser._get_local_var_provider(self.node_manager, func_full_name.split('.')[0]):
316
+ logger.info(f"Ignore local variable: {func_full_name}")
317
+ return True, None
318
+ return False, None
319
+
320
+ def _get_function_object(self, func_scope, func_name, ast_call) -> (object, bool):
321
+ """
322
+ Get function object from module.
323
+
324
+ If the code represent a class type object, e.g. abs_ops = _get_cache_prim(P.Abs),
325
+ return primitive type object with class type flag True.
326
+
327
+ if the code represent an initializtion of a class, e.g. abs_inst = P.Abs(),
328
+ return primitive type object with class type flag False.
329
+
330
+ if the code represent the call of function or class instance, e.g. y = abs_inst(x)/func(x),
331
+ return primitive instance or function object with class type flag False.
332
+
333
+ Args:
334
+ func_scope (str): Func scope.
335
+ func_name (str): Func name.
336
+ ast_call (ast.Call): ast.Call of ast.Assign.
337
+
338
+ Returns:
339
+ object: Class type object, class instance or function object
340
+ bool: Flag indicate is node represent a class type object.
341
+ """
342
+ func_full_name = f"{func_scope}.{func_name}" if func_scope else func_name
343
+ # get module where function object is used
344
+ module, func_path = AssignParser._get_module_of_node_manager(self.node_manager)
345
+ if module is None:
346
+ logger.debug(f"When getting object of '{func_full_name}', failed to find module in '{func_path}'")
347
+ return None, False
348
+ # if name of function is _get_cache_prim, return primitive type object
349
+ is_cls_type_obj = False
350
+ if func_full_name == '_get_cache_prim':
351
+ func_full_name = astunparse.unparse(ast_call.args[0]).strip()
352
+ is_cls_type_obj = True
353
+ # find object in module
354
+ obj = AssignParser._get_object_from_module(func_full_name, module)
355
+ return obj, is_cls_type_obj
356
+
357
+ def _update_field_in_init(self, func_name: str, sub_tree: SymbolTree) -> bool:
255
358
  """
256
359
  When node is an invoking to sub-network, update value of ast.Assign of corresponding field in `__init__` method.
257
360
  Add the code like: `self.field = SubNetwork(self.field)`
258
361
 
259
362
  Args:
260
- func_scope (str): A string represents scope of function symbol.
261
- func_name (str): A string represents function symbol.
262
- stree (SymbolTree): The SymbolTree corresponding to main-network.
363
+ func_name (str): A string represents scope and name of function symbol.
263
364
  sub_tree (SymbolTree): The SymbolTree corresponding to sub-network.
264
-
265
- Raises:
266
- NotImplementedError: If `func_scope` is not "self", it means corresponding op is inited in forward method.
267
- NotImplementedError: If targets of ast.Assign of corresponding field in `__init__` method.
268
365
  """
269
- if func_scope != "self":
270
- logger.warning("Not support parse operator which is instantiated at runtime now: %s; name: %s", func_scope,
271
- func_name)
272
- init_func_ast = stree.get_init_func_ast()
366
+ init_func_ast = self.stree.get_init_func_ast()
273
367
  sub_net_obj = sub_tree.get_origin_network()
274
368
  sub_net_opt_name = sub_tree.get_opt_cls_name()
275
369
  # Add .to_float(mindspore.float16) if origin subnet has this attribute
276
- new_code = f"{func_scope}.{func_name} = {sub_net_opt_name}({func_scope}.{func_name})"
370
+ new_code = f"{func_name} = {sub_net_opt_name}({func_name})"
277
371
  if hasattr(sub_net_obj, "fp16") and sub_net_obj.fp16:
278
372
  new_code = f"{new_code}.to_float(mindspore.float16)"
279
373
  elif hasattr(sub_net_obj, "bf16") and sub_net_obj.bf16:
@@ -281,38 +375,7 @@ class AssignParser(Parser):
281
375
  new_ast = ast.parse(new_code).body[0]
282
376
  init_func_ast.body.append(new_ast)
283
377
 
284
- @staticmethod
285
- def _create_inputs_for_cell_container(ast_assign) -> ['Node']:
286
- """Create inputs for cell container first node."""
287
- call_ast_node = ast_assign.value
288
- if not isinstance(call_ast_node, ast.Call):
289
- raise RuntimeError(error_str(f"when creating input node for cellcontainer, value of input father ast node"
290
- "is not ast.Call!'", child_node=call_ast_node, father_node=ast_assign))
291
- first_node_inputs: ['Node'] = []
292
- exist_param_name = []
293
- for arg in call_ast_node.args:
294
- if isinstance(arg, ast.Name):
295
- param_name = arg.id
296
- elif isinstance(arg, ast.arg):
297
- param_name = arg.arg
298
- else:
299
- raise RuntimeError(error_str(f"only support ast.arg, ast.arg in arguments arg, but got "
300
- f"'{type(arg).__name__}'", child_node=arg, father_node=call_ast_node))
301
- if param_name in exist_param_name:
302
- raise RuntimeError(error_str(f"Cellcontianer has duplicate input names", child_node=arg,
303
- father_node=call_ast_node))
304
- exist_param_name.append(param_name)
305
- node = Node.create_input_node(arg, param_name, name=f"input_{param_name}")
306
- first_node_inputs.append(node)
307
-
308
- if call_ast_node.keywords:
309
- raise RuntimeError(error_str(f"Not support keyword input for cellcontainer now.",
310
- child_node=call_ast_node, father_node=ast_assign))
311
-
312
- return first_node_inputs
313
-
314
- @staticmethod
315
- def _update_cell_container_in_init(stree, container_name, container_idx, subnet_opt_name):
378
+ def _update_cell_container_in_init(self, container_name, container_idx, subnet_opt_name):
316
379
  """
317
380
  When nn.SequentialCell include sub-symboltree, the new class definition will be used to create object.
318
381
  So the assign code will be got from origin code first, and then be modified to new class name.
@@ -328,173 +391,300 @@ class AssignParser(Parser):
328
391
  """
329
392
  new_code = f"{container_name}[{container_idx}] = {subnet_opt_name}({container_name}[{container_idx}])"
330
393
  new_ast = ast.parse(new_code).body[0]
331
- stree.get_init_func_ast().body.append(new_ast)
332
-
333
- @staticmethod
334
- def cell_container_process(ast_assign, stree, targets, func_scope_name, call_args, call_kwargs,
335
- op_name, container_obj):
394
+ self.stree.get_init_func_ast().body.append(new_ast)
395
+
396
+ def _add_import(self, import_name: str):
397
+ """ add import to current node manager."""
398
+ module, _ = AssignParser._get_module_of_node_manager(self.node_manager)
399
+ if module is None:
400
+ logger.info(f"Cannot get module where '{import_name}' is located, ignore import info")
401
+ return
402
+ node_manager = self.node_manager.get_top_manager()
403
+ belonging_ast = None if isinstance(node_manager, SymbolTree) else node_manager.get_manager_ast()
404
+ self.stree.add_import(module, import_name, belonging_ast)
405
+
406
+ def cell_container_process(self, func_name: str, node_name: str, container_obj: object):
336
407
  """ parse cell container object."""
337
- cell_container = CellContainer(ast_assign, targets, func_scope_name, call_args, call_kwargs,
338
- op_name, stree, container_obj)
339
- first_node_inputs = AssignParser._create_inputs_for_cell_container(ast_assign)
408
+ # create unparsable node if container is already parsed when sharing one implementation
409
+ if AssignParser._share_one_implementation and id(container_obj) in AssignParser._cached_cell_containers:
410
+ cell_container = Node.create_call_buildin_op(container_obj, self.ast_assign, self.targets,
411
+ func_name, self.args, self.kwargs, node_name)
412
+ return cell_container
413
+ cell_container = CellContainer(self.ast_assign, self.targets, func_name, self.args, self.kwargs,
414
+ node_name, self.stree, container_obj)
340
415
  for i, cell in enumerate(container_obj):
341
416
  cell_name = type(cell).__name__
342
- is_sub_tree = is_subtree(cell)
343
- if is_sub_tree:
344
- stb = SymbolTreeBuilder(cell)
345
- new_stree = stb.build()
346
- sub_node = TreeNode.create_tree_node(new_stree, None, targets, cell_name, call_args,
347
- call_kwargs, cell_name, cell)
348
- AssignParser._update_cell_container_in_init(stree, func_scope_name, i, new_stree.get_opt_cls_name())
417
+ # The type of cell is container of cells (e.g. SequentialCell)
418
+ if isinstance(cell, tuple(AssignParser.types_for_cell_container)):
419
+ sub_node = self.cell_container_process(f"{func_name}[{i}]", cell_name, cell)
420
+ elif is_subtree(cell):
421
+ # create unparsable node if tree node is already parsed when sharing one implementation
422
+ if AssignParser._share_one_implementation and id(cell) in AssignParser._cached_trees:
423
+ first_stree = AssignParser._cached_trees.get(id(cell))
424
+ self._update_cell_container_in_init(func_name, i, first_stree.get_opt_cls_name())
425
+ sub_node = Node.create_call_buildin_op(cell, None, self.targets, cell_name, self.args,
426
+ self.kwargs, cell_name)
427
+ else:
428
+ from ..symbol_tree import SymbolTreeBuilder
429
+ stb = SymbolTreeBuilder(cell)
430
+ new_stree = stb.build()
431
+ sub_node = TreeNode.create_tree_node(new_stree, None, self.targets, cell_name, self.args,
432
+ self.kwargs, cell_name, cell)
433
+ self._update_cell_container_in_init(func_name, i, new_stree.get_opt_cls_name())
434
+ # save symbol tree if it is firstly parsed when sharing one implementation
435
+ if AssignParser._share_one_implementation:
436
+ AssignParser._cached_trees[id(cell)] = new_stree
349
437
  else:
350
- sub_node = Node.create_call_buildin_op(cell, None, targets, cell_name, call_args,
351
- call_kwargs, cell_name)
438
+ sub_node = Node.create_call_buildin_op(cell, None, self.targets, cell_name, self.args,
439
+ self.kwargs, cell_name)
352
440
  # add sub node to cell_container
353
441
  cell_container.append(sub_node, False)
354
- # set node inputs, those input nodes are NOT inserted in container, only
355
- # topological relationship is updated.
356
- if i == 0:
357
- for idx, arg_provider in enumerate(first_node_inputs):
358
- sub_node.set_arg_providers(idx, (arg_provider, 0))
359
- else:
360
- sub_node.set_arg_providers(0, (cell_container.node_list[i-1], 0))
442
+ # save the node if container is firstly parsed when sharing one implementation
443
+ if AssignParser._share_one_implementation:
444
+ AssignParser._cached_cell_containers[id(container_obj)] = cell_container
361
445
  return cell_container
362
446
 
363
- @staticmethod
364
- def process_external_function(stree, func_name, file_path):
365
- """
366
- Process external function.
367
- Ast of external function defined in specifical file_path will be saved to generate codes.
368
- """
369
- for k, m in sys.modules.items():
370
- if k in ("_ast", "ast"):
371
- continue
372
- if hasattr(m, func_name):
373
- func = getattr(m, func_name)
374
- if not inspect.isfunction(func):
375
- continue
376
- func_source_code_file = inspect.getfile(func)
377
- if func_source_code_file != file_path:
378
- continue
379
- source_code = inspect.getsource(func)
380
- ast_root: ast.Module = ast.parse(source_code)
381
- stree.get_external_ast().append(ast_root.body[0])
382
- return func, ast_root.body[0]
383
- logger.info(f"Cannot get ast of function {func_name} from {file_path}.")
384
- return None, None
385
-
386
- def _process_internal_function(self, stree: SymbolTree, func_name):
387
- """Process internal function."""
388
- func_inst = getattr(stree.get_origin_network(), func_name)
447
+ def process_cell(self, func_scope_name: ScopedValue, node_name: str, cell_inst: Cell):
448
+ """Create CallCell node with instance of cell."""
449
+ # The type of cell is container of cells (e.g. SequentialCell)
450
+ if isinstance(cell_inst, tuple(AssignParser.types_for_cell_container)):
451
+ node = self.cell_container_process(func_scope_name, node_name, cell_inst)
452
+ # The type of cell is user custom network, then we create sub-symboltree
453
+ elif is_subtree(cell_inst):
454
+ # create unparsable node if tree node is already parsed when sharing one implementation
455
+ if AssignParser._share_one_implementation and id(cell_inst) in AssignParser._cached_trees:
456
+ first_stree = AssignParser._cached_trees.get(id(cell_inst))
457
+ self._update_field_in_init(str(func_scope_name), first_stree)
458
+ node = Node.create_call_buildin_op(cell_inst, self.ast_assign, self.targets, func_scope_name,
459
+ self.args, self.kwargs, node_name)
460
+ else:
461
+ from ..symbol_tree import SymbolTreeBuilder
462
+ stb = SymbolTreeBuilder(cell_inst)
463
+ new_stree = stb.build()
464
+ self._update_field_in_init(str(func_scope_name), new_stree)
465
+ node = TreeNode.create_tree_node(new_stree, self.ast_assign, self.targets, func_scope_name,
466
+ self.args, self.kwargs, node_name, new_stree.get_origin_network())
467
+ # save symbol tree if it is firstly parsed when sharing one implementation
468
+ if AssignParser._share_one_implementation:
469
+ AssignParser._cached_trees[id(cell_inst)] = new_stree
470
+ else:
471
+ # The type of cell is built-in cells
472
+ node = Node.create_call_buildin_op(cell_inst, self.ast_assign, self.targets, func_scope_name, self.args,
473
+ self.kwargs, node_name)
474
+ self.stree.append_origin_field(node, self.node_manager)
475
+
476
+ def process_primitive(self, func_scope_name: ScopedValue, node_name: str, primitive_inst: Primitive):
477
+ """Create CallPrimitive node with instance of primitive."""
478
+ node = Node.create_call_buildin_op(primitive_inst, self.ast_assign, self.targets, func_scope_name,
479
+ self.args, self.kwargs, node_name)
480
+ self.stree.append_origin_field(node, self.node_manager)
481
+
482
+ def process_class_method(self, func_scope_name: ScopedValue, node_name: str, method_object: object):
483
+ """Create CallFunction node for class method function."""
484
+ func_name = func_scope_name.value
485
+ # get ast.FunctionDef
389
486
  ast_functiondef = None
390
- for body in stree.get_class_ast().body:
487
+ for body in self.stree.get_class_ast().body:
391
488
  if isinstance(body, ast.FunctionDef) and func_name == body.name:
392
489
  ast_functiondef = body
393
- return func_inst, ast_functiondef
394
-
395
- def _create_callfunction_node(self, targets: [ScopedValue], func_scope_name: ScopedValue, args: [ScopedValue],
396
- kwargs: {str: ScopedValue}, node_name: str, ast_assign: ast.Assign,
397
- ast_functiondef: ast.FunctionDef, stree: SymbolTree, instance):
398
- """Create CallFunction node for class internal function."""
399
- node = CallFunction(targets, func_scope_name, args, kwargs, node_name, ast_assign, ast_functiondef,
400
- stree, instance)
490
+ if ast_functiondef is None:
491
+ # method of child class may be called and will be ignored now.
492
+ logger.info(error_str(f"Find ast of function '{func_name}' in network '{self.stree.get_ori_cls_name()}' "
493
+ f"failed", child_node=self.ast_assign))
494
+ self.insert_callfunction_node(func_scope_name, node_name, None, None, False)
495
+ else:
496
+ # create CallFunction node
497
+ self.insert_callfunction_node(func_scope_name, node_name, ast_functiondef, method_object, True)
498
+
499
+ def process_function(self, func_scope_name: ScopedValue, node_name: str, function_object: object,
500
+ is_cls_type_obj: bool):
501
+ """Create node for function."""
502
+ # Ignore functions in _function_parse_black_list
503
+ if function_object in AssignParser._function_parse_black_list:
504
+ logger.debug(f"'{func_scope_name}' is in the _function_parse_black_list and will not be parsed")
505
+ if not func_scope_name.scope:
506
+ self._add_import(func_scope_name.value)
507
+ self.insert_callfunction_node(func_scope_name, node_name, None, function_object, False)
508
+ return
509
+ # break loop function
510
+ node_manager = self.node_manager
511
+ while node_manager and isinstance(node_manager, Node):
512
+ if isinstance(node_manager, CallFunction) and node_manager.get_instance() == function_object:
513
+ logger.info(f"loop function detected in '{func_scope_name}', stop parsing function.")
514
+ self.insert_callfunction_node(func_scope_name, node_name, None, function_object, False)
515
+ return
516
+ node_manager = node_manager.get_node_manager()
517
+ # process primitive instances:
518
+ # (global/local) _ops_func = P.FUNC()
519
+ # (here) y = _ops_func(x) <- (process: _ops_func)
520
+ if isinstance(function_object, Primitive):
521
+ # when primitive instance is not a local variable, it will be a global object which need to be imported
522
+ if not isinstance(function_object, LocalPrim):
523
+ import_name = str(func_scope_name).split('.')[0]
524
+ self._add_import(import_name)
525
+ # create CallPrimitive node
526
+ self.process_primitive(func_scope_name, func_scope_name.value, function_object)
527
+ return
528
+ # process primitive object:
529
+ # (here) _ops_func = P.FUNC() <- (process: P.FUNC)
530
+ # (later) y = _ops_func(x)
531
+ if inspect.isclass(function_object):
532
+ node = self.insert_callfunction_node(func_scope_name, node_name, None, None, False)
533
+ if is_cls_type_obj:
534
+ # represent a class type object, e.g. abs_ops = _get_cache_prim(P.Abs)
535
+ node.set_type_cls(function_object)
536
+ # add import
537
+ if str(func_scope_name) == '_get_cache_prim':
538
+ import_name = astunparse.unparse(self.ast_assign.value.args[0]).strip()
539
+ if '.' not in import_name:
540
+ self._add_import(import_name)
541
+ else:
542
+ # represent the initialize of a class type, e.g. abs_inst = P.Abs()
543
+ node.set_init_cls(function_object)
544
+ # record local primitive objects
545
+ if func_scope_name.scope == 'self' and issubclass(function_object, Primitive):
546
+ self.stree.local_prim_inits.append(node)
547
+ return
548
+ # process third party functions
549
+ is_ms_func = is_ms_function(function_object)
550
+ if not is_ms_func and is_third_party(function_object):
551
+ logger.info(f"Ignore third party function '{func_scope_name}'.")
552
+ self.insert_callfunction_node(func_scope_name, node_name, None, function_object, False)
553
+ return
554
+ # process mindspore functions
555
+ if is_ms_func and AssignParser._skip_ms_function:
556
+ logger.info(f"Ignore mindspore function '{func_scope_name}'.")
557
+ self.insert_callfunction_node(func_scope_name, node_name, None, function_object, False)
558
+ return
559
+ # get ast.FunctionDef
560
+ source_code = inspect.getsource(function_object)
561
+ ast_functiondef = ast.parse(dedent(source_code)).body[0]
562
+ if not isinstance(ast_functiondef, ast.FunctionDef):
563
+ logger.info(error_str(f"Get ast.FunctionDef of function {str(func_scope_name)} failed, the type of "
564
+ f"ast node is {type(ast_functiondef)}", child_node=self.ast_assign))
565
+ self.insert_callfunction_node(func_scope_name, node_name, None, function_object, False)
566
+ return
567
+ if [n for n in ast_functiondef.body if isinstance(n, ast.FunctionDef)]:
568
+ logger.info(error_str(f"closure syntax is not supported now, {str(func_scope_name)} will not be parsed.",
569
+ child_node=ast_functiondef))
570
+ if not func_scope_name.scope:
571
+ self._add_import(func_scope_name.value)
572
+ self.insert_callfunction_node(func_scope_name, node_name, None, function_object, False)
573
+ return
574
+ # update func_name, and remove scope
575
+ new_name = ast_functiondef.name
576
+ # when func_scope_name(e.g. 'C.uniform') is not the name in ast.FunctionDef(e.g. 'uniform'), this name may be
577
+ # already used as variable(e.g. uniform = C.uniform(x)).
578
+ # To avoid new function's name being duplicated with existed variable, an suffix '_opt' will be added.
579
+ if new_name != str(func_scope_name):
580
+ new_name = f"{new_name}_opt"
581
+ new_name = FunctionNamer().instance().get_name(new_name)
582
+ # create unparsable node if function is already parsed when sharing one implementation
583
+ if AssignParser._share_one_implementation and id(function_object) in AssignParser._cached_functions:
584
+ first_node = AssignParser._cached_functions.get(id(function_object))
585
+ ast_call: ast.Call = self.ast_assign.value
586
+ ast_call.func = ast.Name(id=str(first_node.get_func_name()), ctx=ast.Load())
587
+ self.insert_callfunction_node(func_scope_name, new_name, None, function_object, False)
588
+ return
589
+ ast_functiondef.name = new_name
590
+ ast_call: ast.Call = self.ast_assign.value
591
+ ast_call.func = ast.Name(id=new_name, ctx=ast.Load())
592
+ # save ast.FunctionDef into stree._external_ast
593
+ self.stree.get_external_ast()[ast_functiondef] = []
594
+ # import module which function defined in
595
+ func_file_path = inspect.getabsfile(function_object)
596
+ self.stree.save_imports_from_file(func_file_path, ast_functiondef)
597
+ # create CallFunction node
598
+ func_scope_name = ScopedValue.create_naming_value(new_name, "")
599
+ node = self.insert_callfunction_node(func_scope_name, new_name, ast_functiondef, function_object, False)
600
+ # save function node if it is firstly parsed when sharing one implementation
601
+ if AssignParser._share_one_implementation:
602
+ AssignParser._cached_functions[id(function_object)] = node
603
+
604
+ def insert_callfunction_node(self, func_name: ScopedValue, node_name: str, ast_functiondef: ast.FunctionDef,
605
+ func_obj: object, is_method: bool) -> Node:
606
+ """Create CallFunction node for function."""
607
+ if ast_functiondef is None:
608
+ node = Node.inner_create_call_function(node_name, self.ast_assign, func_name, func_obj,
609
+ self.targets, self.args, self.kwargs)
610
+ self.stree.append_origin_field(node, self.node_manager)
611
+ return node
612
+ # create CallFunction node
613
+ node = CallFunction(self.targets, func_name, self.args, self.kwargs, node_name, self.ast_assign,
614
+ ast_functiondef, self.stree, func_obj, is_method)
615
+ self.stree.append_origin_field(node, self.node_manager)
401
616
  # expand ast codes
402
- ast_functiondef = FlattenRecursiveStmt().transform(ast_functiondef, [func_scope_name.value], stree)
617
+ ast_functiondef = AstFlattener().transform(ast_functiondef, [func_name.value], self.stree)
403
618
  # parse ast codes into CallFunction Node
404
619
  parser = ParserRegister.instance().get_parser(ast.FunctionDef)
405
- parser.process(stree, ast_functiondef, node_manager=node)
620
+ parser.process(self.stree, ast_functiondef, node_manager=node)
406
621
  return node
407
622
 
408
- def _convert_ast_call_to_node(self, ast_call: ast.Call, ast_assign: ast.Assign, stree: SymbolTree,
409
- node_manager: NodeManager) -> Node:
623
+ def process_ast_call(self, ast_call: ast.Call):
410
624
  """
411
625
  Convert ast.Call to a symbol tree node.
412
626
 
413
627
  Args:
414
628
  ast_call (ast.Call): An ast.Call of assign node in construct.
415
- ast_assign (ast.Assign): Assign node in construct.
416
- stree (SymbolTree): Symbol Tree under parsing.
417
- node_manager (NodeManager): NodeManager those asts belong to.
418
-
419
- Returns:
420
- An instance of Node in Symbol Tree.
421
-
422
- Raises:
423
- RuntimeError: If operator instance invoked by assign is undefined.
424
629
  """
425
- targets = AssignParser._get_targets(AssignParser._create_scopedvalue(ast_assign.targets[0]))
630
+ self.targets = AssignParser._create_targets(self.ast_assign.targets[0])
631
+ self.args = [AstConverter.create_scopedvalue(arg) for arg in ast_call.args]
632
+ self.kwargs = AssignParser._create_kwargs(ast_call.keywords)
426
633
  func_name = AssignParser._get_func_name(ast_call)
427
- if func_name is None or func_name == "":
428
- raise RuntimeError("function name not exist")
429
- func_scope = AssignParser._get_func_scope(ast_call, node_manager)
634
+ func_scope = AssignParser._get_func_scope(ast_call)
430
635
  func_scope_name = ScopedValue.create_naming_value(func_name, func_scope)
431
- call_args = [AssignParser._create_scopedvalue(arg) for arg in ast_call.args]
432
- call_kwargs = AssignParser._create_kwargs(ast_call.keywords)
433
-
434
- func_inst = AssignParser._get_call_instance(func_scope, func_name, stree)
435
- if func_inst is None:
436
- # Function is not Cell and Primitive
437
- if func_scope in ('self', stree.get_opt_cls_name()) and hasattr(stree.get_origin_network(), func_name):
438
- # Function defined in current class
439
- func_inst, ast_functiondef = self._process_internal_function(stree, func_name)
440
- if ast_functiondef is None:
441
- raise RuntimeError(f"Find ast of function {func_scope}.{func_name} in symbol tree class failed.")
442
- node = self._create_callfunction_node(targets, func_scope_name, call_args, call_kwargs, func_name,
443
- ast_assign, ast_functiondef, stree, func_inst)
444
- elif is_functional(func_name):
445
- # Function defined in mindspore.ops.functional
446
- parser = ParserRegister.instance().get_parser(type(ast_call.func)) # ast.Name or ast.Attribute
447
- func_name = parser.process(stree, ast_call.func, node_manager).split(".")[-1]
448
- func_inst = get_functional(func_name)
449
- node = Node.inner_create_call_function(func_name, ast_assign, func_name, func_inst, targets,
450
- call_args, call_kwargs)
636
+ func_full_name = str(func_scope_name)
637
+ # y = func(xxx)(xxx) / y = func1(xxx).func2(xxx) is not supported, and should be flattened before parsing.
638
+ if AstFinder(ast_call.func).find_all(ast.Call):
639
+ logger.info(error_str("ast.Call in func name of ast.Call is not supported.", ast_call, self.ast_assign))
640
+ self.insert_callfunction_node(func_scope_name, func_name, None, None, False)
641
+ return
642
+ # Ignore built-in functions
643
+ if func_full_name in dir(builtins):
644
+ logger.info(f"Ignore built-in function: {func_scope_name}")
645
+ self.insert_callfunction_node(func_scope_name, func_name, None, None, False)
646
+ return
647
+ # Ignore function name is target of for loop
648
+ if isinstance(self.node_manager, ControlFlow) and func_full_name in self.node_manager.loop_vars:
649
+ logger.info(f"Ignore function of loop variable: {func_scope_name}")
650
+ self.insert_callfunction_node(func_scope_name, func_name, None, None, False)
651
+ return
652
+ # Instance with type of Cell
653
+ cell_inst = self._get_cell_instance(func_scope, func_name)
654
+ if cell_inst is not None:
655
+ self.process_cell(func_scope_name, func_name, cell_inst)
656
+ return
657
+ # Instance with type of Primitive
658
+ primitive_inst = self._get_primitive_instance(func_scope, func_name)
659
+ if primitive_inst is not None:
660
+ self.process_primitive(func_scope_name, func_name, primitive_inst)
661
+ return
662
+ # Class method object
663
+ method_object = self._get_method_object(func_scope, func_name)
664
+ if method_object is not None:
665
+ if inspect.ismethod(method_object):
666
+ self.process_class_method(func_scope_name, func_name, method_object)
451
667
  else:
452
- origin_net_file = inspect.getfile(type(stree.get_origin_network()))
453
- if not os.path.exists(origin_net_file):
454
- raise RuntimeError(f"For MindSpore Rewrite, in assign parser, origin_net_file "
455
- f"{origin_net_file} not exist")
456
- func_inst, ast_functiondef = AssignParser.process_external_function(stree, func_name, origin_net_file)
457
- node = Node.inner_create_call_function(func_name, ast_assign, func_name, func_inst, targets,
458
- call_args, call_kwargs)
459
- return node
460
- if isinstance(func_inst, tuple(AssignParser.types_for_cell_container)):
461
- node = AssignParser.cell_container_process(ast_assign, stree, targets, func_scope_name, call_args,
462
- call_kwargs, func_name, func_inst)
463
- return node
464
- if isinstance(func_inst, Primitive):
465
- return Node.create_call_buildin_op(func_inst, ast_assign, targets, func_scope_name, call_args, call_kwargs,
466
- func_name)
467
- if isinstance(func_inst, Cell):
468
- if is_subtree(func_inst):
469
- # Instance of function is user custom network, create sub-symboltree
470
- stb = SymbolTreeBuilder(func_inst)
471
- new_stree = stb.build()
472
- AssignParser._update_field_in_init(func_scope, func_name, stree, new_stree)
473
- replacer = AstReplacer(new_stree.get_class_ast())
474
- replacer.replace_all(new_stree.get_ori_cls_name(), new_stree.get_opt_cls_name())
475
- return TreeNode.create_tree_node(new_stree, ast_assign, targets, func_scope_name, call_args,
476
- call_kwargs, func_name, new_stree.get_origin_network())
477
- # Instance of function is buildin cells
478
- return Node.create_call_buildin_op(func_inst, ast_assign, targets, func_scope_name, call_args, call_kwargs,
479
- func_name)
480
- raise RuntimeError("For MindSpore Rewrite, unsupported operation in ast.Call found: ",
481
- type(func_inst).__name__)
482
-
483
- @staticmethod
484
- def _tuple_elts_support_scopledvalue(value: ast.Tuple) -> bool:
485
- """ check whether each element's type in tuple is supported by scopled value. """
486
- if not isinstance(value, ast.Tuple):
487
- raise RuntimeError("For AssignParser._tuple_elts_support_scopledvalue(), the type of value should be "
488
- f"Tuple, but got {type(value).__name__}")
489
-
490
- for elt in value.elts:
491
- if not isinstance(elt, (ast.Name, ast.Attribute, ast.Tuple, ast.Constant, ast.Num, ast.Str, ast.Bytes)):
492
- return False
493
- return True
494
-
495
- @staticmethod
496
- def _convert_ast_mathops_to_node(ast_op: Union[ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare],
497
- ast_assign: ast.Assign) -> Node:
668
+ self.process_function(func_scope_name, func_name, method_object, False)
669
+ return
670
+ # Local variable
671
+ is_local_var, primitive_obj = self._get_local_variable(func_scope, func_name)
672
+ if primitive_obj is not None:
673
+ self.process_function(func_scope_name, func_name, primitive_obj, False)
674
+ return
675
+ if is_local_var:
676
+ # for a variable whose type is not primitive instance, create normal node for it
677
+ self.insert_callfunction_node(func_scope_name, func_name, None, None, False)
678
+ return
679
+ # Function object
680
+ function_object, is_cls_type_obj = self._get_function_object(func_scope, func_name, ast_call)
681
+ if function_object is not None:
682
+ self.process_function(func_scope_name, func_name, function_object, is_cls_type_obj)
683
+ return
684
+ logger.info(error_str("Failed to get instance or object of ast.Call.", ast_call, self.ast_assign))
685
+ self.insert_callfunction_node(func_scope_name, func_name, None, None, False)
686
+
687
+ def process_ast_mathops(self, ast_op: Union[ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare]):
498
688
  """
499
689
  Convert ast node of math operations(ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare) to
500
690
  a symbol tree node.
@@ -502,10 +692,6 @@ class AssignParser(Parser):
502
692
  Args:
503
693
  ast_op (Union[ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare]): An assign node with mathematival
504
694
  operation in construct function.
505
- ast_assign (ast.Assign): Assign node in construct.
506
-
507
- Returns:
508
- An instance of Node in Symbol Tree.
509
695
 
510
696
  Raises:
511
697
  TypeError: The type of parameter 'ast_op' is not in (ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare).
@@ -515,38 +701,105 @@ class AssignParser(Parser):
515
701
  raise TypeError("The type of parameter 'ast_op' must be one of (ast.BinOp, ast.UnaryOp, "
516
702
  "ast.BoolOp, ast.Compare), but got ", type(ast_op))
517
703
 
518
- targets = AssignParser._get_targets(AssignParser._create_scopedvalue(ast_assign.targets[0]))
704
+ targets = AssignParser._create_targets(self.ast_assign.targets[0])
519
705
  args = []
520
706
  op_type_str = type(ast_op).__name__
521
707
  op_type = ScopedValue.create_naming_value(op_type_str)
522
- ops = {}
523
708
  name = op_type_str
524
709
  if isinstance(ast_op, ast.BinOp):
525
710
  op = type(ast_op.op).__name__
526
711
  name = f'{name}_{op}'
527
- ops['0'] = ScopedValue.create_naming_value(op)
528
- args.append(AssignParser._create_scopedvalue(ast_op.left))
529
- args.append(AssignParser._create_scopedvalue(ast_op.right))
712
+ args.append(AstConverter.create_scopedvalue(ast_op.left))
713
+ args.append(AstConverter.create_scopedvalue(ast_op.right))
530
714
  elif isinstance(ast_op, ast.UnaryOp):
531
715
  op = type(ast_op.op).__name__
532
716
  name = f'{name}_{op}'
533
- ops['0'] = ScopedValue.create_naming_value(op)
534
- args.append(AssignParser._create_scopedvalue(ast_op.operand))
717
+ args.append(AstConverter.create_scopedvalue(ast_op.operand))
535
718
  elif isinstance(ast_op, ast.BoolOp):
536
719
  op = type(ast_op.op).__name__
537
720
  name = f'{name}_{op}'
538
- ops['0'] = ScopedValue.create_naming_value(op)
539
721
  for value in ast_op.values:
540
- args.append(AssignParser._create_scopedvalue(value))
722
+ args.append(AstConverter.create_scopedvalue(value))
541
723
  elif isinstance(ast_op, ast.Compare):
542
- args.append(AssignParser._create_scopedvalue(ast_op.left))
724
+ args.append(AstConverter.create_scopedvalue(ast_op.left))
543
725
  for idx, ast_cmp_op in enumerate(ast_op.ops):
544
726
  op = type(ast_cmp_op).__name__
545
727
  name = f'{name}_{op}'
546
- ops[str(idx)] = ScopedValue.create_naming_value(op)
547
- args.append(AssignParser._create_scopedvalue(ast_op.comparators[idx]))
728
+ args.append(AstConverter.create_scopedvalue(ast_op.comparators[idx]))
548
729
  name = name.lower()
549
- return Node.create_mathops_node(ast_assign, targets, op_type, args, ops, name)
730
+ node = Node.create_mathops_node(self.ast_assign, targets, op_type, args, name)
731
+ self.stree.append_origin_field(node, self.node_manager)
732
+
733
+ def process_ast_constant(self, ast_constant: Union[ast.Constant, ast.NameConstant, ast.Num, ast.Bytes, ast.Str]):
734
+ """
735
+ Convert ast node of constant types (ast.Constant, ast.NameConstant, ast.Num, ast.Bytes, ast.Str) to
736
+ a symbol tree node.
737
+ """
738
+ node_name = f"{type(ast_constant).__name__.lower()}_assign"
739
+ targets = AssignParser._create_targets(self.ast_assign.targets[0])
740
+ args = [AstConverter.create_scopedvalue(ast_constant)]
741
+ node = Node.create_call_method(self.ast_assign, targets, "pass_through", args, {}, node_name)
742
+ self.stree.append_origin_field(node, self.node_manager)
743
+
744
+ def process_ast_name(self, ast_node: Union[ast.Name, ast.Attribute]):
745
+ """
746
+ Convert ast node of ast.Name and ast.Attribute to a symbol tree node.
747
+ """
748
+ self.targets = AssignParser._create_targets(self.ast_assign.targets[0])
749
+ inst, scope_name = AssignParser._get_inst_and_name(ast_node, self.stree)
750
+ if inst is not None and (isinstance(inst, CellList) or
751
+ isinstance(inst, list) and AssignParser._list_of_cells(inst)):
752
+ node = self.cell_container_process(scope_name, scope_name, inst)
753
+ else:
754
+ node_name = f"{type(ast_node).__name__.lower()}_assign"
755
+ args = [AstConverter.create_scopedvalue(ast_node)]
756
+ node = Node.create_call_method(self.ast_assign, self.targets, "pass_through", args, {}, node_name)
757
+ self.stree.append_origin_field(node, self.node_manager)
758
+
759
+ def process_ast_tuple(self, ast_node: Union[ast.Tuple, ast.List]):
760
+ """
761
+ Convert ast node of ast.Tuple or ast.List to a symbol tree node.
762
+ """
763
+ # ensure that each element's type in tuple is supported by scopled value
764
+ if AstConverter.ast_tuple_elts_support_scopledvalue(ast_node):
765
+ targets = AssignParser._create_targets(self.ast_assign.targets[0])
766
+ args = []
767
+ for elt in ast_node.elts:
768
+ args.append(AstConverter.create_scopedvalue(elt))
769
+ func_name = "tuple" if isinstance(ast_node, ast.Tuple) else "list"
770
+ node = Node.create_call_method(self.ast_assign, targets, func_name, args, {}, func_name)
771
+ self.stree.append_origin_field(node, self.node_manager)
772
+ else:
773
+ logger.info(f"some elements in assign({astunparse.unparse(self.ast_assign)}) are not supported "
774
+ "in rewrite, fallback to python")
775
+ self.stree.try_append_python_node(self.ast_assign, self.ast_assign, self.node_manager)
776
+
777
+ def process_ast_dict(self, ast_dict: ast.Dict):
778
+ """
779
+ Convert ast node of ast.Dict to a symbol tree node.
780
+ """
781
+ # ensure that each element's type in dict is supported by scopled value
782
+ if AstConverter.ast_dict_support_scopledvalue(ast_dict):
783
+ targets = AssignParser._create_targets(self.ast_assign.targets[0])
784
+ kwargs = {}
785
+ for idx, key in enumerate(ast_dict.keys):
786
+ kwargs[key.value] = AstConverter.create_scopedvalue(ast_dict.values[idx])
787
+ func_name = ScopedValue.create_naming_value("dict")
788
+ node = Node.create_call_method(self.ast_assign, targets, func_name, [], kwargs, "dict")
789
+ self.stree.append_origin_field(node, self.node_manager)
790
+ else:
791
+ logger.info(f"some elements in assign({astunparse.unparse(self.ast_assign)}) are not supported "
792
+ "in rewrite, fallback to python")
793
+ self.stree.try_append_python_node(self.ast_assign, self.ast_assign, self.node_manager)
794
+
795
+ def process_ast_subscript(self, ast_subscript: ast.Subscript):
796
+ """
797
+ Convert ast node of ast.Subscript to a symbol tree node.
798
+ """
799
+ targets = AssignParser._create_targets(self.ast_assign.targets[0])
800
+ args = [AstConverter.create_scopedvalue(ast_subscript)]
801
+ node = Node.create_call_method(self.ast_assign, targets, "pass_through", args, {}, "subscript_var")
802
+ self.stree.append_origin_field(node, self.node_manager)
550
803
 
551
804
  def process(self, stree: SymbolTree, node: ast.Assign, node_manager: NodeManager):
552
805
  """
@@ -561,68 +814,37 @@ class AssignParser(Parser):
561
814
  stree ([SymbolTree]): Symbol Tree under parsing.
562
815
  node ([ast.Assign]): An ast.Assign node.
563
816
  node_manager (NodeManager): NodeManager those asts belong to.
564
-
565
- Raises:
566
- RuntimeError: Only support one target in assign now.
567
- RuntimeError: Unsupported node type in construct function.
568
- """
569
-
570
- targets = node.targets
571
- try:
572
- if len(targets) != 1:
573
- raise RuntimeError(
574
- error_str(f"only support one target in assign now.", targets, node))
575
- value = node.value
576
- if isinstance(value, ast.Call):
577
- node_ = self._convert_ast_call_to_node(value, node, stree, node_manager)
578
- stree.append_origin_field(node_, node_manager)
579
- elif isinstance(value, (ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare)):
580
- node_ = AssignParser._convert_ast_mathops_to_node(value, node)
581
- stree.append_origin_field(node_, node_manager)
582
- elif isinstance(value, ast.Subscript):
583
- logger.info(f"ops-call({astunparse.unparse(node)}) in assign will be supported in near feature, "
584
- f"ignored as a python node now")
585
- stree.try_append_python_node(node, node, node_manager)
586
- elif isinstance(value, (ast.Name, ast.Constant, ast.Attribute, ast.Num, ast.NameConstant,
587
- ast.Bytes, ast.Str)):
588
- if isinstance(value, ast.Name):
589
- node_name = "name_assign"
590
- elif isinstance(value, ast.Constant):
591
- node_name = "constant_assign"
592
- elif isinstance(value, ast.Attribute):
593
- node_name = "attribute_assign"
594
- else:
595
- node_name = "other_assign"
596
- targets = AssignParser._get_targets(AssignParser._create_scopedvalue(node.targets[0]))
597
- call_args = [AssignParser._create_scopedvalue(value)]
598
- node_ = Node.create_call_pass_through_method(node, targets, call_args, {}, node_name)
599
- stree.append_origin_field(node_, node_manager)
600
- elif isinstance(value, ast.Tuple):
601
- if AssignParser._tuple_elts_support_scopledvalue(value):
602
- # ensure that each element's type in tuple is supported by scopled value
603
- targets = AssignParser._get_targets(AssignParser._create_scopedvalue(node.targets[0]))
604
- args = []
605
- for elt in value.elts:
606
- args.append(AssignParser._create_scopedvalue(elt))
607
- node_ = Node.create_call_method(node, targets, ScopedValue.create_naming_value("tuple"),
608
- args, {}, "tuple")
609
- stree.append_origin_field(node_, node_manager)
610
- else:
611
- logger.info(f"some elements in Tuple of assign({astunparse.unparse(node)}) are not supported "
612
- "in rewrite, fallback to python")
613
- stree.try_append_python_node(node, node, node_manager)
614
- elif isinstance(value, (ast.List, ast.Dict)):
615
- # add these as callmethod node if necessary
616
- stree.try_append_python_node(node, node, node_manager)
617
- else:
618
- raise RuntimeError(
619
- error_str(f"only support (ast.Call, ast.BinOp, ast.BoolOp, ast.Subscript, ast.Name, ast.Constant, "
620
- f"ast.Attribute, ast.Num, ast.NameConstant, ast.Bytes, ast.Str, ast.Tuple, ast.List, "
621
- f"ast.Dict) as value of ast.assign, but got ast type '{type(value).__name__}'",
622
- child_node=value, father_node=node))
623
- except RuntimeError:
624
- logger.info(f"ops-call({astunparse.unparse(node).strip()}) not supported in rewrite, fallback to python")
817
+ """
818
+ if len(node.targets) != 1:
819
+ logger.info(error_str(f"Continuous assignment statement(e.g. 'a = b = 1') should be flatten before.",
820
+ child_node=node))
821
+ stree.try_append_python_node(node, node, node_manager)
822
+ return
823
+
824
+ self.store_env()
825
+ self.stree = stree
826
+ self.ast_assign = node
827
+ self.node_manager = node_manager
828
+ value = node.value
829
+ if isinstance(value, ast.Call):
830
+ self.process_ast_call(value)
831
+ elif isinstance(value, (ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare)):
832
+ self.process_ast_mathops(value)
833
+ elif isinstance(value, ast.Subscript):
834
+ self.process_ast_subscript(value)
835
+ elif isinstance(value, (ast.Constant, ast.NameConstant, ast.Num, ast.Bytes, ast.Str)):
836
+ self.process_ast_constant(value)
837
+ elif isinstance(value, (ast.Name, ast.Attribute)):
838
+ self.process_ast_name(value)
839
+ elif isinstance(value, (ast.Tuple, ast.List)):
840
+ self.process_ast_tuple(value)
841
+ elif isinstance(value, ast.Dict):
842
+ self.process_ast_dict(value)
843
+ else:
844
+ logger.info(f"ops-call({astunparse.unparse(node).strip()}) in assign will be supported in near feature, "
845
+ f"ignored as a python node now")
625
846
  stree.try_append_python_node(node, node, node_manager)
847
+ self.restore_env()
626
848
 
627
849
 
628
850
  g_assign_parser = reg_parser(AssignParser())