mindspore 2.4.10__cp310-cp310-win_amd64.whl → 2.6.0rc1__cp310-cp310-win_amd64.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 (602) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
  3. mindspore/Newtonsoft.Json.dll +0 -0
  4. mindspore/__init__.py +13 -6
  5. mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
  8. mindspore/_check_jit_forbidden_api.py +3 -0
  9. mindspore/_checkparam.py +3 -38
  10. mindspore/_deprecated/__init__.py +17 -0
  11. mindspore/_deprecated/jit.py +198 -0
  12. mindspore/_extends/builtin_operations.py +1 -1
  13. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  14. mindspore/_extends/parse/__init__.py +6 -7
  15. mindspore/_extends/parse/compile_config.py +83 -0
  16. mindspore/_extends/parse/deprecated/__init__.py +0 -0
  17. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
  18. mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
  19. mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
  20. mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
  21. mindspore/_extends/parse/parser.py +46 -197
  22. mindspore/_extends/parse/resources.py +1 -5
  23. mindspore/_extends/parse/standard_method.py +217 -98
  24. mindspore/_extends/pijit/__init__.py +2 -2
  25. mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
  26. mindspore/_extends/pijit/tensor_func_list.py +27 -0
  27. mindspore/_extends/utils.py +1 -1
  28. mindspore/amp.py +11 -5
  29. mindspore/atlprov.dll +0 -0
  30. mindspore/avcodec-59.dll +0 -0
  31. mindspore/avdevice-59.dll +0 -0
  32. mindspore/avfilter-8.dll +0 -0
  33. mindspore/avformat-59.dll +0 -0
  34. mindspore/avutil-57.dll +0 -0
  35. mindspore/boost/__init__.py +2 -2
  36. mindspore/boost/base.py +3 -7
  37. mindspore/boost/boost_cell_wrapper.py +138 -43
  38. mindspore/c1.dll +0 -0
  39. mindspore/c1xx.dll +0 -0
  40. mindspore/c2.dll +0 -0
  41. mindspore/common/__init__.py +6 -3
  42. mindspore/common/_grad_function.py +56 -0
  43. mindspore/common/_pijit_context.py +14 -5
  44. mindspore/common/_register_for_tensor.py +1 -2
  45. mindspore/common/_stub_tensor.py +30 -14
  46. mindspore/common/_tensor_cpp_method.py +17 -0
  47. mindspore/common/_tensor_docs.py +4760 -0
  48. mindspore/common/api.py +435 -371
  49. mindspore/common/auto_dynamic_shape.py +41 -44
  50. mindspore/common/dtype.py +39 -36
  51. mindspore/common/dump.py +9 -6
  52. mindspore/common/file_system.py +9 -1
  53. mindspore/common/generator.py +2 -0
  54. mindspore/common/hook_handle.py +6 -2
  55. mindspore/common/initializer.py +13 -10
  56. mindspore/common/jit_begin_end.py +94 -0
  57. mindspore/common/jit_config.py +6 -1
  58. mindspore/common/jit_context.py +76 -0
  59. mindspore/common/jit_trace.py +378 -0
  60. mindspore/common/lazy_inline.py +9 -3
  61. mindspore/common/mindir_util.py +10 -2
  62. mindspore/common/mutable.py +5 -4
  63. mindspore/common/parameter.py +135 -52
  64. mindspore/common/seed.py +2 -2
  65. mindspore/common/sparse_tensor.py +23 -17
  66. mindspore/common/tensor.py +951 -1992
  67. mindspore/communication/__init__.py +7 -5
  68. mindspore/communication/_comm_helper.py +52 -2
  69. mindspore/communication/comm_func.py +240 -181
  70. mindspore/communication/management.py +95 -26
  71. mindspore/context.py +314 -566
  72. mindspore/dataset/__init__.py +65 -37
  73. mindspore/dataset/audio/__init__.py +2 -8
  74. mindspore/dataset/audio/transforms.py +3 -17
  75. mindspore/dataset/callback/ds_callback.py +2 -1
  76. mindspore/dataset/core/config.py +87 -6
  77. mindspore/dataset/engine/cache_admin.py +3 -3
  78. mindspore/dataset/engine/cache_client.py +6 -5
  79. mindspore/dataset/engine/datasets.py +292 -267
  80. mindspore/dataset/engine/datasets_audio.py +22 -8
  81. mindspore/dataset/engine/datasets_standard_format.py +46 -27
  82. mindspore/dataset/engine/datasets_text.py +78 -48
  83. mindspore/dataset/engine/datasets_user_defined.py +182 -116
  84. mindspore/dataset/engine/datasets_vision.py +120 -44
  85. mindspore/dataset/engine/iterators.py +283 -63
  86. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  87. mindspore/dataset/engine/obs/util.py +8 -0
  88. mindspore/dataset/engine/queue.py +40 -0
  89. mindspore/dataset/engine/samplers.py +289 -43
  90. mindspore/dataset/engine/serializer_deserializer.py +3 -2
  91. mindspore/dataset/engine/validators.py +53 -11
  92. mindspore/dataset/text/__init__.py +7 -6
  93. mindspore/dataset/text/transforms.py +6 -5
  94. mindspore/dataset/text/utils.py +3 -3
  95. mindspore/dataset/transforms/__init__.py +0 -9
  96. mindspore/dataset/transforms/py_transforms_util.py +17 -0
  97. mindspore/dataset/transforms/transforms.py +31 -14
  98. mindspore/dataset/utils/browse_dataset.py +1 -1
  99. mindspore/dataset/vision/__init__.py +2 -9
  100. mindspore/dataset/vision/transforms.py +202 -158
  101. mindspore/dataset/vision/utils.py +7 -5
  102. mindspore/dataset/vision/validators.py +1 -2
  103. mindspore/device_context/__init__.py +21 -0
  104. mindspore/device_context/ascend/__init__.py +25 -0
  105. mindspore/device_context/ascend/device.py +72 -0
  106. mindspore/device_context/ascend/op_debug.py +153 -0
  107. mindspore/device_context/ascend/op_precision.py +193 -0
  108. mindspore/device_context/ascend/op_tuning.py +123 -0
  109. mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
  110. mindspore/device_context/cpu/device.py +62 -0
  111. mindspore/device_context/cpu/op_tuning.py +43 -0
  112. mindspore/device_context/gpu/__init__.py +21 -0
  113. mindspore/device_context/gpu/device.py +70 -0
  114. mindspore/device_context/gpu/op_precision.py +67 -0
  115. mindspore/device_context/gpu/op_tuning.py +175 -0
  116. mindspore/device_manager.py +170 -0
  117. mindspore/dnnl.dll +0 -0
  118. mindspore/dpcmi.dll +0 -0
  119. mindspore/experimental/es/embedding_service.py +35 -27
  120. mindspore/experimental/llm_boost/__init__.py +1 -0
  121. mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
  122. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
  123. mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
  124. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  125. mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
  126. mindspore/experimental/llm_boost/register.py +1 -0
  127. mindspore/experimental/map_parameter.py +4 -4
  128. mindspore/experimental/optim/adadelta.py +6 -6
  129. mindspore/experimental/optim/adagrad.py +4 -4
  130. mindspore/experimental/optim/adam.py +7 -0
  131. mindspore/experimental/optim/adamax.py +4 -4
  132. mindspore/experimental/optim/adamw.py +4 -0
  133. mindspore/experimental/optim/asgd.py +1 -1
  134. mindspore/experimental/optim/lr_scheduler.py +73 -46
  135. mindspore/experimental/optim/radam.py +34 -31
  136. mindspore/experimental/optim/rprop.py +1 -1
  137. mindspore/experimental/optim/sgd.py +1 -1
  138. mindspore/hal/contiguous_tensors_handle.py +6 -10
  139. mindspore/hal/device.py +55 -53
  140. mindspore/hal/event.py +52 -52
  141. mindspore/hal/memory.py +157 -117
  142. mindspore/hal/stream.py +150 -109
  143. mindspore/include/api/context.h +0 -1
  144. mindspore/include/dataset/constants.h +7 -4
  145. mindspore/include/dataset/execute.h +2 -2
  146. mindspore/jpeg62.dll +0 -0
  147. mindspore/log.py +50 -0
  148. mindspore/mindrecord/__init__.py +21 -8
  149. mindspore/mindrecord/config.py +17 -316
  150. mindspore/mindrecord/filereader.py +1 -9
  151. mindspore/mindrecord/filewriter.py +5 -15
  152. mindspore/mindrecord/mindpage.py +1 -9
  153. mindspore/mindspore_backend_common.dll +0 -0
  154. mindspore/mindspore_backend_manager.dll +0 -0
  155. mindspore/mindspore_common.dll +0 -0
  156. mindspore/mindspore_core.dll +0 -0
  157. mindspore/mindspore_dump.dll +0 -0
  158. mindspore/mindspore_frontend.dll +0 -0
  159. mindspore/mindspore_glog.dll +0 -0
  160. mindspore/mindspore_memory_pool.dll +0 -0
  161. mindspore/mindspore_ms_backend.dll +0 -0
  162. mindspore/mindspore_ops.dll +0 -0
  163. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  164. mindspore/mindspore_ops_kernel_common.dll +0 -0
  165. mindspore/mindspore_profiler.dll +0 -0
  166. mindspore/mindspore_pyboost.dll +0 -0
  167. mindspore/mindspore_pynative.dll +0 -0
  168. mindspore/mindspore_res_manager.dll +0 -0
  169. mindspore/mindspore_runtime_pipeline.dll +0 -0
  170. mindspore/mint/__init__.py +796 -759
  171. mindspore/mint/distributed/__init__.py +70 -4
  172. mindspore/mint/distributed/distributed.py +2679 -44
  173. mindspore/mint/linalg/__init__.py +8 -0
  174. mindspore/mint/nn/__init__.py +743 -22
  175. mindspore/mint/nn/functional.py +716 -23
  176. mindspore/mint/nn/layer/__init__.py +21 -4
  177. mindspore/mint/nn/layer/_functions.py +334 -0
  178. mindspore/mint/nn/layer/activation.py +276 -1
  179. mindspore/mint/nn/layer/basic.py +123 -0
  180. mindspore/mint/nn/layer/conv.py +921 -0
  181. mindspore/mint/nn/layer/normalization.py +223 -28
  182. mindspore/mint/nn/layer/padding.py +797 -0
  183. mindspore/mint/nn/layer/pooling.py +235 -0
  184. mindspore/mint/optim/__init__.py +3 -1
  185. mindspore/mint/optim/adam.py +223 -0
  186. mindspore/mint/optim/adamw.py +26 -19
  187. mindspore/mint/optim/sgd.py +171 -0
  188. mindspore/mint/special/__init__.py +2 -1
  189. mindspore/msobj140.dll +0 -0
  190. mindspore/mspdb140.dll +0 -0
  191. mindspore/mspdbcore.dll +0 -0
  192. mindspore/mspdbst.dll +0 -0
  193. mindspore/mspft140.dll +0 -0
  194. mindspore/msvcdis140.dll +0 -0
  195. mindspore/msvcp140_1.dll +0 -0
  196. mindspore/msvcp140_2.dll +0 -0
  197. mindspore/msvcp140_atomic_wait.dll +0 -0
  198. mindspore/msvcp140_codecvt_ids.dll +0 -0
  199. mindspore/multiprocessing/__init__.py +5 -0
  200. mindspore/nn/__init__.py +4 -1
  201. mindspore/nn/cell.py +1370 -189
  202. mindspore/nn/dynamic_lr.py +2 -1
  203. mindspore/nn/layer/activation.py +29 -27
  204. mindspore/nn/layer/basic.py +51 -35
  205. mindspore/nn/layer/channel_shuffle.py +3 -3
  206. mindspore/nn/layer/container.py +1 -1
  207. mindspore/nn/layer/conv.py +22 -17
  208. mindspore/nn/layer/embedding.py +12 -11
  209. mindspore/nn/layer/normalization.py +56 -49
  210. mindspore/nn/layer/padding.py +4 -3
  211. mindspore/nn/layer/pooling.py +120 -42
  212. mindspore/nn/layer/rnn_cells.py +1 -1
  213. mindspore/nn/layer/rnns.py +2 -1
  214. mindspore/nn/layer/timedistributed.py +5 -5
  215. mindspore/nn/layer/transformer.py +59 -36
  216. mindspore/nn/learning_rate_schedule.py +8 -4
  217. mindspore/nn/loss/loss.py +58 -55
  218. mindspore/nn/optim/ada_grad.py +7 -5
  219. mindspore/nn/optim/adadelta.py +11 -9
  220. mindspore/nn/optim/adafactor.py +1 -1
  221. mindspore/nn/optim/adam.py +17 -13
  222. mindspore/nn/optim/adamax.py +8 -7
  223. mindspore/nn/optim/adasum.py +5 -5
  224. mindspore/nn/optim/asgd.py +1 -1
  225. mindspore/nn/optim/ftrl.py +11 -9
  226. mindspore/nn/optim/lamb.py +1 -1
  227. mindspore/nn/optim/lars.py +1 -4
  228. mindspore/nn/optim/lazyadam.py +12 -10
  229. mindspore/nn/optim/momentum.py +7 -6
  230. mindspore/nn/optim/optimizer.py +3 -3
  231. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  232. mindspore/nn/optim/rmsprop.py +13 -12
  233. mindspore/nn/optim/rprop.py +11 -9
  234. mindspore/nn/optim/sgd.py +9 -6
  235. mindspore/nn/optim/tft_wrapper.py +5 -2
  236. mindspore/nn/optim/thor.py +2 -1
  237. mindspore/nn/probability/bijector/bijector.py +17 -11
  238. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  239. mindspore/nn/probability/bijector/invert.py +2 -2
  240. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  241. mindspore/nn/probability/bijector/softplus.py +3 -2
  242. mindspore/nn/probability/distribution/beta.py +3 -3
  243. mindspore/nn/probability/distribution/categorical.py +1 -1
  244. mindspore/nn/probability/distribution/cauchy.py +4 -2
  245. mindspore/nn/probability/distribution/exponential.py +6 -7
  246. mindspore/nn/probability/distribution/gamma.py +2 -2
  247. mindspore/nn/probability/distribution/gumbel.py +2 -2
  248. mindspore/nn/probability/distribution/half_normal.py +5 -3
  249. mindspore/nn/probability/distribution/logistic.py +5 -3
  250. mindspore/nn/probability/distribution/poisson.py +1 -1
  251. mindspore/nn/probability/distribution/uniform.py +5 -3
  252. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  253. mindspore/nn/reinforcement/tensor_array.py +1 -1
  254. mindspore/nn/utils/init.py +13 -11
  255. mindspore/nn/wrap/__init__.py +6 -6
  256. mindspore/nn/wrap/cell_wrapper.py +181 -122
  257. mindspore/nn/wrap/grad_reducer.py +45 -36
  258. mindspore/nn/wrap/loss_scale.py +6 -7
  259. mindspore/numpy/array_creations.py +63 -65
  260. mindspore/numpy/array_ops.py +149 -144
  261. mindspore/numpy/logic_ops.py +41 -42
  262. mindspore/numpy/math_ops.py +365 -363
  263. mindspore/numpy/utils.py +17 -18
  264. mindspore/numpy/utils_const.py +5 -6
  265. mindspore/opencv_core452.dll +0 -0
  266. mindspore/opencv_imgcodecs452.dll +0 -0
  267. mindspore/opencv_imgproc452.dll +0 -0
  268. mindspore/ops/__init__.py +5 -3
  269. mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
  270. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
  271. mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
  272. mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
  273. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  274. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  275. mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
  276. mindspore/ops/_register_for_op.py +0 -11
  277. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  278. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
  279. mindspore/ops/_vmap/vmap_array_ops.py +27 -25
  280. mindspore/ops/_vmap/vmap_base.py +0 -2
  281. mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
  282. mindspore/ops/_vmap/vmap_math_ops.py +15 -16
  283. mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
  284. mindspore/ops/auto_generate/__init__.py +4 -3
  285. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +236 -46
  286. mindspore/ops/auto_generate/gen_extend_func.py +764 -124
  287. mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
  288. mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
  289. mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
  290. mindspore/ops/composite/__init__.py +2 -1
  291. mindspore/ops/composite/base.py +20 -25
  292. mindspore/ops/composite/math_ops.py +6 -16
  293. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  294. mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
  295. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  296. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  297. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  298. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  299. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  300. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  301. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  302. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  303. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  304. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  305. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  306. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  307. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  308. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  309. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  310. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  311. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  312. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  313. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  314. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  315. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  316. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  317. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  318. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  319. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  320. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
  321. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  322. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  323. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  324. mindspore/ops/function/__init__.py +40 -2
  325. mindspore/ops/function/_add_attr_func.py +58 -0
  326. mindspore/ops/function/array_func.py +2089 -2403
  327. mindspore/ops/function/clip_func.py +80 -23
  328. mindspore/ops/function/debug_func.py +57 -57
  329. mindspore/ops/function/grad/__init__.py +1 -0
  330. mindspore/ops/function/grad/grad_func.py +104 -71
  331. mindspore/ops/function/image_func.py +2 -2
  332. mindspore/ops/function/linalg_func.py +47 -78
  333. mindspore/ops/function/math_func.py +4501 -3802
  334. mindspore/ops/function/nn_func.py +1726 -620
  335. mindspore/ops/function/other_func.py +159 -1
  336. mindspore/ops/function/parameter_func.py +18 -84
  337. mindspore/ops/function/random_func.py +440 -387
  338. mindspore/ops/function/reshard_func.py +4 -70
  339. mindspore/ops/function/sparse_func.py +3 -3
  340. mindspore/ops/function/sparse_unary_func.py +6 -6
  341. mindspore/ops/function/spectral_func.py +25 -58
  342. mindspore/ops/function/vmap_func.py +24 -17
  343. mindspore/ops/functional.py +22 -7
  344. mindspore/ops/functional_overload.py +1440 -0
  345. mindspore/ops/op_info_register.py +32 -244
  346. mindspore/ops/operations/__init__.py +13 -7
  347. mindspore/ops/operations/_custom_ops_utils.py +247 -0
  348. mindspore/ops/operations/_embedding_cache_ops.py +4 -4
  349. mindspore/ops/operations/_grad_ops.py +2 -43
  350. mindspore/ops/operations/_infer_ops.py +2 -1
  351. mindspore/ops/operations/_inner_ops.py +43 -84
  352. mindspore/ops/operations/_ms_kernel.py +4 -10
  353. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  354. mindspore/ops/operations/_scalar_ops.py +3 -2
  355. mindspore/ops/operations/_sequence_ops.py +1 -1
  356. mindspore/ops/operations/_tensor_array.py +1 -1
  357. mindspore/ops/operations/array_ops.py +81 -324
  358. mindspore/ops/operations/comm_ops.py +154 -108
  359. mindspore/ops/operations/custom_ops.py +232 -78
  360. mindspore/ops/operations/debug_ops.py +153 -59
  361. mindspore/ops/operations/inner_ops.py +7 -5
  362. mindspore/ops/operations/linalg_ops.py +1 -57
  363. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  364. mindspore/ops/operations/manually_defined/ops_def.py +928 -180
  365. mindspore/ops/operations/math_ops.py +32 -234
  366. mindspore/ops/operations/nn_ops.py +210 -498
  367. mindspore/ops/operations/other_ops.py +62 -9
  368. mindspore/ops/operations/random_ops.py +13 -7
  369. mindspore/ops/operations/reshard_ops.py +1 -1
  370. mindspore/ops/operations/sparse_ops.py +2 -2
  371. mindspore/ops/primitive.py +66 -53
  372. mindspore/ops/tensor_method.py +1888 -0
  373. mindspore/ops_generate/__init__.py +0 -5
  374. mindspore/ops_generate/aclnn/__init__.py +0 -0
  375. mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
  376. mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
  377. mindspore/ops_generate/api/__init__.py +0 -0
  378. mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
  379. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
  380. mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
  381. mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
  382. mindspore/ops_generate/api/functions_cc_generator.py +237 -0
  383. mindspore/ops_generate/api/gen_api.py +103 -0
  384. mindspore/ops_generate/api/op_api_proto.py +235 -0
  385. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
  386. mindspore/ops_generate/common/__init__.py +0 -0
  387. mindspore/ops_generate/common/base_generator.py +11 -0
  388. mindspore/ops_generate/common/gen_constants.py +91 -0
  389. mindspore/ops_generate/common/gen_utils.py +348 -0
  390. mindspore/ops_generate/common/op_proto.py +473 -0
  391. mindspore/ops_generate/common/template.py +523 -0
  392. mindspore/ops_generate/gen_ops.py +22 -1069
  393. mindspore/ops_generate/op_def/__init__.py +0 -0
  394. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  395. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
  396. mindspore/ops_generate/op_def/ops_def_cc_generator.py +299 -0
  397. mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
  398. mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
  399. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  400. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  401. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  402. mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
  403. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
  404. mindspore/ops_generate/pyboost/__init__.py +0 -0
  405. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
  406. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
  407. mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
  408. mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
  409. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
  410. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
  411. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
  412. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
  413. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
  414. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
  415. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
  416. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
  417. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
  418. mindspore/ops_generate/resources/__init__.py +0 -0
  419. mindspore/ops_generate/resources/resource_list.py +30 -0
  420. mindspore/ops_generate/resources/resource_loader.py +36 -0
  421. mindspore/ops_generate/resources/resource_manager.py +64 -0
  422. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  423. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  424. mindspore/parallel/__init__.py +7 -3
  425. mindspore/parallel/_auto_parallel_context.py +152 -34
  426. mindspore/parallel/_cell_wrapper.py +130 -15
  427. mindspore/parallel/_parallel_serialization.py +107 -5
  428. mindspore/parallel/_ps_context.py +1 -1
  429. mindspore/parallel/_recovery_context.py +7 -2
  430. mindspore/parallel/_tensor.py +142 -18
  431. mindspore/parallel/_utils.py +199 -23
  432. mindspore/parallel/algo_parameter_config.py +4 -4
  433. mindspore/parallel/auto_parallel.py +732 -0
  434. mindspore/parallel/checkpoint_convert.py +159 -0
  435. mindspore/parallel/checkpoint_transform.py +698 -35
  436. mindspore/parallel/cluster/process_entity/_api.py +276 -50
  437. mindspore/parallel/cluster/process_entity/_utils.py +41 -6
  438. mindspore/parallel/cluster/run.py +21 -4
  439. mindspore/parallel/function/__init__.py +24 -0
  440. mindspore/parallel/function/reshard_func.py +259 -0
  441. mindspore/parallel/nn/__init__.py +25 -0
  442. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  443. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  444. mindspore/parallel/parameter_broadcast.py +25 -14
  445. mindspore/parallel/shard.py +137 -58
  446. mindspore/parallel/transform_safetensors.py +363 -305
  447. mindspore/pgodb140.dll +0 -0
  448. mindspore/pgort140.dll +0 -0
  449. mindspore/profiler/__init__.py +22 -5
  450. mindspore/profiler/analysis/__init__.py +0 -0
  451. mindspore/profiler/analysis/parser/__init__.py +0 -0
  452. mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
  453. mindspore/profiler/analysis/parser/base_parser.py +158 -0
  454. mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
  455. mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
  456. mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
  457. mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
  458. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
  459. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
  460. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +106 -0
  461. mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
  462. mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
  463. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
  464. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
  465. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
  466. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
  467. mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
  468. mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
  469. mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
  470. mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
  471. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
  472. mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
  473. mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
  474. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
  475. mindspore/profiler/analysis/task_manager.py +131 -0
  476. mindspore/profiler/analysis/time_converter.py +84 -0
  477. mindspore/profiler/analysis/viewer/__init__.py +0 -0
  478. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
  479. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
  480. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
  481. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
  482. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
  483. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
  484. mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
  485. mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
  486. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
  487. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
  488. mindspore/profiler/analysis/work_flow.py +73 -0
  489. mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
  490. mindspore/profiler/common/command_executor.py +90 -0
  491. mindspore/profiler/common/constant.py +186 -3
  492. mindspore/profiler/common/file_manager.py +208 -0
  493. mindspore/profiler/common/log.py +130 -0
  494. mindspore/profiler/common/msprof_cmd_tool.py +221 -0
  495. mindspore/profiler/common/path_manager.py +395 -0
  496. mindspore/profiler/common/process_bar.py +168 -0
  497. mindspore/profiler/common/process_pool.py +9 -3
  498. mindspore/profiler/common/profiler_context.py +500 -0
  499. mindspore/profiler/common/profiler_info.py +304 -0
  500. mindspore/profiler/common/profiler_meta_data.py +74 -0
  501. mindspore/profiler/common/profiler_output_path.py +284 -0
  502. mindspore/profiler/common/profiler_parameters.py +251 -0
  503. mindspore/profiler/common/profiler_path_manager.py +179 -0
  504. mindspore/profiler/common/record_function.py +76 -0
  505. mindspore/profiler/common/tlv_decoder.py +76 -0
  506. mindspore/profiler/common/util.py +75 -2
  507. mindspore/profiler/dynamic_profiler.py +341 -75
  508. mindspore/profiler/envprofiler.py +163 -0
  509. mindspore/profiler/experimental_config.py +197 -0
  510. mindspore/profiler/mstx.py +242 -0
  511. mindspore/profiler/platform/__init__.py +21 -0
  512. mindspore/profiler/platform/base_profiler.py +40 -0
  513. mindspore/profiler/platform/cpu_profiler.py +124 -0
  514. mindspore/profiler/platform/gpu_profiler.py +74 -0
  515. mindspore/profiler/platform/npu_profiler.py +335 -0
  516. mindspore/profiler/profiler.py +1073 -90
  517. mindspore/profiler/profiler_action_controller.py +187 -0
  518. mindspore/profiler/profiler_interface.py +118 -0
  519. mindspore/profiler/schedule.py +243 -0
  520. mindspore/rewrite/api/node.py +15 -13
  521. mindspore/rewrite/api/symbol_tree.py +2 -3
  522. mindspore/run_check/_check_version.py +27 -20
  523. mindspore/run_check/run_check.py +1 -1
  524. mindspore/runtime/__init__.py +37 -0
  525. mindspore/runtime/device.py +27 -0
  526. mindspore/runtime/event.py +209 -0
  527. mindspore/runtime/executor.py +177 -0
  528. mindspore/runtime/memory.py +409 -0
  529. mindspore/runtime/stream.py +460 -0
  530. mindspore/runtime/thread_bind_core.py +401 -0
  531. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  532. mindspore/swresample-4.dll +0 -0
  533. mindspore/swscale-6.dll +0 -0
  534. mindspore/tbbmalloc.dll +0 -0
  535. mindspore/tinyxml2.dll +0 -0
  536. mindspore/train/__init__.py +8 -8
  537. mindspore/train/_utils.py +88 -25
  538. mindspore/train/amp.py +9 -5
  539. mindspore/train/callback/__init__.py +2 -2
  540. mindspore/train/callback/_callback.py +2 -16
  541. mindspore/train/callback/_checkpoint.py +53 -55
  542. mindspore/train/callback/_cluster_monitor.py +14 -18
  543. mindspore/train/callback/_early_stop.py +1 -1
  544. mindspore/train/callback/_flops_collector.py +103 -68
  545. mindspore/train/callback/_history.py +8 -5
  546. mindspore/train/callback/_lambda_callback.py +2 -2
  547. mindspore/train/callback/_landscape.py +0 -3
  548. mindspore/train/callback/_loss_monitor.py +2 -1
  549. mindspore/train/callback/_on_request_exit.py +6 -5
  550. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  551. mindspore/train/callback/_summary_collector.py +52 -19
  552. mindspore/train/callback/_time_monitor.py +2 -1
  553. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -107
  554. mindspore/train/data_sink.py +25 -2
  555. mindspore/train/dataset_helper.py +15 -16
  556. mindspore/train/loss_scale_manager.py +8 -7
  557. mindspore/train/metrics/accuracy.py +3 -3
  558. mindspore/train/metrics/confusion_matrix.py +9 -9
  559. mindspore/train/metrics/error.py +3 -3
  560. mindspore/train/metrics/hausdorff_distance.py +4 -4
  561. mindspore/train/metrics/mean_surface_distance.py +3 -3
  562. mindspore/train/metrics/metric.py +0 -12
  563. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  564. mindspore/train/metrics/precision.py +11 -10
  565. mindspore/train/metrics/recall.py +9 -9
  566. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  567. mindspore/train/mind_ir_pb2.py +174 -46
  568. mindspore/train/model.py +184 -113
  569. mindspore/train/serialization.py +622 -978
  570. mindspore/train/summary/_summary_adapter.py +2 -2
  571. mindspore/train/summary/summary_record.py +2 -3
  572. mindspore/train/train_thor/model_thor.py +1 -1
  573. mindspore/turbojpeg.dll +0 -0
  574. mindspore/utils/__init__.py +6 -3
  575. mindspore/utils/dryrun.py +140 -0
  576. mindspore/utils/hooks.py +81 -0
  577. mindspore/utils/runtime_execution_order_check.py +550 -0
  578. mindspore/utils/utils.py +138 -4
  579. mindspore/vcmeta.dll +0 -0
  580. mindspore/vcruntime140.dll +0 -0
  581. mindspore/vcruntime140_1.dll +0 -0
  582. mindspore/version.py +1 -1
  583. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +3 -3
  584. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +587 -418
  585. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +1 -1
  586. mindspore/_install_custom.py +0 -43
  587. mindspore/common/_register_for_adapter.py +0 -74
  588. mindspore/common/_tensor_overload.py +0 -139
  589. mindspore/mindspore_np_dtype.dll +0 -0
  590. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  591. mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
  592. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  593. mindspore/ops_generate/gen_aclnn_implement.py +0 -263
  594. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  595. mindspore/ops_generate/gen_pyboost_func.py +0 -1052
  596. mindspore/ops_generate/gen_utils.py +0 -209
  597. mindspore/ops_generate/op_proto.py +0 -145
  598. mindspore/ops_generate/template.py +0 -261
  599. mindspore/profiler/envprofiling.py +0 -254
  600. mindspore/profiler/profiling.py +0 -1926
  601. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
  602. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,395 @@
