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.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +13 -6
- mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -0
- mindspore/_checkparam.py +3 -38
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +83 -0
- mindspore/_extends/parse/deprecated/__init__.py +0 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
- 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 +46 -197
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +217 -98
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +11 -5
- 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 +138 -43
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +6 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -2
- mindspore/common/_stub_tensor.py +30 -14
- mindspore/common/_tensor_cpp_method.py +17 -0
- mindspore/common/_tensor_docs.py +4760 -0
- mindspore/common/api.py +435 -371
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +39 -36
- mindspore/common/dump.py +9 -6
- mindspore/common/file_system.py +9 -1
- mindspore/common/generator.py +2 -0
- mindspore/common/hook_handle.py +6 -2
- mindspore/common/initializer.py +13 -10
- 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 +9 -3
- mindspore/common/mindir_util.py +10 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +135 -52
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +951 -1992
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +52 -2
- mindspore/communication/comm_func.py +240 -181
- mindspore/communication/management.py +95 -26
- mindspore/context.py +314 -566
- mindspore/dataset/__init__.py +65 -37
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/callback/ds_callback.py +2 -1
- mindspore/dataset/core/config.py +87 -6
- mindspore/dataset/engine/cache_admin.py +3 -3
- mindspore/dataset/engine/cache_client.py +6 -5
- mindspore/dataset/engine/datasets.py +292 -267
- mindspore/dataset/engine/datasets_audio.py +22 -8
- mindspore/dataset/engine/datasets_standard_format.py +46 -27
- mindspore/dataset/engine/datasets_text.py +78 -48
- mindspore/dataset/engine/datasets_user_defined.py +182 -116
- mindspore/dataset/engine/datasets_vision.py +120 -44
- mindspore/dataset/engine/iterators.py +283 -63
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/obs/util.py +8 -0
- mindspore/dataset/engine/queue.py +40 -0
- mindspore/dataset/engine/samplers.py +289 -43
- mindspore/dataset/engine/serializer_deserializer.py +3 -2
- mindspore/dataset/engine/validators.py +53 -11
- 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/py_transforms_util.py +17 -0
- mindspore/dataset/transforms/transforms.py +31 -14
- 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/dataset/vision/validators.py +1 -2
- mindspore/device_context/__init__.py +21 -0
- mindspore/device_context/ascend/__init__.py +25 -0
- mindspore/device_context/ascend/device.py +72 -0
- mindspore/device_context/ascend/op_debug.py +153 -0
- mindspore/device_context/ascend/op_precision.py +193 -0
- mindspore/device_context/ascend/op_tuning.py +123 -0
- mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
- mindspore/device_context/cpu/device.py +62 -0
- mindspore/device_context/cpu/op_tuning.py +43 -0
- mindspore/device_context/gpu/__init__.py +21 -0
- mindspore/device_context/gpu/device.py +70 -0
- mindspore/device_context/gpu/op_precision.py +67 -0
- mindspore/device_context/gpu/op_tuning.py +175 -0
- mindspore/device_manager.py +170 -0
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/llm_boost/__init__.py +1 -0
- mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
- mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
- mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
- mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
- mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
- mindspore/experimental/llm_boost/register.py +1 -0
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +6 -6
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +7 -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 +73 -46
- mindspore/experimental/optim/radam.py +34 -31
- 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 -53
- mindspore/hal/event.py +52 -52
- mindspore/hal/memory.py +157 -117
- mindspore/hal/stream.py +150 -109
- mindspore/include/api/context.h +0 -1
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +50 -0
- mindspore/mindrecord/__init__.py +21 -8
- mindspore/mindrecord/config.py +17 -316
- mindspore/mindrecord/filereader.py +1 -9
- mindspore/mindrecord/filewriter.py +5 -15
- mindspore/mindrecord/mindpage.py +1 -9
- 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 +796 -759
- mindspore/mint/distributed/__init__.py +70 -4
- mindspore/mint/distributed/distributed.py +2679 -44
- mindspore/mint/linalg/__init__.py +8 -0
- mindspore/mint/nn/__init__.py +743 -22
- mindspore/mint/nn/functional.py +716 -23
- mindspore/mint/nn/layer/__init__.py +21 -4
- mindspore/mint/nn/layer/_functions.py +334 -0
- mindspore/mint/nn/layer/activation.py +276 -1
- mindspore/mint/nn/layer/basic.py +123 -0
- mindspore/mint/nn/layer/conv.py +921 -0
- mindspore/mint/nn/layer/normalization.py +223 -28
- mindspore/mint/nn/layer/padding.py +797 -0
- mindspore/mint/nn/layer/pooling.py +235 -0
- mindspore/mint/optim/__init__.py +3 -1
- mindspore/mint/optim/adam.py +223 -0
- mindspore/mint/optim/adamw.py +26 -19
- mindspore/mint/optim/sgd.py +171 -0
- mindspore/mint/special/__init__.py +2 -1
- 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/multiprocessing/__init__.py +5 -0
- mindspore/nn/__init__.py +4 -1
- mindspore/nn/cell.py +1370 -189
- mindspore/nn/dynamic_lr.py +2 -1
- mindspore/nn/layer/activation.py +29 -27
- mindspore/nn/layer/basic.py +51 -35
- mindspore/nn/layer/channel_shuffle.py +3 -3
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +22 -17
- mindspore/nn/layer/embedding.py +12 -11
- mindspore/nn/layer/normalization.py +56 -49
- mindspore/nn/layer/padding.py +4 -3
- mindspore/nn/layer/pooling.py +120 -42
- mindspore/nn/layer/rnn_cells.py +1 -1
- mindspore/nn/layer/rnns.py +2 -1
- mindspore/nn/layer/timedistributed.py +5 -5
- mindspore/nn/layer/transformer.py +59 -36
- mindspore/nn/learning_rate_schedule.py +8 -4
- mindspore/nn/loss/loss.py +58 -55
- mindspore/nn/optim/ada_grad.py +7 -5
- mindspore/nn/optim/adadelta.py +11 -9
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +17 -13
- 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/lars.py +1 -4
- mindspore/nn/optim/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +3 -3
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +11 -9
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- mindspore/nn/optim/thor.py +2 -1
- 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/utils/init.py +13 -11
- mindspore/nn/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +181 -122
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +6 -7
- mindspore/numpy/array_creations.py +63 -65
- mindspore/numpy/array_ops.py +149 -144
- mindspore/numpy/logic_ops.py +41 -42
- mindspore/numpy/math_ops.py +365 -363
- mindspore/numpy/utils.py +17 -18
- mindspore/numpy/utils_const.py +5 -6
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +5 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
- mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
- mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
- mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
- mindspore/ops/_op_impl/cpu/__init__.py +1 -0
- mindspore/ops/_op_impl/cpu/raise_op.py +28 -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 -65
- mindspore/ops/_vmap/vmap_array_ops.py +27 -25
- mindspore/ops/_vmap/vmap_base.py +0 -2
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
- mindspore/ops/_vmap/vmap_math_ops.py +15 -16
- mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +236 -46
- mindspore/ops/auto_generate/gen_extend_func.py +764 -124
- mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
- mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
- mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +20 -25
- 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 +228 -30
- 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 -30
- 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 +40 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +2089 -2403
- mindspore/ops/function/clip_func.py +80 -23
- mindspore/ops/function/debug_func.py +57 -57
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +2 -2
- mindspore/ops/function/linalg_func.py +47 -78
- mindspore/ops/function/math_func.py +4501 -3802
- mindspore/ops/function/nn_func.py +1726 -620
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +18 -84
- mindspore/ops/function/random_func.py +440 -387
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +6 -6
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +24 -17
- mindspore/ops/functional.py +22 -7
- mindspore/ops/functional_overload.py +1440 -0
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +13 -7
- mindspore/ops/operations/_custom_ops_utils.py +247 -0
- mindspore/ops/operations/_embedding_cache_ops.py +4 -4
- mindspore/ops/operations/_grad_ops.py +2 -43
- mindspore/ops/operations/_infer_ops.py +2 -1
- mindspore/ops/operations/_inner_ops.py +43 -84
- 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 +81 -324
- mindspore/ops/operations/comm_ops.py +154 -108
- mindspore/ops/operations/custom_ops.py +232 -78
- mindspore/ops/operations/debug_ops.py +153 -59
- mindspore/ops/operations/inner_ops.py +7 -5
- mindspore/ops/operations/linalg_ops.py +1 -57
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +928 -180
- mindspore/ops/operations/math_ops.py +32 -234
- mindspore/ops/operations/nn_ops.py +210 -498
- 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 +66 -53
- mindspore/ops/tensor_method.py +1888 -0
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
- mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
- mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
- mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
- mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
- mindspore/ops_generate/api/functions_cc_generator.py +237 -0
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/api/op_api_proto.py +235 -0
- mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/base_generator.py +11 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/common/gen_utils.py +348 -0
- mindspore/ops_generate/common/op_proto.py +473 -0
- mindspore/ops_generate/common/template.py +523 -0
- mindspore/ops_generate/gen_ops.py +22 -1069
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
- mindspore/ops_generate/op_def/ops_def_cc_generator.py +299 -0
- mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
- mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
- 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/op_def_py_generator.py +132 -0
- mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
- mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
- mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
- mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
- mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
- mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
- mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
- mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
- mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
- mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
- mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
- mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
- 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 +7 -3
- mindspore/parallel/_auto_parallel_context.py +152 -34
- mindspore/parallel/_cell_wrapper.py +130 -15
- mindspore/parallel/_parallel_serialization.py +107 -5
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +199 -23
- mindspore/parallel/algo_parameter_config.py +4 -4
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +698 -35
- mindspore/parallel/cluster/process_entity/_api.py +276 -50
- mindspore/parallel/cluster/process_entity/_utils.py +41 -6
- mindspore/parallel/cluster/run.py +21 -4
- 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 +25 -14
- mindspore/parallel/shard.py +137 -58
- mindspore/parallel/transform_safetensors.py +363 -305
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +22 -5
- mindspore/profiler/analysis/__init__.py +0 -0
- mindspore/profiler/analysis/parser/__init__.py +0 -0
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
- mindspore/profiler/analysis/parser/base_parser.py +158 -0
- mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
- mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
- mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +106 -0
- mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
- mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
- mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
- mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
- mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
- mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
- mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
- mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
- mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
- mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
- mindspore/profiler/analysis/task_manager.py +131 -0
- mindspore/profiler/analysis/time_converter.py +84 -0
- mindspore/profiler/analysis/viewer/__init__.py +0 -0
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
- mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
- mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
- mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
- mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
- mindspore/profiler/analysis/work_flow.py +73 -0
- mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
- mindspore/profiler/common/command_executor.py +90 -0
- mindspore/profiler/common/constant.py +186 -3
- mindspore/profiler/common/file_manager.py +208 -0
- mindspore/profiler/common/log.py +130 -0
- mindspore/profiler/common/msprof_cmd_tool.py +221 -0
- mindspore/profiler/common/path_manager.py +395 -0
- mindspore/profiler/common/process_bar.py +168 -0
- mindspore/profiler/common/process_pool.py +9 -3
- mindspore/profiler/common/profiler_context.py +500 -0
- mindspore/profiler/common/profiler_info.py +304 -0
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_output_path.py +284 -0
- mindspore/profiler/common/profiler_parameters.py +251 -0
- mindspore/profiler/common/profiler_path_manager.py +179 -0
- mindspore/profiler/common/record_function.py +76 -0
- mindspore/profiler/common/tlv_decoder.py +76 -0
- mindspore/profiler/common/util.py +75 -2
- mindspore/profiler/dynamic_profiler.py +341 -75
- mindspore/profiler/envprofiler.py +163 -0
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +242 -0
- mindspore/profiler/platform/__init__.py +21 -0
- mindspore/profiler/platform/base_profiler.py +40 -0
- mindspore/profiler/platform/cpu_profiler.py +124 -0
- mindspore/profiler/platform/gpu_profiler.py +74 -0
- mindspore/profiler/platform/npu_profiler.py +335 -0
- mindspore/profiler/profiler.py +1073 -90
- mindspore/profiler/profiler_action_controller.py +187 -0
- mindspore/profiler/profiler_interface.py +118 -0
- mindspore/profiler/schedule.py +243 -0
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +2 -3
- mindspore/run_check/_check_version.py +27 -20
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +37 -0
- mindspore/runtime/device.py +27 -0
- mindspore/runtime/event.py +209 -0
- mindspore/runtime/executor.py +177 -0
- mindspore/runtime/memory.py +409 -0
- mindspore/runtime/stream.py +460 -0
- mindspore/runtime/thread_bind_core.py +401 -0
- 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 +88 -25
- mindspore/train/amp.py +9 -5
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +53 -55
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_early_stop.py +1 -1
- mindspore/train/callback/_flops_collector.py +103 -68
- mindspore/train/callback/_history.py +8 -5
- 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 +52 -19
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -107
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +15 -16
- 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 +11 -10
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +174 -46
- mindspore/train/model.py +184 -113
- mindspore/train/serialization.py +622 -978
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +2 -3
- mindspore/train/train_thor/model_thor.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +6 -3
- mindspore/utils/dryrun.py +140 -0
- mindspore/utils/hooks.py +81 -0
- mindspore/utils/runtime_execution_order_check.py +550 -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.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +3 -3
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +587 -418
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +1 -1
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/common/_tensor_overload.py +0 -139
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_aclnn_implement.py +0 -263
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/gen_pyboost_func.py +0 -1052
- mindspore/ops_generate/gen_utils.py +0 -209
- mindspore/ops_generate/op_proto.py +0 -145
- mindspore/ops_generate/template.py +0 -261
- mindspore/profiler/envprofiling.py +0 -254
- mindspore/profiler/profiling.py +0 -1926
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -19,9 +19,4 @@ Primitive operator classes and operator functional.
|
|
|
19
19
|
A collection of operators to build neural networks or to compute functions.
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
-
from . import (arg_dtype_cast, arg_handler)
|
|
23
|
-
|
|
24
|
-
from .arg_dtype_cast import *
|
|
25
|
-
from .arg_handler import *
|
|
26
|
-
|
|
27
22
|
__all__ = []
|
|
File without changes
|
|
@@ -0,0 +1,135 @@
|
|
|
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
|
+
"""
|
|
16
|
+
Generates C++ registration code for ACL NN kernels based on operator prototypes.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
import os
|
|
20
|
+
import logging
|
|
21
|
+
import re
|
|
22
|
+
|
|
23
|
+
import common.gen_constants as K
|
|
24
|
+
import common.gen_utils as gen_utils
|
|
25
|
+
import common.template as template
|
|
26
|
+
from common.base_generator import BaseGenerator
|
|
27
|
+
from pyboost import pyboost_utils
|
|
28
|
+
from aclnn.gen_aclnn_implement import gen_aclnn_kernel
|
|
29
|
+
from resources.resource_list import ResourceType
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
ACLNN_REG_CODE = """
|
|
33
|
+
#include "$ops_gen_kernel_path/ascend/opapi/aclnn_kernel_mod.h"
|
|
34
|
+
|
|
35
|
+
namespace mindspore {
|
|
36
|
+
namespace kernel {
|
|
37
|
+
|
|
38
|
+
$aclnn_reg_code
|
|
39
|
+
} // namespace kernel
|
|
40
|
+
} // namespace mindspore
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class AclnnKernelRegisterAutoCcGenerator(BaseGenerator):
|
|
45
|
+
"""Generates ACL NN kernel registration code for Ascend devices."""
|
|
46
|
+
|
|
47
|
+
def __init__(self):
|
|
48
|
+
self.aclnn_reg_code_template = template.Template(ACLNN_REG_CODE)
|
|
49
|
+
|
|
50
|
+
def generate(self, work_path, op_protos):
|
|
51
|
+
"""
|
|
52
|
+
Generates registration code for ACL NN kernels and saves it to a file.
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
work_path (str): The directory to save the generated file.
|
|
56
|
+
op_protos (list): List of operator prototypes.
|
|
57
|
+
|
|
58
|
+
Returns:
|
|
59
|
+
None
|
|
60
|
+
"""
|
|
61
|
+
aclnn_reg_code = []
|
|
62
|
+
for op_proto in op_protos:
|
|
63
|
+
if not op_proto.op_dispatch or not op_proto.op_dispatch.enable:
|
|
64
|
+
continue
|
|
65
|
+
# KernelMod is provided by yaml, don't auto generate it.
|
|
66
|
+
if op_proto.op_dispatch.ascend != 'default':
|
|
67
|
+
continue
|
|
68
|
+
if check_op_registed(op_proto.op_name, True):
|
|
69
|
+
logging.warning(
|
|
70
|
+
"Kernel {%s} is already registered.", op_proto.op_name)
|
|
71
|
+
continue
|
|
72
|
+
_, _, none_tensor_exist = pyboost_utils.get_dtypes(op_proto)
|
|
73
|
+
if none_tensor_exist:
|
|
74
|
+
# gen operator aclnn kernel c++ files
|
|
75
|
+
gen_aclnn_kernel(op_proto, auto=True)
|
|
76
|
+
continue
|
|
77
|
+
|
|
78
|
+
class_name = op_proto.op_class.name
|
|
79
|
+
inputs_outputs_num = len(op_proto.op_args) + \
|
|
80
|
+
len(op_proto.op_returns)
|
|
81
|
+
aclnn_name = pyboost_utils.AclnnUtils.get_aclnn_interface(
|
|
82
|
+
class_name)
|
|
83
|
+
aclnn_reg_code.append(
|
|
84
|
+
f"MS_ACLNN_COMMON_KERNEL_FACTORY_REG({class_name}, {aclnn_name}, {inputs_outputs_num});\n")
|
|
85
|
+
|
|
86
|
+
reg_code = self.aclnn_reg_code_template.replace(ops_gen_kernel_path=K.MS_OPS_KERNEL_PATH,
|
|
87
|
+
aclnn_reg_code=aclnn_reg_code)
|
|
88
|
+
res_str = template.CC_LICENSE_STR + reg_code
|
|
89
|
+
|
|
90
|
+
save_path = os.path.join(
|
|
91
|
+
work_path, f"{K.MS_OPS_KERNEL_PATH}/ascend/opapi/auto_generate")
|
|
92
|
+
file_name = "aclnn_kernel_register_auto.cc"
|
|
93
|
+
gen_utils.save_file(save_path, file_name, res_str)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def get_registed_ops(file_path=f'{K.MS_OPS_KERNEL_PATH}/ascend/opapi/'):
|
|
97
|
+
'''get registered ops by search files'''
|
|
98
|
+
# default search in 'ops/kernel/ascend/opapi/'
|
|
99
|
+
search_path = os.path.join(K.WORK_DIR, file_path)
|
|
100
|
+
ret = []
|
|
101
|
+
try:
|
|
102
|
+
for root_path, _, files in os.walk(search_path):
|
|
103
|
+
for file_name in files:
|
|
104
|
+
if file_name == 'aclnn_kernel_register_auto.cc':
|
|
105
|
+
continue
|
|
106
|
+
with open(os.path.join(root_path, file_name), "r") as f:
|
|
107
|
+
file_context = f.read()
|
|
108
|
+
search_re = re.search(
|
|
109
|
+
r"(?<=KERNEL_FACTORY_REG\()\w+(?=,)", file_context)
|
|
110
|
+
if search_re:
|
|
111
|
+
ret.append(search_re.group())
|
|
112
|
+
except OSError:
|
|
113
|
+
logging.warning("Something wrong in check op registered.")
|
|
114
|
+
return ret
|
|
115
|
+
return ret
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
registed_ops = get_registed_ops()
|
|
119
|
+
manual_registed_ops = get_registed_ops(
|
|
120
|
+
f'{K.MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn/')
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def check_op_registed(op_name, manual=False):
|
|
124
|
+
'''if op already registered return true'''
|
|
125
|
+
class_name = ''.join(word.capitalize() for word in op_name.split('_'))
|
|
126
|
+
return (class_name in manual_registed_ops) if manual else (class_name in registed_ops)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def generate_aclnn_reg_file(resource_mgr):
|
|
130
|
+
"""
|
|
131
|
+
Generate nnacl kernelmod register
|
|
132
|
+
"""
|
|
133
|
+
op_protos = resource_mgr.get_resource(ResourceType.OP_PROTO)
|
|
134
|
+
generator = AclnnKernelRegisterAutoCcGenerator()
|
|
135
|
+
generator.generate(K.WORK_DIR, op_protos)
|
|
@@ -0,0 +1,257 @@
|
|
|
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
|
+
"""
|
|
16
|
+
Generate aclnn kernelmod or call func by input name in ops.yaml
|
|
17
|
+
"""
|
|
18
|
+
import argparse
|
|
19
|
+
import os
|
|
20
|
+
import re
|
|
21
|
+
import pathlib
|
|
22
|
+
import logging
|
|
23
|
+
import common.gen_utils as gen_utils
|
|
24
|
+
import common.template as template
|
|
25
|
+
import common.gen_constants as K
|
|
26
|
+
from common.op_proto import OpProto
|
|
27
|
+
from common.gen_constants import MS_OPS_KERNEL_PATH
|
|
28
|
+
from pyboost.pyboost_utils import AclnnUtils, get_dtypes
|
|
29
|
+
|
|
30
|
+
auto_gen = ''
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def gen_h(kernelmod_name, aclnn_name, op_proto, kernelmod_h_path, need_update_shape):
|
|
34
|
+
"""generate h files"""
|
|
35
|
+
op_name = op_proto.op_name
|
|
36
|
+
update_shape = template.UPDATE_OUTPUT_SHAPE_AND_SIZE
|
|
37
|
+
if not need_update_shape:
|
|
38
|
+
update_shape = "\n "
|
|
39
|
+
|
|
40
|
+
file_path = kernelmod_h_path + ".h"
|
|
41
|
+
aclnn_kernel_h_str = template.ACLNN_KERNEL_H_TEMPLATE.replace(aclnn_name=aclnn_name,
|
|
42
|
+
op_name=op_name.upper(),
|
|
43
|
+
auto_gen=auto_gen.upper(),
|
|
44
|
+
kernelmod_name=kernelmod_name,
|
|
45
|
+
update_shape=update_shape,
|
|
46
|
+
ops_kernel_path=MS_OPS_KERNEL_PATH)
|
|
47
|
+
gen_utils.save_file(os.path.dirname(file_path), os.path.basename(file_path), aclnn_kernel_h_str)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def gen_cc(kernelmod_name, aclnn_name, op_proto, kernelmod_cc_path, need_update_shape):
|
|
51
|
+
"""generate cc files"""
|
|
52
|
+
op_name = op_proto.op_name
|
|
53
|
+
tuple_tensor_not_supported = template.TUPLE_TENSOR_NOT_SUPPORTED.replace(
|
|
54
|
+
op_name=op_name)
|
|
55
|
+
input_templete = '\n '
|
|
56
|
+
inputs = ''
|
|
57
|
+
input_dtypes, output_dtypes, _ = get_dtypes(op_proto)
|
|
58
|
+
for idx, n in enumerate(input_dtypes):
|
|
59
|
+
input_name = "inputs[kIndex" + str(idx) + "], "
|
|
60
|
+
dtype = input_dtypes.get(n)
|
|
61
|
+
if dtype != 'tensor':
|
|
62
|
+
if dtype == 'int':
|
|
63
|
+
dtype = 'int64_t'
|
|
64
|
+
input_templete += " auto {} = device::ascend::ConvertKernelTensor<{}>(inputs[kIndex{}]);\n".format(
|
|
65
|
+
n.arg_name, dtype, idx)
|
|
66
|
+
input_name = n.arg_name + ", "
|
|
67
|
+
if dtype == 'tuple[tensor]' and auto_gen == "_auto_gen":
|
|
68
|
+
raise NotImplementedError(tuple_tensor_not_supported)
|
|
69
|
+
inputs += input_name
|
|
70
|
+
input_templete = '' if input_templete == '\n ' else input_templete
|
|
71
|
+
for idx, n in enumerate(output_dtypes):
|
|
72
|
+
output_name = "outputs[kIndex" + str(idx) + "], "
|
|
73
|
+
dtype = output_dtypes.get(n)
|
|
74
|
+
if dtype != 'tensor':
|
|
75
|
+
if dtype == 'int':
|
|
76
|
+
dtype = 'int64_t'
|
|
77
|
+
input_templete += " auto {} = device::ascend::ConvertKernelTensor<{}>(outputs[kIndex{}]);\n".format(
|
|
78
|
+
n.arg_name, dtype, idx)
|
|
79
|
+
output_name = n.arg_name + ", "
|
|
80
|
+
if dtype == 'tuple[tensor]' and auto_gen == "_auto_gen":
|
|
81
|
+
raise NotImplementedError(tuple_tensor_not_supported)
|
|
82
|
+
inputs += output_name
|
|
83
|
+
inputs = inputs[:-2]
|
|
84
|
+
|
|
85
|
+
update_shape = template.update_output_shape_and_size_template.replace(
|
|
86
|
+
kernelmod_name=kernelmod_name)
|
|
87
|
+
if not need_update_shape:
|
|
88
|
+
update_shape = ""
|
|
89
|
+
|
|
90
|
+
file_path = kernelmod_cc_path + ".cc"
|
|
91
|
+
aclnn_kernel_cc_str = template.ACLNN_KERNEL_CC_TEMPLATE.replace(kernelmod_name=kernelmod_name,
|
|
92
|
+
input_templete=input_templete,
|
|
93
|
+
inputs=inputs,
|
|
94
|
+
update_shape=update_shape,
|
|
95
|
+
class_name=aclnn_name,
|
|
96
|
+
auto_gen_path=MS_OPS_KERNEL_PATH,
|
|
97
|
+
op_name=op_name,
|
|
98
|
+
auto_gen=auto_gen) + " "
|
|
99
|
+
gen_utils.save_file(os.path.dirname(file_path), os.path.basename(file_path), aclnn_kernel_cc_str)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def generate(kernelmod_name, class_name, op_proto, h_and_cc, need_update_shape):
|
|
103
|
+
"""generate cc and h files"""
|
|
104
|
+
aclnn_name = AclnnUtils.get_aclnn_interface(class_name)
|
|
105
|
+
gen_h(kernelmod_name, aclnn_name, op_proto, h_and_cc, need_update_shape)
|
|
106
|
+
gen_cc(kernelmod_name, class_name, op_proto, h_and_cc, need_update_shape)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def gen_aclnn_kernel(op_proto: OpProto, need_update_shape=False, auto=False):
|
|
110
|
+
"""gen_aclnn_kernel function"""
|
|
111
|
+
op_name = op_proto.op_name
|
|
112
|
+
skip_aclnn_list = {"slice", "expand_dims", "squeeze", "split", "generator"}
|
|
113
|
+
if op_name in skip_aclnn_list:
|
|
114
|
+
logging.warning(
|
|
115
|
+
"Operator {%s} has no aclnn interface, no aclnn kernel will be generated.", op_name)
|
|
116
|
+
return
|
|
117
|
+
if check_op_registed(op_proto.op_name) and not auto:
|
|
118
|
+
logging.warning("Kernel {%s} is already registered.", op_name)
|
|
119
|
+
return
|
|
120
|
+
|
|
121
|
+
aclnn_path = f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn/'
|
|
122
|
+
# merge inner ops
|
|
123
|
+
dispatch = op_proto.op_dispatch
|
|
124
|
+
aclnn_name = ''.join(word.capitalize() for word in op_name.split('_'))
|
|
125
|
+
kernelmod_name = op_proto.op_dispatch.ascend
|
|
126
|
+
if not dispatch or not op_proto.op_dispatch.enable:
|
|
127
|
+
raise ValueError(
|
|
128
|
+
"Op {} is not enabled dispatch, please check.".format(op_name))
|
|
129
|
+
global auto_gen
|
|
130
|
+
if auto:
|
|
131
|
+
auto_gen = "_auto_gen"
|
|
132
|
+
kernelmod_name = aclnn_name + "Ascend"
|
|
133
|
+
aclnn_path = f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn_auto_gen/'
|
|
134
|
+
pathlib.Path(os.path.join(K.WORK_DIR, aclnn_path)
|
|
135
|
+
).mkdir(parents=True, exist_ok=True)
|
|
136
|
+
if dispatch.ascend is None:
|
|
137
|
+
raise ValueError("KernelMod {} is auto generated. If need achieve it, "
|
|
138
|
+
"please provide the KernelMod name in dispatch.".format(op_name))
|
|
139
|
+
op_class = op_proto.op_class
|
|
140
|
+
if op_class is not None and op_class.name is not None:
|
|
141
|
+
aclnn_name = op_class.name
|
|
142
|
+
kernelmod_h_and_cc_path = os.path.join(
|
|
143
|
+
K.WORK_DIR, aclnn_path + '{}_aclnn_kernel'.format(op_name))
|
|
144
|
+
generate(kernelmod_name, aclnn_name, op_proto,
|
|
145
|
+
kernelmod_h_and_cc_path, need_update_shape)
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def get_registed_ops(file_path=f'{MS_OPS_KERNEL_PATH}/ascend/opapi/'):
|
|
149
|
+
'''get registered ops by search files'''
|
|
150
|
+
# default search in 'ops/kernel/ascend/opapi/'
|
|
151
|
+
search_path = os.path.join(K.WORK_DIR, file_path)
|
|
152
|
+
ret = []
|
|
153
|
+
try:
|
|
154
|
+
for root_path, _, files in os.walk(search_path):
|
|
155
|
+
for file_name in files:
|
|
156
|
+
with open(os.path.join(root_path, file_name), "r") as f:
|
|
157
|
+
file_context = f.read()
|
|
158
|
+
search_re = re.search(
|
|
159
|
+
r"(?<=KERNEL_FACTORY_REG\()\w+(?=,)", file_context)
|
|
160
|
+
if search_re:
|
|
161
|
+
ret.append(search_re.group())
|
|
162
|
+
except OSError:
|
|
163
|
+
logging.warning("Something wrong in check op registered.")
|
|
164
|
+
return ret
|
|
165
|
+
return ret
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
registed_ops = get_registed_ops()
|
|
169
|
+
manual_registed_ops = get_registed_ops(
|
|
170
|
+
f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn/')
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def check_op_registed(op_name, manual=False):
|
|
174
|
+
'''if op already registered return true'''
|
|
175
|
+
class_name = ''.join(word.capitalize() for word in op_name.split('_'))
|
|
176
|
+
return (class_name in manual_registed_ops) if manual else (class_name in registed_ops)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def generate_aclnn_reg_code(yaml_data):
|
|
180
|
+
"""generate aclnn register code"""
|
|
181
|
+
ops_yaml_path = os.path.join(K.WORK_DIR, K.PY_OPS_GEN_PATH, "ops.yaml")
|
|
182
|
+
yaml_str = gen_utils.safe_load_yaml(ops_yaml_path)
|
|
183
|
+
|
|
184
|
+
reg_code = f"""
|
|
185
|
+
#include "{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn_kernel_mod.h"
|
|
186
|
+
|
|
187
|
+
namespace mindspore {{
|
|
188
|
+
namespace kernel {{
|
|
189
|
+
"""
|
|
190
|
+
for operator_name, operator_data in yaml_data.items():
|
|
191
|
+
dispatch = operator_data.get("dispatch")
|
|
192
|
+
if not dispatch or not dispatch.get("enable"):
|
|
193
|
+
continue
|
|
194
|
+
Ascend = dispatch.get("Ascend")
|
|
195
|
+
if Ascend is not None: # KernelMod is provided by yaml, don't auto generate it.
|
|
196
|
+
continue
|
|
197
|
+
if check_op_registed(operator_name):
|
|
198
|
+
logging.warning(
|
|
199
|
+
"Kernel {%s} is already registered.", operator_name)
|
|
200
|
+
continue
|
|
201
|
+
_, _, none_tensor_exist = get_dtypes(operator_data)
|
|
202
|
+
if none_tensor_exist:
|
|
203
|
+
gen_aclnn_kernel(operator_name, yaml_str, auto=True)
|
|
204
|
+
continue
|
|
205
|
+
class_name = ''.join(word.capitalize()
|
|
206
|
+
for word in operator_name.split('_'))
|
|
207
|
+
op_class = operator_data.get("class")
|
|
208
|
+
if op_class and op_class.get("name") is not None:
|
|
209
|
+
class_name = op_class.get("name")
|
|
210
|
+
inputs_outputs_num = len(operator_data.get(
|
|
211
|
+
"args")) + len(operator_data.get("returns"))
|
|
212
|
+
aclnn_name = AclnnUtils.get_aclnn_interface(class_name)
|
|
213
|
+
reg_code += f"""
|
|
214
|
+
MS_ACLNN_COMMON_KERNEL_FACTORY_REG({class_name}, {aclnn_name}, {inputs_outputs_num});"""
|
|
215
|
+
reg_code += f"""
|
|
216
|
+
}} // namespace kernel
|
|
217
|
+
}} // namespace mindspore
|
|
218
|
+
"""
|
|
219
|
+
return reg_code
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
def generate_aclnn_reg_file(work_path, yaml_str):
|
|
223
|
+
"""
|
|
224
|
+
Generate nnacl kernelmod register
|
|
225
|
+
"""
|
|
226
|
+
tmp_register_file = work_path + \
|
|
227
|
+
f'{MS_OPS_KERNEL_PATH}/ascend/opapi/tmp_aclnn_kernel_register.cc'
|
|
228
|
+
register_file = work_path + \
|
|
229
|
+
f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn_kernel_register_auto.cc'
|
|
230
|
+
reg_code = generate_aclnn_reg_code(yaml_str)
|
|
231
|
+
gen_utils.save_file(
|
|
232
|
+
os.path.dirname(tmp_register_file), os.path.basename(tmp_register_file), gen_utils.cc_license_str + reg_code)
|
|
233
|
+
gen_utils.check_change_and_replace_file(register_file, tmp_register_file)
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
def main(op_name, need_update_shape):
|
|
237
|
+
'''main func'''
|
|
238
|
+
gen_aclnn_kernel(op_name, need_update_shape)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
parser = argparse.ArgumentParser(description="Generate aclnn KernelMod.")
|
|
242
|
+
parser.add_argument('-n', '--name', type=str, default=None,
|
|
243
|
+
help='Kernel name in yaml.')
|
|
244
|
+
parser.add_argument('-d', '--need_update_shape', type=bool, default=False,
|
|
245
|
+
help="Some kernel like:unique need update shape and size after launch. Default: False")
|
|
246
|
+
options, _ = parser.parse_known_args()
|
|
247
|
+
|
|
248
|
+
if __name__ == "__main__":
|
|
249
|
+
try:
|
|
250
|
+
name = options.name
|
|
251
|
+
if name is None:
|
|
252
|
+
raise ValueError(
|
|
253
|
+
"Please provide op name to generate aclnn kernelmod.")
|
|
254
|
+
is_need_update_shape = options.need_update_shape
|
|
255
|
+
main(name, is_need_update_shape)
|
|
256
|
+
except Exception as e: # pylint: disable=W0703
|
|
257
|
+
logging.exception("Generate aclnn kernelmod failed, err info: %s", e)
|
|
File without changes
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
"""
|
|
16
|
+
Generates mindspore/common/_tensor_docs.py that attaches docs to tensor func APIs when import mindspore
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
import os
|
|
20
|
+
import common.gen_constants as K
|
|
21
|
+
from common.gen_utils import save_file, safe_load_yaml_from_dir
|
|
22
|
+
import common.template as template
|
|
23
|
+
from common.template import Template
|
|
24
|
+
from common.base_generator import BaseGenerator
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class AddTensorDocsGenerator(BaseGenerator):
|
|
28
|
+
"""
|
|
29
|
+
This class is responsible for generating a helper file that enable users to view the docstrings of Tensor func APIs.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
def __init__(self):
|
|
33
|
+
self.ADD_TENSOR_DOCS_TEMPLATE = template.ADD_TENSOR_DOCS_TEMPLATE
|
|
34
|
+
self.attach_single_docstr_template = Template('attach_docstr("${api_name}", r"""${docstr}""")')
|
|
35
|
+
self.tensor_method_doc_yaml_dir_path = os.path.join(K.WORK_DIR, K.MS_TENSOR_METHOD_DOC_YAML_PATH)
|
|
36
|
+
|
|
37
|
+
def generate(self):
|
|
38
|
+
"""
|
|
39
|
+
Generates the content for the helper file and saves it to the specified path.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
work_path (str): The directory where the generated file will be saved.
|
|
43
|
+
tensor_docs_data (dict): A dict mapping from Tensor func API names to their docstrings.
|
|
44
|
+
|
|
45
|
+
Returns:
|
|
46
|
+
None
|
|
47
|
+
"""
|
|
48
|
+
add_doc_statements = []
|
|
49
|
+
tensor_docs_data = safe_load_yaml_from_dir(self.tensor_method_doc_yaml_dir_path)
|
|
50
|
+
for api_name, tensor_doc in tensor_docs_data.items():
|
|
51
|
+
single_add_doc_statement = self.attach_single_docstr_template.replace(api_name=api_name,
|
|
52
|
+
docstr=tensor_doc['description'])
|
|
53
|
+
single_add_doc_statement += template.NEW_LINE
|
|
54
|
+
add_doc_statements.append(single_add_doc_statement)
|
|
55
|
+
_tensor_docs_py_str = self.ADD_TENSOR_DOCS_TEMPLATE.replace(add_doc_statements=add_doc_statements)
|
|
56
|
+
save_file(os.path.join(K.WORK_DIR, K.ADD_TENSOR_DOCS_PY_PATH), "_tensor_docs.py", _tensor_docs_py_str)
|
|
@@ -0,0 +1,105 @@
|
|
|
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
|
+
"""
|
|
16
|
+
Generates C++ helper files for primitive instance creation based on operator metadata.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
import os
|
|
20
|
+
|
|
21
|
+
import common.gen_constants as K
|
|
22
|
+
import common.gen_utils as gen_utils
|
|
23
|
+
import common.template as template
|
|
24
|
+
from common.base_generator import BaseGenerator
|
|
25
|
+
from pyboost import pyboost_utils
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class CppCreatePrimInstanceHelperGenerator(BaseGenerator):
|
|
29
|
+
"""
|
|
30
|
+
This class is responsible for generating a helper file that contains
|
|
31
|
+
operation labels and default values for creating primitive instances in C++.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
def __init__(self):
|
|
35
|
+
"""
|
|
36
|
+
Initializes the generator with templates for operation labels and default values.
|
|
37
|
+
"""
|
|
38
|
+
self.op_labels_template = template.op_labels_template
|
|
39
|
+
self.op_args_default_value_template = template.arg_default_value
|
|
40
|
+
self.op_label_template = template.Template(""" "$op_name": {$op_label_body},\n""")
|
|
41
|
+
self.op_arg_default_val_template = template.Template(""" "$op_name": {$op_arg_default_value},\n""")
|
|
42
|
+
|
|
43
|
+
def generate(self, work_path, op_protos):
|
|
44
|
+
"""
|
|
45
|
+
Generates the content for the helper file and saves it to the specified path.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
work_path (str): The directory where the generated file will be saved.
|
|
49
|
+
op_protos (list): A list of operation prototypes to generate content for.
|
|
50
|
+
|
|
51
|
+
Returns:
|
|
52
|
+
None
|
|
53
|
+
"""
|
|
54
|
+
py_arg_default = self.generate_op_arg_default_value(op_protos)
|
|
55
|
+
py_labels = self.generate_op_labels(op_protos)
|
|
56
|
+
res_str = (template.PY_LICENSE_STR + py_arg_default + py_labels)
|
|
57
|
+
|
|
58
|
+
save_path = os.path.join(work_path, K.PY_AUTO_GEN_PATH)
|
|
59
|
+
file_name = "cpp_create_prim_instance_helper.py"
|
|
60
|
+
gen_utils.save_file(save_path, file_name, res_str)
|
|
61
|
+
|
|
62
|
+
def generate_op_labels(self, op_protos):
|
|
63
|
+
"""
|
|
64
|
+
Generates a string containing labels for each operation.
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
op_protos (list): A list of operation prototypes.
|
|
68
|
+
|
|
69
|
+
Returns:
|
|
70
|
+
str: A string representing the labels in the specified format.
|
|
71
|
+
"""
|
|
72
|
+
gen_label_list = []
|
|
73
|
+
for op_proto in op_protos:
|
|
74
|
+
labels = op_proto.op_labels
|
|
75
|
+
if labels is not None:
|
|
76
|
+
op_name = pyboost_utils.get_op_name(op_proto.op_name, op_proto.op_class.name)
|
|
77
|
+
op_label_list = [f"\"{name}\": {value}" for name, value in labels.items()]
|
|
78
|
+
gen_label_list.append(self.op_label_template.replace(op_name=op_name, op_label_body=op_label_list))
|
|
79
|
+
|
|
80
|
+
return self.op_labels_template.replace(gen_label_py=gen_label_list)
|
|
81
|
+
|
|
82
|
+
def generate_op_arg_default_value(self, op_protos):
|
|
83
|
+
"""
|
|
84
|
+
Generates a string containing default values for each operation's arguments.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
op_protos (list): A list of operation prototypes.
|
|
88
|
+
|
|
89
|
+
Returns:
|
|
90
|
+
str: A string representing the default argument values in the specified format.
|
|
91
|
+
"""
|
|
92
|
+
gen_default_list = []
|
|
93
|
+
for op_proto in op_protos:
|
|
94
|
+
arg_default_dict = {}
|
|
95
|
+
for op_arg in op_proto.op_args:
|
|
96
|
+
arg_default = op_arg.default
|
|
97
|
+
if arg_default is not None:
|
|
98
|
+
arg_default_dict[op_arg.arg_name] = arg_default
|
|
99
|
+
if arg_default_dict:
|
|
100
|
+
op_name = pyboost_utils.get_op_name(op_proto.op_name, op_proto.op_class.name)
|
|
101
|
+
arg_default_list = [f"\"{key}\": {value}" for key, value in arg_default_dict.items()]
|
|
102
|
+
gen_default_list.append(self.op_arg_default_val_template.replace(op_name=op_name,
|
|
103
|
+
op_arg_default_value=arg_default_list))
|
|
104
|
+
|
|
105
|
+
return self.op_args_default_value_template.replace(gen_default_py=gen_default_list)
|