mindspore 2.5.0__cp39-cp39-win_amd64.whl → 2.6.0rc1__cp39-cp39-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.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +6 -4
- mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -0
- mindspore/_checkparam.py +3 -33
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +19 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +22 -3
- mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
- mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
- mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
- mindspore/_extends/parse/parser.py +24 -193
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +97 -74
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +16 -11
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +4 -4
- mindspore/atlprov.dll +0 -0
- mindspore/avcodec-59.dll +0 -0
- mindspore/avdevice-59.dll +0 -0
- mindspore/avfilter-8.dll +0 -0
- mindspore/avformat-59.dll +0 -0
- mindspore/avutil-57.dll +0 -0
- mindspore/boost/__init__.py +2 -2
- mindspore/boost/base.py +3 -7
- mindspore/boost/boost_cell_wrapper.py +2 -2
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +4 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -1
- mindspore/common/_stub_tensor.py +5 -10
- mindspore/common/_tensor_cpp_method.py +1 -1
- mindspore/common/_tensor_docs.py +1915 -3287
- mindspore/common/api.py +341 -354
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +5 -2
- mindspore/common/dump.py +7 -5
- mindspore/common/file_system.py +3 -0
- mindspore/common/hook_handle.py +5 -3
- mindspore/common/initializer.py +10 -6
- mindspore/common/jit_begin_end.py +94 -0
- mindspore/common/jit_config.py +6 -1
- mindspore/common/jit_context.py +76 -0
- mindspore/common/jit_trace.py +378 -0
- mindspore/common/lazy_inline.py +2 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +106 -39
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +297 -714
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +47 -2
- mindspore/communication/comm_func.py +70 -53
- mindspore/communication/management.py +83 -17
- mindspore/context.py +214 -560
- mindspore/dataset/__init__.py +44 -20
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/core/config.py +3 -3
- mindspore/dataset/engine/cache_client.py +1 -1
- mindspore/dataset/engine/datasets.py +102 -120
- mindspore/dataset/engine/datasets_audio.py +22 -22
- mindspore/dataset/engine/datasets_standard_format.py +43 -24
- mindspore/dataset/engine/datasets_text.py +78 -85
- mindspore/dataset/engine/datasets_user_defined.py +108 -76
- mindspore/dataset/engine/datasets_vision.py +111 -108
- mindspore/dataset/engine/iterators.py +5 -3
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/samplers.py +279 -57
- mindspore/dataset/engine/serializer_deserializer.py +2 -1
- mindspore/dataset/engine/validators.py +10 -0
- mindspore/dataset/text/__init__.py +7 -6
- mindspore/dataset/text/transforms.py +6 -5
- mindspore/dataset/text/utils.py +3 -3
- mindspore/dataset/transforms/__init__.py +0 -9
- mindspore/dataset/transforms/transforms.py +3 -3
- mindspore/dataset/utils/browse_dataset.py +1 -1
- mindspore/dataset/vision/__init__.py +2 -9
- mindspore/dataset/vision/transforms.py +202 -158
- mindspore/dataset/vision/utils.py +7 -5
- mindspore/device_context/ascend/op_debug.py +60 -1
- mindspore/device_context/ascend/op_tuning.py +0 -4
- mindspore/device_manager.py +39 -3
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +22 -26
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +4 -0
- mindspore/experimental/optim/adamax.py +4 -4
- mindspore/experimental/optim/adamw.py +4 -0
- mindspore/experimental/optim/asgd.py +1 -1
- mindspore/experimental/optim/lr_scheduler.py +40 -22
- mindspore/experimental/optim/radam.py +5 -5
- mindspore/experimental/optim/rprop.py +1 -1
- mindspore/experimental/optim/sgd.py +1 -1
- mindspore/hal/contiguous_tensors_handle.py +6 -10
- mindspore/hal/device.py +55 -81
- mindspore/hal/event.py +38 -55
- mindspore/hal/memory.py +93 -144
- mindspore/hal/stream.py +81 -125
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +40 -2
- mindspore/mindrecord/__init__.py +20 -7
- mindspore/mindspore_backend_common.dll +0 -0
- mindspore/mindspore_backend_manager.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_dump.dll +0 -0
- mindspore/mindspore_frontend.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_memory_pool.dll +0 -0
- mindspore/mindspore_ms_backend.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
- mindspore/mindspore_ops_kernel_common.dll +0 -0
- mindspore/mindspore_profiler.dll +0 -0
- mindspore/mindspore_pyboost.dll +0 -0
- mindspore/mindspore_pynative.dll +0 -0
- mindspore/mindspore_res_manager.dll +0 -0
- mindspore/mindspore_runtime_pipeline.dll +0 -0
- mindspore/mint/__init__.py +131 -700
- mindspore/mint/distributed/__init__.py +5 -1
- mindspore/mint/distributed/distributed.py +194 -109
- mindspore/mint/linalg/__init__.py +2 -0
- mindspore/mint/nn/__init__.py +280 -18
- mindspore/mint/nn/functional.py +282 -64
- mindspore/mint/nn/layer/__init__.py +4 -0
- mindspore/mint/nn/layer/_functions.py +7 -3
- mindspore/mint/nn/layer/activation.py +120 -13
- mindspore/mint/nn/layer/conv.py +218 -24
- mindspore/mint/nn/layer/normalization.py +15 -16
- mindspore/mint/nn/layer/padding.py +1 -1
- mindspore/mint/nn/layer/pooling.py +66 -1
- mindspore/mint/optim/__init__.py +2 -1
- mindspore/mint/optim/sgd.py +171 -0
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/nn/__init__.py +4 -1
- mindspore/nn/cell.py +1250 -176
- mindspore/nn/layer/activation.py +23 -21
- mindspore/nn/layer/basic.py +22 -16
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +22 -17
- mindspore/nn/layer/embedding.py +9 -8
- mindspore/nn/layer/normalization.py +48 -42
- mindspore/nn/layer/pooling.py +75 -31
- mindspore/nn/layer/transformer.py +11 -10
- mindspore/nn/learning_rate_schedule.py +4 -2
- mindspore/nn/loss/loss.py +27 -19
- mindspore/nn/optim/ada_grad.py +6 -5
- mindspore/nn/optim/adadelta.py +9 -7
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +16 -12
- mindspore/nn/optim/adamax.py +8 -7
- mindspore/nn/optim/adasum.py +5 -5
- mindspore/nn/optim/asgd.py +1 -1
- mindspore/nn/optim/ftrl.py +11 -9
- mindspore/nn/optim/lamb.py +1 -1
- mindspore/nn/optim/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +2 -2
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +9 -7
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- mindspore/nn/probability/bijector/bijector.py +17 -11
- mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
- mindspore/nn/probability/bijector/invert.py +2 -2
- mindspore/nn/probability/bijector/scalar_affine.py +3 -3
- mindspore/nn/probability/bijector/softplus.py +3 -2
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +1 -1
- mindspore/nn/probability/distribution/cauchy.py +4 -2
- mindspore/nn/probability/distribution/exponential.py +6 -7
- mindspore/nn/probability/distribution/gamma.py +2 -2
- mindspore/nn/probability/distribution/gumbel.py +2 -2
- mindspore/nn/probability/distribution/half_normal.py +5 -3
- mindspore/nn/probability/distribution/logistic.py +5 -3
- mindspore/nn/probability/distribution/poisson.py +1 -1
- mindspore/nn/probability/distribution/uniform.py +5 -3
- mindspore/nn/reinforcement/_tensors_queue.py +1 -1
- mindspore/nn/reinforcement/tensor_array.py +1 -1
- mindspore/nn/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +178 -117
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +3 -3
- mindspore/numpy/array_creations.py +3 -3
- mindspore/numpy/array_ops.py +1 -1
- mindspore/numpy/math_ops.py +4 -4
- mindspore/numpy/utils.py +1 -2
- mindspore/numpy/utils_const.py +1 -2
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +3 -2
- mindspore/ops/_grad_experimental/grad_comm_ops.py +18 -3
- mindspore/ops/_grad_experimental/grad_debug_ops.py +8 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
- mindspore/ops/_register_for_op.py +0 -11
- mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
- mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -4
- mindspore/ops/_vmap/vmap_array_ops.py +7 -6
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +2 -1
- mindspore/ops/_vmap/vmap_math_ops.py +4 -7
- mindspore/ops/_vmap/vmap_nn_ops.py +9 -8
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +102 -49
- mindspore/ops/auto_generate/gen_extend_func.py +281 -135
- mindspore/ops/auto_generate/gen_ops_def.py +2574 -2326
- mindspore/ops/auto_generate/gen_ops_prim.py +8566 -2755
- mindspore/ops/auto_generate/pyboost_inner_prim.py +106 -76
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +19 -24
- mindspore/ops/composite/math_ops.py +6 -16
- mindspore/ops/composite/multitype_ops/__init__.py +5 -2
- mindspore/ops/composite/multitype_ops/_compile_utils.py +2 -3
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
- mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
- mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
- mindspore/ops/composite/multitype_ops/pow_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
- mindspore/ops/function/__init__.py +28 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +1629 -2345
- mindspore/ops/function/clip_func.py +38 -45
- mindspore/ops/function/debug_func.py +36 -44
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +1 -1
- mindspore/ops/function/linalg_func.py +46 -78
- mindspore/ops/function/math_func.py +3035 -3705
- mindspore/ops/function/nn_func.py +676 -241
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +17 -30
- mindspore/ops/function/random_func.py +204 -361
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +5 -5
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +24 -17
- mindspore/ops/functional.py +6 -4
- mindspore/ops/functional_overload.py +547 -4
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +10 -5
- mindspore/ops/operations/_custom_ops_utils.py +247 -0
- mindspore/ops/operations/_grad_ops.py +1 -10
- mindspore/ops/operations/_inner_ops.py +5 -76
- mindspore/ops/operations/_ms_kernel.py +4 -10
- mindspore/ops/operations/_rl_inner_ops.py +1 -1
- mindspore/ops/operations/_scalar_ops.py +3 -2
- mindspore/ops/operations/_sequence_ops.py +1 -1
- mindspore/ops/operations/_tensor_array.py +1 -1
- mindspore/ops/operations/array_ops.py +37 -22
- mindspore/ops/operations/comm_ops.py +150 -107
- mindspore/ops/operations/custom_ops.py +221 -23
- mindspore/ops/operations/debug_ops.py +115 -16
- mindspore/ops/operations/inner_ops.py +1 -1
- mindspore/ops/operations/linalg_ops.py +1 -58
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +746 -79
- mindspore/ops/operations/math_ops.py +21 -18
- mindspore/ops/operations/nn_ops.py +65 -191
- mindspore/ops/operations/other_ops.py +62 -9
- mindspore/ops/operations/random_ops.py +13 -7
- mindspore/ops/operations/reshard_ops.py +1 -1
- mindspore/ops/operations/sparse_ops.py +2 -2
- mindspore/ops/primitive.py +43 -32
- mindspore/ops/tensor_method.py +232 -13
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/{aclnn_kernel_register_auto_cc_generator.py → aclnn/aclnn_kernel_register_auto_cc_generator.py} +43 -18
- mindspore/ops_generate/{gen_aclnn_implement.py → aclnn/gen_aclnn_implement.py} +49 -51
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/{add_tensor_docs_generator.py → api/add_tensor_docs_generator.py} +9 -7
- mindspore/ops_generate/{cpp_create_prim_instance_helper_generator.py → api/cpp_create_prim_instance_helper_generator.py} +6 -9
- mindspore/ops_generate/{functional_map_cpp_generator.py → api/functional_map_cpp_generator.py} +25 -12
- mindspore/ops_generate/{functional_overload_py_generator.py → api/functional_overload_py_generator.py} +8 -6
- mindspore/ops_generate/{functions_cc_generator.py → api/functions_cc_generator.py} +14 -10
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/{op_api_proto.py → api/op_api_proto.py} +98 -69
- mindspore/ops_generate/{tensor_func_reg_cpp_generator.py → api/tensor_func_reg_cpp_generator.py} +82 -43
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/{gen_utils.py → common/gen_utils.py} +72 -19
- mindspore/ops_generate/{op_proto.py → common/op_proto.py} +64 -1
- mindspore/ops_generate/{template.py → common/template.py} +96 -84
- mindspore/ops_generate/gen_ops.py +23 -325
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/{lite_ops_cpp_generator.py → op_def/lite_ops_cpp_generator.py} +47 -11
- mindspore/ops_generate/{ops_def_cc_generator.py → op_def/ops_def_cc_generator.py} +18 -7
- mindspore/ops_generate/{ops_def_h_generator.py → op_def/ops_def_h_generator.py} +5 -5
- mindspore/ops_generate/{ops_name_h_generator.py → op_def/ops_name_h_generator.py} +30 -15
- mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
- mindspore/ops_generate/op_def_py/__init__.py +0 -0
- mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
- mindspore/ops_generate/{op_def_py_generator.py → op_def_py/op_def_py_generator.py} +6 -5
- mindspore/ops_generate/{op_prim_py_generator.py → op_def_py/op_prim_py_generator.py} +24 -15
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/{auto_grad_impl_cc_generator.py → pyboost/auto_grad_impl_cc_generator.py} +11 -7
- mindspore/ops_generate/{auto_grad_reg_cc_generator.py → pyboost/auto_grad_reg_cc_generator.py} +7 -7
- mindspore/ops_generate/{gen_pyboost_func.py → pyboost/gen_pyboost_func.py} +40 -16
- mindspore/ops_generate/{op_template_parser.py → pyboost/op_template_parser.py} +105 -24
- mindspore/ops_generate/{pyboost_functions_cpp_generator.py → pyboost/pyboost_functions_cpp_generator.py} +55 -18
- mindspore/ops_generate/{pyboost_functions_h_generator.py → pyboost/pyboost_functions_h_generator.py} +42 -10
- mindspore/ops_generate/{pyboost_functions_py_generator.py → pyboost/pyboost_functions_py_generator.py} +6 -6
- mindspore/ops_generate/{pyboost_grad_function_cpp_generator.py → pyboost/pyboost_grad_function_cpp_generator.py} +11 -10
- mindspore/ops_generate/{pyboost_inner_prim_generator.py → pyboost/pyboost_inner_prim_generator.py} +8 -7
- mindspore/ops_generate/{pyboost_native_grad_functions_generator.py → pyboost/pyboost_native_grad_functions_generator.py} +14 -10
- mindspore/ops_generate/{pyboost_op_cpp_code_generator.py → pyboost/pyboost_op_cpp_code_generator.py} +140 -53
- mindspore/ops_generate/{pyboost_overload_functions_cpp_generator.py → pyboost/pyboost_overload_functions_cpp_generator.py} +28 -15
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +88 -4
- mindspore/ops_generate/resources/__init__.py +0 -0
- mindspore/ops_generate/resources/resource_list.py +30 -0
- mindspore/ops_generate/resources/resource_loader.py +36 -0
- mindspore/ops_generate/resources/resource_manager.py +64 -0
- mindspore/ops_generate/resources/yaml_loader.py +88 -0
- mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
- mindspore/parallel/__init__.py +6 -2
- mindspore/parallel/_auto_parallel_context.py +133 -6
- mindspore/parallel/_cell_wrapper.py +130 -15
- mindspore/parallel/_parallel_serialization.py +95 -4
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +198 -25
- mindspore/parallel/algo_parameter_config.py +3 -3
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +656 -37
- mindspore/parallel/cluster/process_entity/_api.py +151 -19
- mindspore/parallel/cluster/run.py +1 -1
- mindspore/parallel/function/__init__.py +24 -0
- mindspore/parallel/function/reshard_func.py +259 -0
- mindspore/parallel/nn/__init__.py +25 -0
- mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
- mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
- mindspore/parallel/parameter_broadcast.py +24 -13
- mindspore/parallel/shard.py +137 -61
- mindspore/parallel/transform_safetensors.py +287 -95
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +9 -5
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +6 -2
- mindspore/profiler/analysis/parser/ms_framework_parser.py +4 -4
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -4
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +22 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +241 -86
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +41 -2
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +33 -35
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +7 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +8 -3
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +141 -30
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +5 -6
- mindspore/profiler/common/ascend_msprof_exporter.py +5 -4
- mindspore/profiler/common/constant.py +12 -0
- mindspore/profiler/common/msprof_cmd_tool.py +42 -23
- mindspore/profiler/common/path_manager.py +24 -0
- mindspore/profiler/common/profiler_context.py +26 -2
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_parameters.py +59 -18
- mindspore/profiler/common/profiler_path_manager.py +66 -7
- mindspore/profiler/dynamic_profiler.py +112 -79
- mindspore/profiler/envprofiler.py +26 -1
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +57 -14
- mindspore/profiler/platform/npu_profiler.py +33 -7
- mindspore/profiler/profiler.py +541 -45
- mindspore/profiler/profiler_action_controller.py +1 -1
- mindspore/profiler/profiler_interface.py +4 -0
- mindspore/profiler/schedule.py +57 -22
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +1 -1
- mindspore/run_check/_check_version.py +25 -14
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +2 -2
- mindspore/runtime/executor.py +40 -11
- mindspore/runtime/memory.py +25 -8
- mindspore/safeguard/rewrite_obfuscation.py +12 -9
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/__init__.py +8 -8
- mindspore/train/_utils.py +35 -7
- mindspore/train/amp.py +1 -1
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +24 -40
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_flops_collector.py +2 -3
- mindspore/train/callback/_history.py +7 -4
- mindspore/train/callback/_lambda_callback.py +2 -2
- mindspore/train/callback/_landscape.py +0 -3
- mindspore/train/callback/_loss_monitor.py +2 -1
- mindspore/train/callback/_on_request_exit.py +6 -5
- mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
- mindspore/train/callback/_summary_collector.py +8 -13
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +179 -103
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +4 -5
- mindspore/train/loss_scale_manager.py +8 -7
- mindspore/train/metrics/accuracy.py +3 -3
- mindspore/train/metrics/confusion_matrix.py +9 -9
- mindspore/train/metrics/error.py +3 -3
- mindspore/train/metrics/hausdorff_distance.py +4 -4
- mindspore/train/metrics/mean_surface_distance.py +3 -3
- mindspore/train/metrics/metric.py +0 -12
- mindspore/train/metrics/occlusion_sensitivity.py +4 -2
- mindspore/train/metrics/precision.py +8 -6
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +19 -12
- mindspore/train/model.py +176 -103
- mindspore/train/serialization.py +246 -988
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +3 -2
- mindspore/utils/dryrun.py +4 -2
- mindspore/utils/hooks.py +81 -0
- mindspore/utils/utils.py +138 -4
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +2 -1
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +483 -438
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -136
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_constants.py +0 -190
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/ops_primitive_h_generator.py +0 -81
- /mindspore/ops_generate/{base_generator.py → common/base_generator.py} +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
mindspore/ops_generate/{pyboost_op_cpp_code_generator.py → pyboost/pyboost_op_cpp_code_generator.py}
RENAMED
|
@@ -21,13 +21,15 @@ for different devices (Ascend, CPU, GPU) and manages residual files associated w
|
|
|
21
21
|
import os
|
|
22
22
|
import re
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
import
|
|
26
|
-
|
|
27
|
-
from
|
|
28
|
-
from
|
|
29
|
-
|
|
30
|
-
from
|
|
24
|
+
import common.template as template
|
|
25
|
+
import common.gen_constants as K
|
|
26
|
+
from common.gen_utils import save_file
|
|
27
|
+
from common.op_proto import OpProto
|
|
28
|
+
from common.base_generator import BaseGenerator
|
|
29
|
+
|
|
30
|
+
from .pyboost_utils import is_cube, AclnnUtils, get_return_type, merge_strings_by_chunk_size, is_op_multi_output, \
|
|
31
|
+
chunk_list
|
|
32
|
+
from .op_template_parser import OpTemplateParser
|
|
31
33
|
|
|
32
34
|
|
|
33
35
|
class PyboostCommonOpHeaderGenerator(BaseGenerator):
|
|
@@ -66,7 +68,7 @@ class PyboostCommonOpHeaderGenerator(BaseGenerator):
|
|
|
66
68
|
call_args=call_args_with_type,
|
|
67
69
|
return_type=cpp_func_return,
|
|
68
70
|
output_is_tuple=output_is_tuple)
|
|
69
|
-
save_path = os.path.join(work_path, f"{K.
|
|
71
|
+
save_path = os.path.join(work_path, f"{K.MS_PYBOOST_BASE_PATH}/auto_generate/")
|
|
70
72
|
file_name = f"{op_proto.op_name}.h"
|
|
71
73
|
save_file(save_path, file_name, pyboost_op_header_str)
|
|
72
74
|
|
|
@@ -93,9 +95,11 @@ class PyboostOpHeaderGenerator(BaseGenerator):
|
|
|
93
95
|
"gpu": template.PYBOOST_GPU_OP_HEADER_TEMPLATE,
|
|
94
96
|
"cpu": template.PYBOOST_CPU_OP_HEADER_TEMPLATE}
|
|
95
97
|
if device not in template_dict:
|
|
96
|
-
raise ValueError(
|
|
98
|
+
raise ValueError(
|
|
99
|
+
f"Device must be ascend, gpu, or cpu, {device} is not supported")
|
|
97
100
|
self.PYBOOST_OP_HEADER_TEMPLATE = template_dict[device]
|
|
98
101
|
self.code_generate_path = f"{K.MS_OPS_KERNEL_PATH}/{device}/pyboost/auto_generate/"
|
|
102
|
+
self.hccl_code_generate_path = "mindspore/ccsrc/plugin/device/ascend/kernel/hccl/pyboost/auto_generate/"
|
|
99
103
|
self.device = device
|
|
100
104
|
|
|
101
105
|
def generate(self, work_path, op_protos):
|
|
@@ -114,6 +118,7 @@ class PyboostOpHeaderGenerator(BaseGenerator):
|
|
|
114
118
|
continue
|
|
115
119
|
if getattr(op_proto.op_dispatch, self.device) == 'None':
|
|
116
120
|
continue
|
|
121
|
+
is_ascend_comm_op = op_proto.op_dispatch.is_comm_op and self.device == 'ascend'
|
|
117
122
|
op_parser = OpTemplateParser(op_proto)
|
|
118
123
|
op_name_str = op_proto.op_class.name
|
|
119
124
|
call_args_with_type = op_parser.parse_call_args_with_types()
|
|
@@ -125,7 +130,7 @@ class PyboostOpHeaderGenerator(BaseGenerator):
|
|
|
125
130
|
call_args_with_type=call_args_with_type,
|
|
126
131
|
return_type=cpp_func_return)
|
|
127
132
|
|
|
128
|
-
save_path = os.path.join(work_path, self.code_generate_path)
|
|
133
|
+
save_path = os.path.join(work_path, self.code_generate_path if not is_ascend_comm_op else self.hccl_code_generate_path)
|
|
129
134
|
file_name = f"{op_proto.op_name}.h"
|
|
130
135
|
save_file(save_path, file_name, pyboost_op_str)
|
|
131
136
|
|
|
@@ -164,14 +169,17 @@ class PyboostOpCppGenerator:
|
|
|
164
169
|
PYBOOST_SINGLE_OP_SOURCE_TEMPLATE = template.PYBOOST_GPU_SINGLE_OP_SOURCE_TEMPLATE
|
|
165
170
|
gen_path = f"{K.MS_OPS_KERNEL_PATH}/gpu/pyboost/auto_generate/"
|
|
166
171
|
else:
|
|
167
|
-
raise ValueError(
|
|
172
|
+
raise ValueError(
|
|
173
|
+
f"Device must be ascend, gpu, or cpu, {device} is not supported")
|
|
168
174
|
self.PYBOOST_CUSTOMIZE_CALL_TEMPLATE = PYBOOST_CUSTOMIZE_CALL_TEMPLATE
|
|
169
175
|
self.PYBOOST_SINGLE_OP_HEADER_TEMPLATE = PYBOOST_SINGLE_OP_HEADER_TEMPLATE
|
|
170
176
|
self.PYBOOST_SINGLE_OP_SOURCE_TEMPLATE = PYBOOST_SINGLE_OP_SOURCE_TEMPLATE
|
|
177
|
+
self.PYBOOST_SINGLE_HCLL_OP_HEADER_TEMPLATE = template.PYBOOST_ASCEND_SINGLE_HCLL_OP_HEADER_TEMPLATE
|
|
171
178
|
self.gen_path = gen_path
|
|
172
179
|
self.device = device
|
|
173
180
|
|
|
174
|
-
def generate_customize_op_cpp_code(self, op_protos, merge_op_header, merge_op_function
|
|
181
|
+
def generate_customize_op_cpp_code(self, op_protos, merge_op_header, merge_op_function, merge_op_inc,
|
|
182
|
+
merge_op_hccl_header=None, merge_op_hccl_function=None, merge_op_hccl_inc=None):
|
|
175
183
|
"""
|
|
176
184
|
Generate C++ code for PyBoost operations using the provided operation prototypes.
|
|
177
185
|
|
|
@@ -191,6 +199,7 @@ class PyboostOpCppGenerator:
|
|
|
191
199
|
continue
|
|
192
200
|
if getattr(op_proto.op_dispatch, self.device) == 'None':
|
|
193
201
|
continue
|
|
202
|
+
is_ascend_comm_op = op_proto.op_dispatch.is_comm_op and self.device == 'ascend'
|
|
194
203
|
op_parser = OpTemplateParser(op_proto)
|
|
195
204
|
call_args = op_parser.parse_original_call_args(op_proto.op_args)
|
|
196
205
|
call_args_with_type = op_parser.parse_call_args_with_types()
|
|
@@ -205,20 +214,40 @@ class PyboostOpCppGenerator:
|
|
|
205
214
|
call_impl = self.PYBOOST_CUSTOMIZE_CALL_TEMPLATE.replace(
|
|
206
215
|
call_args=call_args,
|
|
207
216
|
return_values=call_func_outputs,
|
|
208
|
-
customize_func=getattr(
|
|
217
|
+
customize_func=getattr(
|
|
218
|
+
op_proto.op_dispatch, self.device) + "Customize",
|
|
209
219
|
check_expression=check_inplace_func,
|
|
210
220
|
)
|
|
211
|
-
|
|
212
|
-
f
|
|
221
|
+
if is_ascend_comm_op and ((merge_op_hccl_header is None) or (merge_op_hccl_function is None)):
|
|
222
|
+
raise ValueError(f"merge_op_hccl_header and merge_op_hccl_function must be provided for comm op {operator_name}")
|
|
223
|
+
|
|
224
|
+
if is_ascend_comm_op:
|
|
225
|
+
customize_include = \
|
|
226
|
+
f'#include "mindspore/ccsrc/plugin/device/ascend/kernel/hccl/pyboost/{operator_name.lower()}.h"\n'
|
|
227
|
+
else:
|
|
228
|
+
customize_include = \
|
|
229
|
+
f'#include "{K.MS_OPS_KERNEL_PATH}/{self.device}/pyboost/customize/{operator_name.lower()}.h"\n'
|
|
230
|
+
|
|
213
231
|
register_custom = self._get_register_custom_kernel(op_proto)
|
|
214
232
|
cpp_func_return = _generate_cpp_func_return(op_proto)
|
|
215
|
-
|
|
233
|
+
if is_ascend_comm_op:
|
|
234
|
+
merge_op_hccl_header.append(self.PYBOOST_SINGLE_HCLL_OP_HEADER_TEMPLATE.replace(operator_name=operator_name,
|
|
216
235
|
customize_include=customize_include))
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
236
|
+
merge_op_hccl_function.append(
|
|
237
|
+
self.PYBOOST_SINGLE_OP_SOURCE_TEMPLATE.replace(op_name=op_name_str,
|
|
238
|
+
call_args_with_type=call_args_with_type,
|
|
239
|
+
return_type=cpp_func_return, call_impl=call_impl,
|
|
240
|
+
register_custom_kernel=register_custom))
|
|
241
|
+
merge_op_hccl_inc.append(op_name_str)
|
|
242
|
+
else:
|
|
243
|
+
merge_op_header.append(self.PYBOOST_SINGLE_OP_HEADER_TEMPLATE.replace(operator_name=operator_name,
|
|
244
|
+
customize_include=customize_include))
|
|
245
|
+
merge_op_function.append(
|
|
246
|
+
self.PYBOOST_SINGLE_OP_SOURCE_TEMPLATE.replace(op_name=op_name_str,
|
|
247
|
+
call_args_with_type=call_args_with_type,
|
|
248
|
+
return_type=cpp_func_return, call_impl=call_impl,
|
|
249
|
+
register_custom_kernel=register_custom))
|
|
250
|
+
merge_op_inc.append(op_name_str)
|
|
222
251
|
|
|
223
252
|
def _get_register_custom_kernel(self, op_proto: OpProto):
|
|
224
253
|
"""
|
|
@@ -237,7 +266,8 @@ class PyboostOpCppGenerator:
|
|
|
237
266
|
elif self.device == 'gpu':
|
|
238
267
|
register_custom_kernel = f"MS_REG_PYBOOST_GPU_CUSTOM_KERNEL({op_proto.op_class.name});"
|
|
239
268
|
else:
|
|
240
|
-
raise ValueError(
|
|
269
|
+
raise ValueError(
|
|
270
|
+
f"Device must be ascend, gpu, or cpu, {self.device} is not supported")
|
|
241
271
|
return register_custom_kernel
|
|
242
272
|
|
|
243
273
|
|
|
@@ -275,14 +305,15 @@ class PyboostViewOpCppGenerator:
|
|
|
275
305
|
PYBOOST_SINGLE_OP_SOURCE_TEMPLATE = template.PYBOOST_GPU_SINGLE_OP_SOURCE_TEMPLATE
|
|
276
306
|
gen_path = f"{K.MS_OPS_KERNEL_PATH}/gpu/pyboost/auto_generate/"
|
|
277
307
|
else:
|
|
278
|
-
raise ValueError(
|
|
308
|
+
raise ValueError(
|
|
309
|
+
f"Device must be ascend, gpu, or cpu, {device} is not supported")
|
|
279
310
|
self.PYBOOST_VIEW_CALL_TEMPLATE = PYBOOST_VIEW_CALL_TEMPLATE
|
|
280
311
|
self.PYBOOST_SINGLE_OP_HEADER_TEMPLATE = PYBOOST_SINGLE_OP_HEADER_TEMPLATE
|
|
281
312
|
self.PYBOOST_SINGLE_OP_SOURCE_TEMPLATE = PYBOOST_SINGLE_OP_SOURCE_TEMPLATE
|
|
282
313
|
self.gen_path = gen_path
|
|
283
314
|
self.device = device
|
|
284
315
|
|
|
285
|
-
def generate_view_op_cpp_code(self, op_protos, merge_op_header, merge_op_function):
|
|
316
|
+
def generate_view_op_cpp_code(self, op_protos, merge_op_header, merge_op_function, ascend_merge_op_inc):
|
|
286
317
|
"""
|
|
287
318
|
Generate C++ code for view operations in PyBoost.
|
|
288
319
|
|
|
@@ -327,6 +358,7 @@ class PyboostViewOpCppGenerator:
|
|
|
327
358
|
return_type=cpp_func_return,
|
|
328
359
|
call_impl=call_impl,
|
|
329
360
|
register_custom_kernel=""))
|
|
361
|
+
ascend_merge_op_inc.append(op_proto.op_class.name)
|
|
330
362
|
|
|
331
363
|
|
|
332
364
|
class AclnnOpCppCodeGenerator:
|
|
@@ -366,16 +398,18 @@ class AclnnOpCppCodeGenerator:
|
|
|
366
398
|
PYBOOST_SINGLE_OP_SOURCE_TEMPLATE = template.PYBOOST_GPU_SINGLE_OP_SOURCE_TEMPLATE
|
|
367
399
|
gen_path = f"{K.MS_OPS_KERNEL_PATH}/gpu/pyboost/auto_generate/"
|
|
368
400
|
else:
|
|
369
|
-
raise ValueError(
|
|
401
|
+
raise ValueError(
|
|
402
|
+
f"Device must be ascend, gpu, or cpu, {device} is not supported")
|
|
370
403
|
self.PYBOOST_CALL_TEMPLATE = PYBOOST_CALL_TEMPLATE
|
|
371
404
|
self.PYBOOST_SINGLE_OP_HEADER_TEMPLATE = template.Template(
|
|
372
405
|
'#include "kernel/${device}/pyboost/auto_generate/${operator_name}.h"\n'
|
|
373
406
|
)
|
|
407
|
+
|
|
374
408
|
self.PYBOOST_SINGLE_OP_SOURCE_TEMPLATE = PYBOOST_SINGLE_OP_SOURCE_TEMPLATE
|
|
375
409
|
self.gen_path = gen_path
|
|
376
410
|
self.device = device
|
|
377
411
|
|
|
378
|
-
def generate_aclnn_op_cpp_code(self, op_protos, merge_op_header, merge_op_function):
|
|
412
|
+
def generate_aclnn_op_cpp_code(self, op_protos, merge_op_header, merge_op_function, ascend_merge_op_inc):
|
|
379
413
|
"""
|
|
380
414
|
Generate C++ code for ACLNN operations in PyBoost.
|
|
381
415
|
|
|
@@ -404,10 +438,12 @@ class AclnnOpCppCodeGenerator:
|
|
|
404
438
|
aclnn_name = AclnnUtils.get_aclnn_interface(op_proto.op_class.name)
|
|
405
439
|
|
|
406
440
|
call_args_tensor = op_parser.get_call_args_tensor()
|
|
407
|
-
create_input_address = self._generate_create_input_address(
|
|
441
|
+
create_input_address = self._generate_create_input_address(
|
|
442
|
+
op_parser)
|
|
408
443
|
malloc_inputs = self._generate_malloc_input(op_parser)
|
|
409
444
|
op_outputs, call_func_outputs = op_parser.generate_pyboost_outputs()
|
|
410
|
-
get_inputs_kernel_tensors = self._generate_get_inputs_kernel_tensors(
|
|
445
|
+
get_inputs_kernel_tensors = self._generate_get_inputs_kernel_tensors(
|
|
446
|
+
op_parser)
|
|
411
447
|
|
|
412
448
|
cube_math_type, get_cube_math_type = '', ''
|
|
413
449
|
if self.device == 'ascend' and is_cube(op_proto.op_class.name):
|
|
@@ -456,6 +492,7 @@ class AclnnOpCppCodeGenerator:
|
|
|
456
492
|
return_type=cpp_func_return,
|
|
457
493
|
call_impl=call_impl,
|
|
458
494
|
register_custom_kernel=''))
|
|
495
|
+
ascend_merge_op_inc.append(op_proto.op_class.name)
|
|
459
496
|
|
|
460
497
|
def _generate_tensor_cpu_cast_input_code(self, op_parser: OpTemplateParser):
|
|
461
498
|
"""
|
|
@@ -573,6 +610,7 @@ class PyboostOpFunctionGenerator(BaseGenerator):
|
|
|
573
610
|
self.ascend_gen_path = f"{K.MS_OPS_KERNEL_PATH}/ascend/pyboost/auto_generate/"
|
|
574
611
|
self.cpu_gen_path = f"{K.MS_OPS_KERNEL_PATH}/cpu/pyboost/auto_generate/"
|
|
575
612
|
self.gpu_gen_path = f"{K.MS_OPS_KERNEL_PATH}/gpu/pyboost/auto_generate/"
|
|
613
|
+
self.hccl_gen_path = "mindspore/ccsrc/plugin/device/ascend/kernel/hccl/pyboost/auto_generate/"
|
|
576
614
|
|
|
577
615
|
def generate(self, work_path, op_protos):
|
|
578
616
|
"""
|
|
@@ -607,27 +645,52 @@ class PyboostOpFunctionGenerator(BaseGenerator):
|
|
|
607
645
|
"""
|
|
608
646
|
ascend_merge_op_header = []
|
|
609
647
|
ascend_merge_op_function = []
|
|
648
|
+
hccl_merge_op_header = []
|
|
649
|
+
hccl_merge_op_function = []
|
|
650
|
+
ascend_merge_op_inc = []
|
|
651
|
+
ascend_merge_op_hccl_inc = []
|
|
610
652
|
self.ascend_op_cpp_generator.generate_customize_op_cpp_code(op_protos, ascend_merge_op_header,
|
|
611
|
-
ascend_merge_op_function
|
|
653
|
+
ascend_merge_op_function, ascend_merge_op_inc,
|
|
654
|
+
hccl_merge_op_header, hccl_merge_op_function,
|
|
655
|
+
ascend_merge_op_hccl_inc)
|
|
612
656
|
self.ascend_view_op_cpp_generator.generate_view_op_cpp_code(op_protos, ascend_merge_op_header,
|
|
613
|
-
ascend_merge_op_function
|
|
657
|
+
ascend_merge_op_function,
|
|
658
|
+
ascend_merge_op_inc)
|
|
614
659
|
self.ascend_aclnn_cpp_generator.generate_aclnn_op_cpp_code(op_protos, ascend_merge_op_header,
|
|
615
|
-
ascend_merge_op_function
|
|
660
|
+
ascend_merge_op_function,
|
|
661
|
+
ascend_merge_op_inc)
|
|
616
662
|
|
|
617
|
-
ascend_op_header_merge_by_chunk_size = merge_strings_by_chunk_size(
|
|
618
|
-
|
|
663
|
+
ascend_op_header_merge_by_chunk_size = merge_strings_by_chunk_size(
|
|
664
|
+
ascend_merge_op_header, chunk_size=120)
|
|
665
|
+
ascend_op_function_merge_by_chunk_size = merge_strings_by_chunk_size(
|
|
666
|
+
ascend_merge_op_function, chunk_size=120)
|
|
667
|
+
op_inc_list = chunk_list(ascend_merge_op_inc, n=120)
|
|
619
668
|
|
|
620
669
|
new_gen_num = len(ascend_op_header_merge_by_chunk_size)
|
|
621
|
-
self._delete_residual_merged_ops_files(os.path.join(
|
|
670
|
+
self._delete_residual_merged_ops_files(os.path.join(
|
|
671
|
+
work_path, self.ascend_gen_path), new_gen_num)
|
|
622
672
|
|
|
623
673
|
for i, op_header, op_function in zip(range(len(ascend_op_header_merge_by_chunk_size)),
|
|
624
674
|
ascend_op_header_merge_by_chunk_size,
|
|
625
675
|
ascend_op_function_merge_by_chunk_size):
|
|
676
|
+
ops_inc_head_set = set()
|
|
677
|
+
for op_name_inc in op_inc_list[i]:
|
|
678
|
+
ops_inc_head_set.add(template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_name_inc[0].lower()))
|
|
679
|
+
|
|
626
680
|
ascend_pyboost_op_source = self.PYBOOST_ASCEND_OP_SOURCE_TEMPLATE.replace(
|
|
627
|
-
merge_op_header=op_header, merge_op_function=op_function)
|
|
681
|
+
merge_op_header=op_header, merge_op_function=op_function, ops_inc=list(sorted(ops_inc_head_set)))
|
|
628
682
|
save_file(os.path.join(work_path, self.ascend_gen_path), f"pyboost_ascend_ops_{i}.cc",
|
|
629
683
|
ascend_pyboost_op_source)
|
|
630
684
|
|
|
685
|
+
ops_hccl_inc_head_set = set()
|
|
686
|
+
for op_name_inc in ascend_merge_op_hccl_inc:
|
|
687
|
+
ops_hccl_inc_head_set.add(template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_name_inc[0].lower()))
|
|
688
|
+
hccl_pyboost_op_source = self.PYBOOST_ASCEND_OP_SOURCE_TEMPLATE.replace(
|
|
689
|
+
merge_op_header='\n'.join(hccl_merge_op_header), merge_op_function='\n'.join(hccl_merge_op_function),
|
|
690
|
+
ops_inc=list(sorted(ops_hccl_inc_head_set)))
|
|
691
|
+
save_file(os.path.join(work_path, self.hccl_gen_path), f"pyboost_hccl_ops.cc",
|
|
692
|
+
hccl_pyboost_op_source)
|
|
693
|
+
|
|
631
694
|
def _generate_pyboost_cpu_ops(self, work_path, op_protos):
|
|
632
695
|
"""
|
|
633
696
|
Generates CPU PyBoost ops functions source files after being merged into specific chunk sizes.
|
|
@@ -639,20 +702,31 @@ class PyboostOpFunctionGenerator(BaseGenerator):
|
|
|
639
702
|
"""
|
|
640
703
|
cpu_merge_op_header = []
|
|
641
704
|
cpu_merge_op_function = []
|
|
642
|
-
|
|
643
|
-
self.
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
705
|
+
cpu_merge_op_inc = []
|
|
706
|
+
self.cpu_op_cpp_generator.generate_customize_op_cpp_code(
|
|
707
|
+
op_protos, cpu_merge_op_header, cpu_merge_op_function, cpu_merge_op_inc)
|
|
708
|
+
self.cpu_view_op_cpp_generator.generate_view_op_cpp_code(
|
|
709
|
+
op_protos, cpu_merge_op_header, cpu_merge_op_function, cpu_merge_op_inc)
|
|
710
|
+
self.cpu_aclnn_cpp_generator.generate_aclnn_op_cpp_code(
|
|
711
|
+
op_protos, cpu_merge_op_header, cpu_merge_op_function, cpu_merge_op_inc)
|
|
712
|
+
cpu_op_header_merge_by_chunk_size = merge_strings_by_chunk_size(
|
|
713
|
+
cpu_merge_op_header, chunk_size=120)
|
|
714
|
+
cpu_op_function_merge_by_chunk_size = merge_strings_by_chunk_size(
|
|
715
|
+
cpu_merge_op_function, chunk_size=120)
|
|
716
|
+
op_inc_list = chunk_list(cpu_merge_op_inc, n=120)
|
|
647
717
|
|
|
648
718
|
new_gen_num = len(cpu_op_header_merge_by_chunk_size)
|
|
649
|
-
self._delete_residual_merged_ops_files(
|
|
719
|
+
self._delete_residual_merged_ops_files(
|
|
720
|
+
os.path.join(work_path, self.cpu_gen_path), new_gen_num)
|
|
650
721
|
|
|
651
722
|
for i, op_header, op_function in zip(range(len(cpu_op_header_merge_by_chunk_size)),
|
|
652
723
|
cpu_op_header_merge_by_chunk_size,
|
|
653
724
|
cpu_op_function_merge_by_chunk_size):
|
|
725
|
+
ops_inc_head_set = set()
|
|
726
|
+
for op_name_inc in op_inc_list[i]:
|
|
727
|
+
ops_inc_head_set.add(template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_name_inc[0].lower()))
|
|
654
728
|
cpu_pyboost_op_source = self.PYBOOST_CPU_OP_SOURCE_TEMPLATE.replace(
|
|
655
|
-
merge_op_header=op_header, merge_op_function=op_function)
|
|
729
|
+
merge_op_header=op_header, merge_op_function=op_function, ops_inc=list(sorted(ops_inc_head_set)))
|
|
656
730
|
save_file(os.path.join(work_path, self.cpu_gen_path), f"pyboost_cpu_ops_{i}.cc",
|
|
657
731
|
cpu_pyboost_op_source)
|
|
658
732
|
|
|
@@ -667,20 +741,31 @@ class PyboostOpFunctionGenerator(BaseGenerator):
|
|
|
667
741
|
"""
|
|
668
742
|
gpu_merge_op_header = []
|
|
669
743
|
gpu_merge_op_function = []
|
|
670
|
-
|
|
671
|
-
self.
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
744
|
+
gpu_merge_op_inc = []
|
|
745
|
+
self.gpu_op_cpp_generator.generate_customize_op_cpp_code(
|
|
746
|
+
op_protos, gpu_merge_op_header, gpu_merge_op_function, gpu_merge_op_inc)
|
|
747
|
+
self.gpu_view_op_cpp_generator.generate_view_op_cpp_code(
|
|
748
|
+
op_protos, gpu_merge_op_header, gpu_merge_op_function, gpu_merge_op_inc)
|
|
749
|
+
self.gpu_aclnn_cpp_generator.generate_aclnn_op_cpp_code(
|
|
750
|
+
op_protos, gpu_merge_op_header, gpu_merge_op_function, gpu_merge_op_inc)
|
|
751
|
+
gpu_op_header_merge_by_chunk_size = merge_strings_by_chunk_size(
|
|
752
|
+
gpu_merge_op_header, chunk_size=120)
|
|
753
|
+
gpu_op_function_merge_by_chunk_size = merge_strings_by_chunk_size(
|
|
754
|
+
gpu_merge_op_function, chunk_size=120)
|
|
755
|
+
op_inc_list = chunk_list(gpu_merge_op_inc, n=120)
|
|
675
756
|
|
|
676
757
|
new_gen_num = len(gpu_op_header_merge_by_chunk_size)
|
|
677
|
-
self._delete_residual_merged_ops_files(
|
|
758
|
+
self._delete_residual_merged_ops_files(
|
|
759
|
+
os.path.join(work_path, self.gpu_gen_path), new_gen_num)
|
|
678
760
|
|
|
679
761
|
for i, op_header, op_function in zip(range(len(gpu_op_header_merge_by_chunk_size)),
|
|
680
762
|
gpu_op_header_merge_by_chunk_size,
|
|
681
763
|
gpu_op_function_merge_by_chunk_size):
|
|
764
|
+
ops_inc_head_set = set()
|
|
765
|
+
for op_name_inc in op_inc_list[i]:
|
|
766
|
+
ops_inc_head_set.add(template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_name_inc[0].lower()))
|
|
682
767
|
gpu_pyboost_op_source = self.PYBOOST_GPU_OP_SOURCE_TEMPLATE.replace(
|
|
683
|
-
merge_op_header=op_header, merge_op_function=op_function)
|
|
768
|
+
merge_op_header=op_header, merge_op_function=op_function, ops_inc=list(sorted(ops_inc_head_set)))
|
|
684
769
|
save_file(os.path.join(work_path, self.gpu_gen_path), f"pyboost_gpu_ops_{i}.cc",
|
|
685
770
|
gpu_pyboost_op_source)
|
|
686
771
|
|
|
@@ -703,7 +788,8 @@ class PyboostOpFunctionGenerator(BaseGenerator):
|
|
|
703
788
|
None
|
|
704
789
|
"""
|
|
705
790
|
all_files = os.listdir(files_path)
|
|
706
|
-
old_pyboost_ops_files = [file for file in all_files if re.match(
|
|
791
|
+
old_pyboost_ops_files = [file for file in all_files if re.match(
|
|
792
|
+
r'pyboost_.*_ops_.*\.cc', file)]
|
|
707
793
|
old_files_num = len(old_pyboost_ops_files)
|
|
708
794
|
if new_gen_num != old_files_num:
|
|
709
795
|
for file in old_pyboost_ops_files:
|
|
@@ -782,7 +868,8 @@ def delete_residual_files(work_path, op_protos):
|
|
|
782
868
|
all_operator_name.append(op_proto.op_name)
|
|
783
869
|
code_generate_path_list = [f"{K.MS_OPS_KERNEL_PATH}/{device}/pyboost/auto_generate/" for device in
|
|
784
870
|
["ascend", "gpu", "cpu"]]
|
|
785
|
-
code_generate_path_list.append(
|
|
871
|
+
code_generate_path_list.append(
|
|
872
|
+
f"{K.MS_COMMON_PYBOOST_KERNEL_PATH}/auto_generate/")
|
|
786
873
|
for code_generate_path in code_generate_path_list:
|
|
787
874
|
filter_files = []
|
|
788
875
|
code_generate_path = os.path.join(work_path, code_generate_path)
|
|
@@ -843,9 +930,9 @@ class PyboostOpRegisterCppCodeGenerator:
|
|
|
843
930
|
for op_name in all_op_names:
|
|
844
931
|
factory_str += "template class OpFactory<{0}>;\n".format(op_name)
|
|
845
932
|
for operator_name in all_functional_names:
|
|
846
|
-
include_str += f'#include "{K.
|
|
933
|
+
include_str += f'#include "{K.MS_PYBOOST_BASE_PATH}/auto_generate/{operator_name}.h"\n'
|
|
847
934
|
op_register_file_str = self.PYBOOST_OP_REGISTER_TEMPLATE.replace(op_includes=include_str,
|
|
848
935
|
op_factory_templates=factory_str)
|
|
849
|
-
save_path = os.path.join(work_path, f"{K.
|
|
936
|
+
save_path = os.path.join(work_path, f"{K.MS_PYBOOST_BASE_PATH}/auto_generate/")
|
|
850
937
|
file_name = "op_register.cc"
|
|
851
938
|
save_file(save_path, file_name, op_register_file_str)
|
|
@@ -21,15 +21,17 @@ the necessary header files for the generated functions.
|
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
23
|
import os
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
import gen_constants as K
|
|
27
|
-
import
|
|
28
|
-
import
|
|
29
|
-
from
|
|
30
|
-
from
|
|
31
|
-
from
|
|
32
|
-
|
|
24
|
+
|
|
25
|
+
import common.template as template
|
|
26
|
+
import common.gen_constants as K
|
|
27
|
+
from common.template import Template
|
|
28
|
+
from common.gen_utils import save_file
|
|
29
|
+
from common.op_proto import OpProto
|
|
30
|
+
from common.base_generator import BaseGenerator
|
|
31
|
+
from pyboost import pyboost_utils
|
|
32
|
+
import api.op_api_proto as op_api_proto
|
|
33
|
+
|
|
34
|
+
from .op_template_parser import OpTemplateParser
|
|
33
35
|
|
|
34
36
|
|
|
35
37
|
class PyboostOverloadFunctionsGenerator(BaseGenerator):
|
|
@@ -68,7 +70,9 @@ class PyboostOverloadFunctionsGenerator(BaseGenerator):
|
|
|
68
70
|
self.pyboost_return_template = Template(
|
|
69
71
|
'${arg_handler_processor}\n'
|
|
70
72
|
'MS_LOG(INFO) << "Call Tensor${class_name}";\n'
|
|
71
|
-
'
|
|
73
|
+
'auto res = ${pyboost_base_func_name}_OP(${prim_name}, parse_args.src_types_, ${convert_args});\n'
|
|
74
|
+
'trace::Capture(parse_args.arg_list_, "${class_name}", &res);\n'
|
|
75
|
+
'return res;\n'
|
|
72
76
|
)
|
|
73
77
|
self.callback_python_template = Template(
|
|
74
78
|
'MS_LOG(INFO) << "Callback python method: ${py_method}";\n'
|
|
@@ -112,8 +116,9 @@ class PyboostOverloadFunctionsGenerator(BaseGenerator):
|
|
|
112
116
|
"""
|
|
113
117
|
|
|
114
118
|
mint_classes_def_list = []
|
|
115
|
-
|
|
116
|
-
_, single_mint_func_data, overload_mint_func_data = op_api_proto.categorize_func_data(
|
|
119
|
+
ops_inc_head_set = set()
|
|
120
|
+
_, single_mint_func_data, overload_mint_func_data, op_class_name_set = op_api_proto.categorize_func_data(
|
|
121
|
+
mint_func_protos_data)
|
|
117
122
|
single_func_call_body_list, single_cpp_class_name_list = (
|
|
118
123
|
self._get_single_func_call_body_list(single_mint_func_data))
|
|
119
124
|
overload_func_call_body_list, overload_cpp_class_name_list = (
|
|
@@ -125,9 +130,11 @@ class PyboostOverloadFunctionsGenerator(BaseGenerator):
|
|
|
125
130
|
cpp_class_name_list = single_cpp_class_name_list + overload_cpp_class_name_list
|
|
126
131
|
mint_classes_reg_list = (
|
|
127
132
|
self._get_mint_func_reg_list(single_mint_func_data, overload_mint_func_data, cpp_class_name_list))
|
|
128
|
-
|
|
133
|
+
for op_class_name in op_class_name_set:
|
|
134
|
+
ops_inc_head_set.add(template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_class_name[0].lower()))
|
|
129
135
|
pyboost_overload_file_str = (
|
|
130
|
-
self.PYBOOST_OVERLOAD_FUNCTIONS_TEMPLATE.replace(
|
|
136
|
+
self.PYBOOST_OVERLOAD_FUNCTIONS_TEMPLATE.replace(ops_inc=list(sorted(ops_inc_head_set)),
|
|
137
|
+
mint_func_classes_def=mint_classes_def_list,
|
|
131
138
|
pybind_register_code=mint_classes_reg_list))
|
|
132
139
|
save_path = os.path.join(work_path, K.PIPELINE_PYBOOST_FUNC_GEN_PATH)
|
|
133
140
|
file_name = "pyboost_overload_functions.cc"
|
|
@@ -306,13 +313,15 @@ class PyboostOverloadFunctionsGenerator(BaseGenerator):
|
|
|
306
313
|
func_proto_device = getattr(func_proto, device)
|
|
307
314
|
if func_proto_device == 'pyboost':
|
|
308
315
|
arg_handler_processor_str = self._get_arg_handler_processor(func_proto.func_name, func_proto.op_proto)
|
|
316
|
+
convert_args_str = self._get_convert_args_str(func_proto.op_proto)
|
|
309
317
|
op_parser = OpTemplateParser(func_proto.op_proto)
|
|
310
318
|
op_pyboost_func_name = op_parser.get_pyboost_func_name()
|
|
311
319
|
prim_name = f"prim::kPrim{func_proto.op_proto.op_class.name}"
|
|
312
320
|
return self.pyboost_return_template.replace(arg_handler_processor=arg_handler_processor_str,
|
|
313
321
|
class_name=func_proto.op_proto.op_class.name,
|
|
314
322
|
prim_name=prim_name,
|
|
315
|
-
pyboost_base_func_name=op_pyboost_func_name
|
|
323
|
+
pyboost_base_func_name=op_pyboost_func_name,
|
|
324
|
+
convert_args=convert_args_str)
|
|
316
325
|
if func_proto_device == 'py_method':
|
|
317
326
|
return self.callback_python_template.replace(py_method=func_proto.py_method)
|
|
318
327
|
|
|
@@ -322,6 +331,10 @@ class PyboostOverloadFunctionsGenerator(BaseGenerator):
|
|
|
322
331
|
op_parser = OpTemplateParser(op_proto)
|
|
323
332
|
return op_parser.get_arg_handler_processor(func_name, op_proto, is_tensor_api=False)
|
|
324
333
|
|
|
334
|
+
def _get_convert_args_str(self, op_proto):
|
|
335
|
+
op_parser = OpTemplateParser(op_proto)
|
|
336
|
+
return op_parser.get_convert_args_str(op_proto, is_tensor_api=False)
|
|
337
|
+
|
|
325
338
|
def _get_mint_func_reg_list(self, single_mint_func_data, overload_mint_func_data, cpp_class_names):
|
|
326
339
|
"""
|
|
327
340
|
Generates the list of pybind definition strings for mint functions.
|
|
@@ -16,8 +16,9 @@
|
|
|
16
16
|
|
|
17
17
|
import os
|
|
18
18
|
import logging
|
|
19
|
-
from gen_utils import safe_load_yaml
|
|
20
|
-
from op_proto import OpProto
|
|
19
|
+
from common.gen_utils import safe_load_yaml
|
|
20
|
+
from common.op_proto import OpProto
|
|
21
|
+
import common.gen_constants as K
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
def is_optional_param(op_arg):
|
|
@@ -114,6 +115,54 @@ def get_convert_type_str(dtype: str, optional):
|
|
|
114
115
|
raise TypeError(f"""Unsupported convert type {dtype} for args.""")
|
|
115
116
|
|
|
116
117
|
|
|
118
|
+
def get_input_args_type_str(dtype: str, optional):
|
|
119
|
+
"""
|
|
120
|
+
Convert type
|
|
121
|
+
"""
|
|
122
|
+
# add more type here
|
|
123
|
+
native_type = {
|
|
124
|
+
'int': 'Int64ImmPtr',
|
|
125
|
+
'float': 'FP32ImmPtr',
|
|
126
|
+
'bool': 'BoolImmPtr',
|
|
127
|
+
'number': 'ScalarPtr',
|
|
128
|
+
'tuple[int]': 'ValueTuplePtr',
|
|
129
|
+
'tuple[float]': 'ValueTuplePtr',
|
|
130
|
+
'tuple[bool]': 'ValueTuplePtr',
|
|
131
|
+
'tuple[tensor]': 'ValueTuplePtr',
|
|
132
|
+
'list[int]': 'ValueTuplePtr',
|
|
133
|
+
'list[float]': 'ValueTuplePtr',
|
|
134
|
+
'list[bool]': 'ValueTuplePtr',
|
|
135
|
+
'list[tensor]': 'ValueTuplePtr',
|
|
136
|
+
'tensor': 'ValuePtr',
|
|
137
|
+
'str': 'StringImmPtr',
|
|
138
|
+
'type': 'Int64ImmPtr',
|
|
139
|
+
}
|
|
140
|
+
optional_type = {
|
|
141
|
+
'int': 'std::optional<Int64ImmPtr>',
|
|
142
|
+
'float': 'std::optional<FP32ImmPtr>',
|
|
143
|
+
'number': 'std::optional<ScalarPtr>',
|
|
144
|
+
'tensor': 'std::optional<ValuePtr>',
|
|
145
|
+
'type': 'std::optional<Int64ImmPtr>',
|
|
146
|
+
'str': 'std::optional<StringImmPtr>',
|
|
147
|
+
'tuple[int]': 'std::optional<ValueTuplePtr>',
|
|
148
|
+
'tuple[float]': 'std::optional<ValueTuplePtr>',
|
|
149
|
+
'tuple[bool]': 'std::optional<ValueTuplePtr>',
|
|
150
|
+
'tuple[tensor]': 'std::optional<ValueTuplePtr>',
|
|
151
|
+
'list[int]': 'std::optional<ValueTuplePtr>',
|
|
152
|
+
'list[float]': 'std::optional<ValueTuplePtr>',
|
|
153
|
+
'list[bool]': 'std::optional<ValueTuplePtr>',
|
|
154
|
+
'list[tensor]': 'std::optional<ValueTuplePtr>',
|
|
155
|
+
}
|
|
156
|
+
if optional:
|
|
157
|
+
if dtype in optional_type:
|
|
158
|
+
return optional_type[dtype]
|
|
159
|
+
raise TypeError(f"""Unknown optional type {dtype} for args.""")
|
|
160
|
+
if dtype in native_type:
|
|
161
|
+
return native_type[dtype]
|
|
162
|
+
raise TypeError(f"""Unknown type {dtype} for args.""")
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
117
166
|
def get_value_convert_type_str(dtype: str, optional):
|
|
118
167
|
"""
|
|
119
168
|
Convert type
|
|
@@ -407,12 +456,47 @@ def merge_strings_by_chunk_size(string_list, chunk_size=50):
|
|
|
407
456
|
return merged_strings
|
|
408
457
|
|
|
409
458
|
|
|
459
|
+
def chunk_list(lst, n):
|
|
460
|
+
"""
|
|
461
|
+
Divide a list into sublists of length 'n'.
|
|
462
|
+
|
|
463
|
+
This function takes a list `lst` and an integer `n`, and returns a new list
|
|
464
|
+
where each element is a sublist of `lst` containing up to `n` elements.
|
|
465
|
+
If the length of `lst` is not a multiple of `n`, the last sublist will contain
|
|
466
|
+
fewer than `n` elements.
|
|
467
|
+
|
|
468
|
+
Args:
|
|
469
|
+
lst (list): The original list to be divided.
|
|
470
|
+
n (int): The number of elements per sublist.
|
|
471
|
+
|
|
472
|
+
Returns:
|
|
473
|
+
list: A list of sublists, where each sublist has up to `n` elements.
|
|
474
|
+
|
|
475
|
+
Raises:
|
|
476
|
+
ValueError: If `n` is less than or equal to 0.
|
|
477
|
+
|
|
478
|
+
Example:
|
|
479
|
+
>>> my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
480
|
+
>>> chunked_list = chunk_list(my_list, 3)
|
|
481
|
+
>>> print(chunked_list)
|
|
482
|
+
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
|
|
483
|
+
|
|
484
|
+
Note:
|
|
485
|
+
This function assumes that `n` is a positive integer. If `n` is not a
|
|
486
|
+
positive integer, a ValueError is raised.
|
|
487
|
+
"""
|
|
488
|
+
if n <= 0:
|
|
489
|
+
raise ValueError("The chunk size 'n' must be a positive integer.")
|
|
490
|
+
|
|
491
|
+
return [lst[i:i + n] for i in range(0, len(lst), n)]
|
|
492
|
+
|
|
493
|
+
|
|
410
494
|
class AclnnUtils:
|
|
411
495
|
"""
|
|
412
496
|
aclnn utils
|
|
413
497
|
"""
|
|
414
|
-
|
|
415
|
-
|
|
498
|
+
aclnn_map = safe_load_yaml(os.path.join(
|
|
499
|
+
K.WORK_DIR, K.PY_OPS_GEN_PATH, "pyboost/aclnn_config.yaml"))
|
|
416
500
|
|
|
417
501
|
@staticmethod
|
|
418
502
|
def get_aclnn_interface(class_name):
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Copyright 2025 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
|
+
|
|
16
|
+
"""Resource list."""
|
|
17
|
+
|
|
18
|
+
from enum import Enum
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class ResourceType(Enum):
|
|
22
|
+
OP_PROTO = 0
|
|
23
|
+
DEPRECATED_OP_PROTO = 1
|
|
24
|
+
OP_DOC_YAML = 2
|
|
25
|
+
TENSOR_METHOD_DOC_YAML = 3
|
|
26
|
+
MINT_FUNC_DOC_YAML = 4
|
|
27
|
+
TENSOR_METHOD_PROTOS = 5
|
|
28
|
+
MINT_FUNC_PROTOS = 6
|
|
29
|
+
ALIAS_API_MAPPING = 7
|
|
30
|
+
FUNC_OP_PROTO = 8
|