1
+ # Copyright 2023 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Profiler path manager"""
16
+ import os
17
+ import re
18
+ import shutil
19
+ import glob
20
+ import stat
21
+
22
+ from mindspore import log as logger
23
+ from mindspore.profiler.common.constant import FileConstant
24
+ from mindspore.profiler.common.exceptions.exceptions import ProfilerPathErrorException
25
+
26
+
27
+ class PathManager:
28
+ """
29
+ Path common operations manager
30
+ """
31
+ MAX_PATH_LENGTH = 4096
32
+ MAX_FILE_NAME_LENGTH = 255
33
+ DATA_FILE_AUTHORITY = 0o640
34
+ DATA_DIR_AUTHORITY = 0o750
35
+ MAX_FILE_SIZE = 1024 * 1024 * 1024 * 10
36
+
37
+ @classmethod
38
+ def check_input_directory_path(cls, path: str):
39
+ """
40
+ Function Description:
41
+ check whether the path is valid, some businesses can accept a path that does not exist,
42
+ so the function do not verify whether the path exists
43
+ Parameter:
44
+ path: the path to check, whether the incoming path is absolute or relative depends on the business
45
+ Exception Description:
46
+ when invalid data throw exception
47
+ """
48
+ cls._input_path_common_check(path)
49
+
50
+ if os.path.isfile(path):
51
+ msg = f"Invalid input path is a file path: {path}"
52
+ raise ProfilerPathErrorException(msg)
53
+
54
+ @classmethod
55
+ def check_input_file_path(cls, path: str):
56
+ """
57
+ Function Description:
58
+ check whether the file path is valid, some businesses can accept a path that does not exist,
59
+ so the function do not verify whether the path exists
60
+ Parameter:
61
+ path: the file path to check, whether the incoming path is absolute or relative depends on the business
62
+ Exception Description:
63
+ when invalid data throw exception
64
+ """
65
+ cls._input_path_common_check(path)
66
+
67
+ if os.path.isdir(path):
68
+ msg = f"Invalid input path is a directory path: {path}"
69
+ raise ProfilerPathErrorException(msg)
70
+
71
+ file_size = os.path.getsize(path)
72
+ if file_size >= cls.MAX_FILE_SIZE:
73
+ msg = f"file size exceeds the limit: {cls.MAX_FILE_SIZE}, file size: {file_size}"
74
+ raise ProfilerPathErrorException(msg)
75
+
76
+ @classmethod
77
+ def get_directory_size(cls, directory: str, unit: str = 'MB') -> float:
78
+ """
79
+ Function Description:
80
+ Get the size of the directory
81
+ Parameter:
82
+ directory: the directory path
83
+ unit: the unit of the size, default is MB
84
+ Return:
85
+ float: the size of the directory
86
+ """
87
+ if not os.path.exists(directory):
88
+ logger.warning("Get directory size failed, %s not exists", directory)
89
+ return 0.0
90
+
91
+ cls.check_input_directory_path(directory)
92
+ unit_map = {
93
+ 'B': 1,
94
+ 'KB': 1024,
95
+ 'MB': 1024 * 1024,
96
+ 'GB': 1024 * 1024 * 1024
97
+ }
98
+
99
+ if unit not in unit_map:
100
+ logger.error("Invalid unit: %s", unit)
101
+ return 0.0
102
+
103
+ total_size = 0
104
+ for dirpath, _, filenames in os.walk(directory):
105
+ for filename in filenames:
106
+ file_path = os.path.join(dirpath, filename)
107
+ try:
108
+ total_size += os.path.getsize(file_path)
109
+ except (OSError, FileNotFoundError):
110
+ continue
111
+
112
+ return total_size / unit_map[unit]
113
+
114
+ @classmethod
115
+ def check_path_owner_consistent(cls, path: str):
116
+ """
117
+ Function Description:
118
+ check whether the path belong to process owner
119
+ Parameter:
120
+ path: the path to check
121
+ Exception Description:
122
+ when invalid path, prompt the user
123
+ """
124
+
125
+ if not os.path.exists(path):
126
+ msg = f"The path does not exist: {path}"
127
+ raise ProfilerPathErrorException(msg)
128
+ if os.name != 'nt' and os.stat(path).st_uid != os.getuid():
129
+ msg = f"Path {path} owner[{os.stat(path).st_uid}] does not match the current user[{os.getuid()}]."
130
+ raise ProfilerPathErrorException(msg)
131
+
132
+ @classmethod
133
+ def check_directory_path_writeable(cls, path):
134
+ """
135
+ Function Description:
136
+ check whether the path is writable
137
+ Parameter:
138
+ path: the path to check
139
+ Exception Description:
140
+ when invalid data throw exception
141
+ """
142
+ cls.check_path_owner_consistent(path)
143
+ if os.path.islink(path):
144
+ msg = f"Invalid path is a soft link: {path}"
145
+ raise ProfilerPathErrorException(msg)
146
+ if not os.access(path, os.W_OK):
147
+ msg = f"The path writeable permission check failed: {path}"
148
+ raise ProfilerPathErrorException(msg)
149
+
150
+ @classmethod
151
+ def check_directory_path_readable(cls, path):
152
+ """
153
+ Function Description:
154
+ check whether the path is writable
155
+ Parameter:
156
+ path: the path to check
157
+ Exception Description:
158
+ when invalid data throw exception
159
+ """
160
+ cls.check_path_owner_consistent(path)
161
+ if os.path.islink(path):
162
+ msg = f"Invalid path is a soft link: {path}"
163
+ raise ProfilerPathErrorException(msg)
164
+ if not os.access(path, os.R_OK):
165
+ msg = f"The path readable permission check failed: {path}"
166
+ raise ProfilerPathErrorException(msg)
167
+
168
+ @classmethod
169
+ def remove_path_safety(cls, path: str):
170
+ """
171
+ Function Description:
172
+ remove path safety
173
+ Parameter:
174
+ path: the path to remove
175
+ Exception Description:
176
+ when invalid data throw exception
177
+ """
178
+ if not os.path.exists(path):
179
+ logger.warning("The path does not exist: %s", path)
180
+ return
181
+
182
+ if os.path.islink(path):
183
+ msg = f"Failed to remove path: {path}, is a soft link"
184
+ raise ProfilerPathErrorException(msg)
185
+
186
+ try:
187
+ shutil.rmtree(path)
188
+ except PermissionError as err:
189
+ raise ProfilerPathErrorException(f"Permission denied while removing path: {path}") from err
190
+ except Exception as err:
191
+ raise ProfilerPathErrorException(f"Failed to remove path: {path}, err: {err}") from err
192
+
193
+ @classmethod
194
+ def remove_file_safety(cls, file: str):
195
+ """
196
+ Function Description:
197
+ remove file safety
198
+ Parameter:
199
+ path: the file to remove
200
+ Exception Description:
201
+ when invalid data throw exception
202
+ """
203
+ if not os.path.exists(file):
204
+ logger.warning("The file does not exist: %s", file)
205
+ return
206
+
207
+ if os.path.islink(file):
208
+ msg = f"Failed to remove file: {file}, is a soft link"
209
+ raise ProfilerPathErrorException(msg)
210
+
211
+ try:
212
+ os.remove(file)
213
+ except PermissionError as err:
214
+ raise ProfilerPathErrorException(f"Permission denied while removing file: {file}") from err
215
+ except Exception as err:
216
+ raise ProfilerPathErrorException(f"Failed to remove file: {file}, err: {err}") from err
217
+
218
+ @classmethod
219
+ def make_dir_safety(cls, path: str):
220
+ """
221
+ Function Description:
222
+ make directory safety
223
+ Parameter:
224
+ path: the directory to remove
225
+ Exception Description:
226
+ when invalid data throw exception
227
+ """
228
+ if os.path.exists(path):
229
+ return
230
+
231
+ if os.path.islink(path):
232
+ msg = f"Failed to make directory: {path}, is a soft link"
233
+ raise ProfilerPathErrorException(msg)
234
+
235
+ try:
236
+ os.makedirs(path, mode=cls.DATA_DIR_AUTHORITY, exist_ok=True)
237
+ except Exception as err:
238
+ raise ProfilerPathErrorException(f"Failed to make directory: {path}, err: {err}") from err
239
+
240
+ @classmethod
241
+ def create_file_safety(cls, path: str):
242
+ """
243
+ Function Description:
244
+ create file safety
245
+ Parameter:
246
+ path: the file to remove
247
+ Exception Description:
248
+ when invalid data throw exception
249
+ """
250
+ if os.path.islink(path):
251
+ raise RuntimeError(f"Failed to create file: {path}, is a soft link")
252
+ if os.path.exists(path):
253
+ logger.warning("File already exists: %s", path)
254
+ return
255
+ try:
256
+ os.close(os.open(path, os.O_WRONLY | os.O_CREAT, cls.DATA_FILE_AUTHORITY))
257
+ except Exception as err:
258
+ raise RuntimeError(f"Failed to create file: {path}, err: {err}") from err
259
+
260
+ @classmethod
261
+ def _input_path_common_check(cls, path: str):
262
+ """
263
+ Function Description:
264
+ input path check common function
265
+ Parameter:
266
+ path: the file path to check
267
+ Exception Description:
268
+ when invalid data throw exception
269
+ """
270
+ if len(path) > cls.MAX_PATH_LENGTH:
271
+ msg = f"Path {path} length {len(path)} exceeds the limit {cls.MAX_PATH_LENGTH}."
272
+ raise ProfilerPathErrorException(msg)
273
+
274
+ if os.path.islink(path):
275
+ msg = f"Invalid input path is a soft link: {path}"
276
+ raise ProfilerPathErrorException(msg)
277
+
278
+ pattern = r"(\.|/|_|-|\s|[~0-9a-zA-Z]|[\u4e00-\u9fa5])+"
279
+ if not re.fullmatch(pattern, path):
280
+ msg = f"Invalid input path: {path}, contains invalid characters."
281
+ raise ProfilerPathErrorException(msg)
282
+
283
+ path_split_list = path.split("/")
284
+ for name in path_split_list:
285
+ if len(name) > cls.MAX_FILE_NAME_LENGTH:
286
+ msg = f"Length of input path {path} file name {name} exceeds the limit {cls.MAX_FILE_NAME_LENGTH}."
287
+ raise ProfilerPathErrorException(msg)
288
+
289
+ @classmethod
290
+ def get_ascend_ms_path_list(cls, input_path: str):
291
+ """
292
+ Function Description:
293
+ get valid profiler {}_ascend_ms_dir path list from input_path
294
+ Parameter:
295
+ input_path: The directory path from which to extract profiler parent paths.
296
+ Return:
297
+ A list containing the input path or its subdirectories that are valid profiler parents.
298
+ """
299
+ if os.path.isdir(input_path) and (cls.get_fwk_path(input_path) or cls.get_cann_path(input_path)):
300
+ return [input_path]
301
+ sub_dirs = os.listdir(os.path.realpath(input_path))
302
+ profiler_ascend_ms_path_list = []
303
+ for sub_dir in sub_dirs:
304
+ sub_path = os.path.join(input_path, sub_dir)
305
+ if not os.path.isdir(sub_path):
306
+ continue
307
+ if cls.get_fwk_path(sub_path) or cls.get_cann_path(sub_path):
308
+ profiler_ascend_ms_path_list.append(os.path.join(input_path, sub_dir))
309
+ return profiler_ascend_ms_path_list
310
+
311
+ @classmethod
312
+ def get_fwk_path(cls, input_path: str):
313
+ """
314
+ Function Description:
315
+ get valid framework path from input_path
316
+ Parameter:
317
+ input_path: the directory path to check whether exist valid FRAMEWORK path
318
+ Return:
319
+ The path to the FRAMEWORK directory if found, otherwise an empty string.
320
+ """
321
+ fwk_path = os.path.join(input_path, FileConstant.FRAMEWORK_DIR)
322
+ if os.path.isdir(fwk_path):
323
+ return fwk_path
324
+ return ""
325
+
326
+ @classmethod
327
+ def get_cann_path(cls, input_path: str):
328
+ """
329
+ Function Description:
330
+ get valid PROF_XXX path from input_path
331
+ Parameter:
332
+ input_path: the directory path to check valid PROF_XXX path
333
+ Return:
334
+ The path to the PROF_XXX directory if it matches the pattern and exists, otherwise an empty string.
335
+ """
336
+ sub_dirs = os.listdir(os.path.realpath(input_path))
337
+ for sub_dir in sub_dirs:
338
+ sub_path = os.path.join(input_path, sub_dir)
339
+ if os.path.isdir(sub_path) and re.match(FileConstant.CANN_FILE_REGEX, sub_dir):
340
+ return sub_path
341
+ return ""
342
+
343
+ @classmethod
344
+ def get_profiler_info_path(cls, ascend_ms_dir: str) -> str:
345
+ """
346
+ Function Description:
347
+ Get profiler_info_*.json path from ascend_ms_dir
348
+ Parameter:
349
+ ascend_ms_dir: the directory path of profiler data, eg: xxx_ascend_ms
350
+ Return:
351
+ str type profiler_info_*.json path
352
+ """
353
+ prof_info_path_pattern = os.path.join(ascend_ms_dir, "profiler_info_*.json")
354
+ prof_info_paths = glob.glob(prof_info_path_pattern)
355
+
356
+ if not prof_info_paths:
357
+ raise ValueError(f"Cannot find profiler_info.json in the {ascend_ms_dir}")
358
+
359
+ if len(prof_info_paths) > 1:
360
+ logger.warning(
361
+ f"There are more than one profiler_info.json in the {ascend_ms_dir}, "
362
+ f"use the first one: {prof_info_paths[0]}"
363
+ )
364
+ return prof_info_paths[0]
365
+
366
+ @classmethod
367
+ def get_real_path(cls, path: str):
368
+ expanded_path = os.path.expanduser(path)
369
+ if os.path.islink(path):
370
+ msg = f"Invalid input path is a soft link: {path}"
371
+ raise ProfilerPathErrorException(msg)
372
+ return os.path.realpath(expanded_path)
373
+
374
+ @classmethod
375
+ def check_cann_lib_valid(cls, path: str) -> bool:
376
+ """
377
+ Function Description:
378
+ check if cann lib path is valid
379
+ Parameter:
380
+ path: the cann lib path to check
381
+ Return:
382
+ bool: True if the path is valid, False otherwise
383
+ """
384
+ lib_path = os.path.realpath(path)
385
+ if not os.path.exists(lib_path):
386
+ return False
387
+ if os.path.isdir(lib_path) or os.path.islink(lib_path):
388
+ return False
389
+ if bool(os.stat(lib_path).st_mode & stat.S_IWOTH):
390
+ return False
391
+ if os.name == 'nt':
392
+ return False
393
+ if os.stat(path).st_uid == 0 or os.stat(path).st_uid == os.getuid():
394
+ return True
395
+ return False
@@ -0,0 +1,168 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Process bar."""
16
+ import os
17
+ import sys
18
+ import time
19
+ from typing import Iterable, Optional, Any
20
+ import threading
21
+
22
+
23
+ class ProcessBar:
24
+ """
25
+ A progress bar for tracking the progress of an iterable or a process with a known total.
26
+ """
27
+ BLANK_SPACE_NUM = 20
28
+ FINISH_TEXT = "Done"
29
+
30
+ def __init__(
31
+ self,
32
+ iterable: Optional[Iterable] = None,
33
+ desc: str = "",
34
+ bar_length: int = 20,
35
+ update_interval: float = 1.0,
36
+ ):
37
+ """
38
+ Initialize the ProcessBar.
39
+
40
+ Args:
41
+ iterable: An optional iterable to track progress.
42
+ desc: A description of the process being tracked.
43
+ bar_length: The length of the progress bar in characters.
44
+ update_interval: The minimum time interval between progress bar updates.
45
+ """
46
+ if not isinstance(iterable, Iterable):
47
+ raise ValueError("Must provide an iterable")
48
+
49
+ if not isinstance(desc, str):
50
+ raise ValueError("desc must be a string")
51
+
52
+ if not isinstance(bar_length, int):
53
+ raise ValueError("bar_length must be an integer")
54
+
55
+ if bar_length <= 0:
56
+ raise ValueError("bar_length must be greater than 0")
57
+
58
+ if not isinstance(update_interval, float):
59
+ raise ValueError("update_interval must be a float")
60
+
61
+ if update_interval < 0:
62
+ raise ValueError("update_interval must be greater than 0")
63
+
64
+ self.iterable: Iterable = iterable
65
+ self.total: int = len(iterable)
66
+ self.desc: str = f"[{os.getpid()}] {desc}"
67
+ self.bar_length: int = bar_length
68
+ self.update_interval: float = update_interval
69
+ self.current: int = 0
70
+ self.cur_item_name: Optional[str] = None
71
+ self.start_time: float = time.time()
72
+ self.last_update_time: float = self.start_time
73
+ self._stop_refresh = False
74
+ self._refresh_thread = None
75
+ self._start_auto_refresh()
76
+
77
+ def _start_auto_refresh(self) -> None:
78
+ """
79
+ Start auto refresh thread.
80
+ """
81
+ def refresh_loop():
82
+ while not self._stop_refresh:
83
+ if self.current > 0:
84
+ self._print_progress(time.time())
85
+ time.sleep(self.update_interval)
86
+
87
+ self._refresh_thread = threading.Thread(target=refresh_loop, daemon=True)
88
+ self._refresh_thread.start()
89
+
90
+ def update(self, n: int = 1, item_name: Optional[str] = None) -> None:
91
+ """
92
+ Update the progress bar.
93
+
94
+ Args:
95
+ n: The number of items or steps to increment the progress by.
96
+ item_name: The name of the current item being processed.
97
+ """
98
+ self.current += n
99
+ self.cur_item_name = item_name
100
+
101
+ def _print_progress(self, now: float) -> None:
102
+ """
103
+ Print the current progress to the console.
104
+
105
+ Args:
106
+ now: The current timestamp.
107
+ """
108
+ elapsed = now - self.start_time
109
+ if self.total > 0:
110
+ progress = min(1, self.current / self.total)
111
+ block = int(round(self.bar_length * progress))
112
+
113
+ text = (
114
+ f"\r{self.desc}: [{block * '#' + (self.bar_length - block) * ' '}] "
115
+ f"{self.current}/{self.total} {self.cur_item_name} "
116
+ f"Elapsed: {int(elapsed)}s"
117
+ )
118
+ # 添加额外的空格和回车来清除可能的残留字符
119
+ text = text + ' ' * self.BLANK_SPACE_NUM + '\r'
120
+ sys.stdout.write(text)
121
+ sys.stdout.flush()
122
+
123
+ def __iter__(self) -> Iterable[Any]:
124
+ """
125
+ Iterate over the items in the iterable, updating the progress bar for each item.
126
+
127
+ Yields:
128
+ The next item from the iterable.
129
+
130
+ Raises:
131
+ ValueError: If no iterable was provided during initialization.
132
+ """
133
+ if self.iterable is None:
134
+ raise ValueError("Must provide an iterable")
135
+ try:
136
+ iterator = iter(self.iterable)
137
+ # 预先获取第一个元素
138
+ try:
139
+ first_item = next(iterator)
140
+ except StopIteration:
141
+ return
142
+
143
+ # 初始化显示,显示0/total和第一个元素的名称
144
+ self.cur_item_name = first_item.__class__.__name__
145
+ self._print_progress(time.time())
146
+
147
+ # 处理第一个元素
148
+ yield first_item
149
+ self.update(item_name=first_item.__class__.__name__)
150
+ self._print_progress(time.time())
151
+
152
+ # 处理剩余元素
153
+ for item in iterator:
154
+ # 先更新当前要处理的元素名称
155
+ self.cur_item_name = item.__class__.__name__
156
+ self._print_progress(time.time())
157
+ yield item
158
+ self.update()
159
+
160
+ # 显示完成状态
161
+ self.cur_item_name = self.FINISH_TEXT
162
+ self._print_progress(time.time())
163
+ sys.stdout.write("\n")
164
+
165
+ finally:
166
+ self._stop_refresh = True
167
+ if self._refresh_thread:
168
+ self._refresh_thread.join()
@@ -28,9 +28,15 @@ class MultiProcessPool:
28
28
  self.porcess_list: List[Process] = []
29
29
  atexit.register(self.wait_all_job_finished)
30
30
 
31
- def add_async_job(self, func):
32
- """Add job and run in subprocess"""
33
- process = Process(target=func)
31
+ def add_async_job(self, func, *args, **kwargs):
32
+ """Add job and run in subprocess.
33
+
34
+ Args:
35
+ func: The function to be executed in subprocess.
36
+ args: The positional arguments to be passed to the function.
37
+ kwargs: The keyword arguments to be passed to the function.
38
+ """
39
+ process = Process(target=func, args=args, kwargs=kwargs)
34
40
  process.start()
35
41
  self.porcess_list.append(process)
36
42